Wacom CTH-661 touchpad: 2-finger scroll jumps back and forth, often gestures without reason
Summary
As previously spammed about on #wayland :-) Having seen some other drivers in action, I cannot understate how well this pen tablet's touch feature is handled by libinput, and so, even though it's already perfectly good, would love it to be perfect...
I think that there are two unique quirks at play here:
- The tablet's firmware(?) likes to make 2-finger input snap to a right angle whenever it's close enough to that. Given a bit of jitter, it may jump between "just below the threshold" and "just above", and in this, snap and unsnap back and forth. I believe this to be the quirk (mostly?) behind the jumps during scrolling.
- The reported two-finger position swaps up along one axis sometimes? Say, fingers at (20, 40) and (30, 60) occasionally getting captured as (30, 40) and (20, 60) - or (20, 60) and (30, 40), I couldn't tell! I wonder if the prior quirk was meant to mitigate this... Either way, this would quite clearly be behind at least some of the faux gestures - rotate, rotate.
I attempted to apply the workaround at https://gitlab.freedesktop.org/libinput/libinput/-/blob/main/src/evdev-mt-touchpad.c?ref_type=heads#L2921 to the tablet (the given recordings are without it), and it helped in understanding the issue, but pretty sure did not solve it, which in hindsight makes sense: that workaround makes quirk no. 2 also affect scrolls, as only one finger is trusted and otherwise the swaps would've cancelled each other, while quirk no. 1 still happens, as the jitters do not only apply to the secondary finger, but either, depending on the angle the two of them create with the axes...
Steps to reproduce
Um...
- Have Wacom CTH-661. (No, really, it's like the best design to permanently keep between you and your keyboard for a 2in1 drawing board and dev's-far-away-mouse replacement; even should this never get a workaround, I'm so happy with that device, libinput's part of the reason
💛 ) - Use the following
/etc/X11/xorg.conf.d/40-libinput.conf
:
Section "InputClass"
Identifier "touchpad"
Driver "libinput"
MatchIsTouchpad "on"
Option "Tapping" "on"
Option "ScrollMethod" "twofinger"
Option "HorizontalScrolling" "on"
EndSection
- Scroll around with two fingers for a while...
Required/relevant information
- libinput version: 1.23.6 (commit f617b414: Drop the Signed-off-by requirement)
- hardware information: drawing tablet with touchpad, which
xinput list
calls Wacom Bamboo 2FG 6x8 Finger -
libinput record /dev/input/event10
output (quirk 1): record1.yaml -
libinput record /dev/input/event10
output (quirk 2): record2.yaml -
xinput list-props "Wacom Bamboo 2FG 6x8 Finger"
output: xinput.txt -
udevadm info /sys/class/input/event10
output: udevadm.txt -
touchpad-edge-detector
claims kernel thinks the touchpad 185x125mm, I think it's closer to 195x140mm, but shouldn't matter with such a big touchpad? the recommended fuzz of 121/114 is below the default of 128, and the kernel ranges are accurate
Took some hours to put the data together and make sense of it, hoping it can be saved, please, no immediate bottommost priority if something's a-missing.. :-) Thank you so much!