This commit allows HiresScroll (when target is true) to map the up and
down events to gestures that support it (i.e.AxisGesture/
IntervalGesture). This check is done by checking if wheelCompatibility()
is true.
This also allows hires scroll events to send low-res scroll events as
well.
TODO: Fix bug w/ Chromium (and some other programs?) where mapping
scroll wheel to REL_WHEEL_HI_RES will cause the program to skip events
occassionally. I have literally been stuck on this bug for a week and I
still don't know what causes it. evtest shows proper scroll events,
Firefox works fine, and libinput test-gui reports proper scrolling.
For some reason, hidpp20 device names were badly set (e.g.
'Wireless Mouse MWireless' instead of 'Wireless Mouse MX Master').
Adding a 100ms delay to addDevice seems to have fixed it.
RawDevice will now interruptRead() on pushing an event to the I/O
queue. This will prevent the listener from waiting for an event to
be received before handling an I/O request.
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)
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.
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?)
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.