Commit Graph

134 Commits

Author SHA1 Message Date
pixl
dde2993223 Fix crashes when logid starts as root
If logid scans every device, it will either SIGSEGV or not work at all.
This commit should fix bug #100.
2020-07-13 01:14:15 -04:00
pixl
8f073d66c3 Remove unused dependencies 2020-07-12 16:21:26 -04:00
pixl
4ce76f5927 Listen for events on receiver device on timeout
Previously, if a receiver device didn't respond during the initial scan,
logid would not recognize it until it sent a wakeup/connect event.

This makes it so if the device times out, logid will listen for the next
event from the device and try detecting it. (e.g. shaking the mouse will
make it become detected)
2020-07-12 16:16:50 -04:00
pixl
1a056a1ecf Add mutex for events on Receiver 2020-07-12 16:16:50 -04:00
pixl
f7638b0905 Properly output TimeoutError
Fixed issue where receiver devices aren't detected (hopefully).
2020-07-12 16:16:50 -04:00
pixl
9ad8ce0fea Remove README.md warning 2020-07-12 16:16:50 -04:00
pixl
214bbbecbc Remove unused files 2020-07-12 16:16:47 -04:00
pixl
b00b4645e4 Add ChangeDPI action 2020-07-12 16:16:25 -04:00
pixl
949a1ee283 Add CycleDPI action 2020-07-12 16:16:24 -04:00
pixl
21b7455919 Add NullAction support 2020-07-12 16:16:24 -04:00
pixl
4117d71c9d Add NoPress gesture mode 2020-07-12 16:16:24 -04:00
pixl
10bb10e5c5 Add Axis gesture 2020-07-12 16:16:24 -04:00
pixl
ecfd03fd21 Add OnInterval/OnFewPixels gesture 2020-07-12 16:16:24 -04:00
pixl
de8e453bd3 Fix deadlock issue
RawDevice would deadlock in some situations because I/O occured while
the listener was turning on. This also seems to have fixed logid
sometimes not detecting devices on receivers.
2020-07-12 16:16:24 -04:00
pixl
0fbeb1e3c9 Add Gesture support
Only supports OnRelease right now. Also, some bugs were spotted while
writing this:

 - Sometimes deadlocks on startup (cause unknown)
 - Sometimes valid CIDs will be unknown (bug may have been fixed?)
2020-07-12 16:16:24 -04:00
pixl
41049deb35 Fix compiler warnings 2020-07-12 16:16:24 -04:00
pixl
d478ef3309 Add error check for bad action type 2020-07-12 16:16:24 -04:00
pixl
1f3fa53721 Add workqueue system 2020-07-12 16:16:24 -04:00
pixl
02d361b541 Add ToggleHiresScroll action 2020-07-12 16:16:24 -04:00
pixl
77f4240ec7 Add ToggleSmartShift action 2020-07-12 16:16:24 -04:00
pixl
bc8f1a983a Add configurable I/O timeout 2020-07-12 16:16:24 -04:00
pixl
055d136b09 Add HiresScroll device feature 2020-07-12 16:16:24 -04:00
pixl
d6f5c35983 Add HiresScroll hidpp20 feature 2020-07-12 16:16:24 -04:00
pixl
71b0ddd279 Add reset mechanism to logid::Device 2020-07-12 16:16:24 -04:00
pixl
5bf5dc75b5 Implement RemapButton feature
Many changes were made here, too many to list here.
2020-07-12 16:16:22 -04:00
pixl
0b87d3c664 Fixed bug: odd devices would fail Root GetFeature
Some devices throw an hidpp20::Error InvalidFeatureIndex when Root
GetFeature is called with some features (e.g. 0x1b04) as the parameter.

Since Root is a required feature in the HID++ 2.0 protocol, this error
can safely be ignored and treated as an UnsupportedFeature.

Fixes bug in #20 where the Logitech PRO headset would not work.
2020-07-12 16:15:48 -04:00
pixl
cd14d8dd27 Add thanks to README.md 2020-07-12 16:15:48 -04:00
pixl
3129cda581 Add hidpp20 ReprogControls support 2020-07-12 16:15:48 -04:00
pixl
c382ba1c0b Add getFeature function to Device 2020-07-12 16:15:48 -04:00
pixl
b445b979d3 Remove some useless debug output 2020-07-12 16:15:48 -04:00
pixl
4e33ad7593 Add SmartShift Device feature 2020-07-12 16:15:48 -04:00
pixl
5abf777e00 Add SmartShift hidpp20 feature 2020-07-12 16:15:48 -04:00
pixl
07b8fc1af4 Add DPI feature 2020-07-12 16:15:48 -04:00
pixl
f6b93b94af Split Configuration into several classes
Each feature should handle its own configuration.
2020-07-12 16:15:48 -04:00
pixl
181be50f88 Use unique pointer for global device manager
Changed from raw pointer to a unique_ptr, also renamed from finder to
device_manager
2020-07-12 16:15:48 -04:00
pixl
5f76ccc4ac Implement AdjustableDPI feature 2020-07-12 16:15:48 -04:00
pixl
1106133f3c Move logger into util/log.h 2020-07-12 16:15:48 -04:00
pixl
4ba9248038 Use safe thread class instead of std::thread 2020-07-12 16:15:48 -04:00
pixl
d84363019b Create a safe thread wrapper 2020-07-12 16:15:48 -04:00
pixl
ef0a0fab8d Support Reset (0x0020) feature 2020-07-12 16:15:48 -04:00
pixl
7ae46c938d Implement FeatureSet feature 2020-07-12 16:15:48 -04:00
pixl
60e47572d6 Add GPL copyright notice to DeviceFeature.h 2020-07-12 16:15:48 -04:00
pixl
152b9e6cfd Add interface for device features in logid::Device 2020-07-12 16:15:48 -04:00
pixl
1d001237ba Monitor wake up/sleep events with Receiver 2020-07-12 16:15:48 -04:00
pixl
22455af615 Add GPL copyright notice in all C++ source files 2020-07-12 16:15:32 -04:00
pixl
dd75df8c18 Use consistent code style
Only files that are currently used in logid are changed.
2020-07-12 16:14:25 -04:00
pixl
bd080e7ef6 Fix bug described in 698971a
Feels like a hacky workaround, may come back to this later.
2020-07-12 16:14:24 -04:00
pixl
261d82390b Assert report ID and length before sending 2020-07-12 16:14:24 -04:00
pixl
e40da5f0c0 Implement receiver HID++ connect/disconnect events
Many changes were made here but that was the biggest one.

There's currently a bug where std::system_error: Broken pipe is thrown
after launching the daemon with a receiver connector.

A workaround for this bug is to simply shake the mouse while starting
the daemon. I will investigate this soon.
2020-07-12 16:14:24 -04:00
pixl
b05e525bbc Add RawReport log level 2020-07-12 16:14:24 -04:00