USBest Technology SiS HID Touch Controller not triggering gestures
onkobu opened this issue · comments
Before creating a new issue, please follow each step in the TROUBLESHOOTING section
of the main README.
libinput-gestures: session xfce+x11 on Linux-5.15.59-gentoo-sec2-x86_64-AMD_A8-4500M_APU_with_Radeon-tm-_HD_Graphics-with-glibc2.36, python 3.10.9, libinput 1.21.0
Hash: 1cfe6ad528f2202a483fea24b3cd7f47
Gestures configured in ~/.config/libinput-gestures.conf:
swipe up _internal ws_up
swipe down _internal ws_down
swipe left 3 xdotool key ctrl+alt+Right
swipe right 3 xdotool key ctrl+alt+Left
pinch in xdotool key super+s
pinch out xdotool key super+s
device USBest Technology SiS HID Touch Controller
libinput-gestures: device /dev/input/by-path/pci-0000:00:10.0-usb-0:1.3:1.0-event(event7): USBest Technology SiS HID Touch Controller
libinput-gestures is installed.
libinput-gestures is set up as a desktop application.
libinput-gestures is currently running as a desktop application.
libinput-gestures is set to autostart as a desktop application.
libinput-gestures is using custom configuration file.
(Updated currently running, was doing a lot of -d/ -r/ start/ stop/ restart)
Describe the issue
The commands wmctrl
and xdotool
work as expected, for example switching workspaces with both works fine. Using libinput-gestures with -r also shows events coming in, e.g.:
event7 TOUCH_FRAME +0.000s
event7 TOUCH_DOWN +0.000s 0 (0) 16.06/66.11 (82.25/193.43mm)
event7 TOUCH_DOWN +0.000s 1 (1) 21.53/65.75 (110.25/192.36mm)
event7 TOUCH_DOWN +0.000s 2 (2) 12.30/70.00 (63.00/204.79mm)
event7 TOUCH_FRAME +0.000s
event7 TOUCH_FRAME +46.912s
event7 TOUCH_MOTION +46.918s 0 (0) 36.45/33.15 (186.62/97.00mm)
event7 TOUCH_MOTION +46.918s 1 (1) 43.58/37.01 (223.12/108.29mm)
event7 TOUCH_MOTION +46.918s 2 (2) 30.91/33.81 (158.25/98.93mm)
event7 TOUCH_MOTION +46.918s 3 (3) 26.64/37.82 (136.38/110.64mm)
event7 TOUCH_FRAME +46.918s
…
event7 TOUCH_FRAME +34.648s
event7 TOUCH_UP +34.665s 0 (0)
event7 TOUCH_UP +34.665s 2 (2)
event7 TOUCH_FRAME +34.665s
event7 TOUCH_UP +34.676s 1 (1)
event7 TOUCH_FRAME +34.676s
With only 3 fingers the line with 3 is missing. Depending on the precision TOUCH_FRAMEs come in any shape, for example finger 0+2, 1+2+3 and so on.
A synaptics touchpad is recognized correctly in the same session. The touch monitor is not. Window manager is XFCE4. I also experimented with finger count, e.g.
# also in various combinations to trigger different events also through _internal and wmctrl directly
gesture swipe left 3 xdotool key ctrl+alt+Right
gesture swipe left 4 xdotool key ctrl+alt+Right
Not a single gesture is recognized thus libinput-gesture -d
stays up and running but never emits a gesture with this controller.
Forgot to mention that it is an X11 with all configuration in /etc/X11/xorg.conf.d disabled.
$ xinput list
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ USBest Technology SiS HID Touch Controller id=11 [slave pointer (2)]
⎜ ↳ Logitech USB Optical Mouse id=12 [slave pointer (2)]
⎜ ↳ ETPS/2 Elantech Touchpad id=17 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Video Bus id=7 [slave keyboard (3)]
↳ Power Button id=8 [slave keyboard (3)]
↳ UVC Camera (046d:0825) id=9 [slave keyboard (3)]
↳ HID 046a:0011 id=10 [slave keyboard (3)]
↳ Lenovo EasyCamera: Lenovo EasyC id=14 [slave keyboard (3)]
↳ Ideapad extra buttons id=15 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=16 [slave keyboard (3)]
↳ Yubico Yubikey 4 OTP+U2F+CCID id=13 [slave keyboard (3)]
$> lsusb
…
Bus 001 Device 006: ID 0457:1057 Silicon Integrated Systems Corp. SiS HID Touch Controller
…
$> xinput --list --long
…
↳ USBest Technology SiS HID Touch Controller id=11 [slave pointer (2)]
Reporting 6 classes:
Class originated from: 11. Type: XIButtonClass
Buttons supported: 7
Button labels: "Button Left" "Button Middle" "Button Right" "Button Wheel Up" "Button Wheel Down" "Button Horiz Wheel Left" "Button Horiz Wheel Right"
Button state:
Class originated from: 11. Type: XIValuatorClass
Detail for Valuator 0:
Label: Abs MT Position X
Range: 0.000000 - 65535.000000
Resolution: 0 units/m
Mode: absolute
Current value: 25166.456427
Class originated from: 11. Type: XIValuatorClass
Detail for Valuator 1:
Label: Abs MT Position Y
Range: 0.000000 - 65535.000000
Resolution: 0 units/m
Mode: absolute
Current value: 29215.554199
Class originated from: 11. Type: XIValuatorClass
Detail for Valuator 2:
Label: Rel Horiz Scroll
Range: -1.000000 - -1.000000
Resolution: 0 units/m
Mode: relative
Class originated from: 11. Type: XIValuatorClass
Detail for Valuator 3:
Label: Rel Vert Scroll
Range: -1.000000 - -1.000000
Resolution: 0 units/m
Mode: relative
Class originated from: 11. Type: XITouchClass
Touch mode: direct
Max number of touches: 10
…
Did you see step 6 in the TROUBLESHOOTING section? If you run libinput-gestures -r
then, as it says:
"If you do not see any GESTURE_*
events then unfortunately your touchpad and/or libinput does not report multi-finger gestures so libinput-gestures
can not work. The discrimination of gestures is done completely within libinput, before they get passed to libinput-gestures
."
Your sample output shows no GESTURE
events so I presume you do not get them.
Run libinput debug-events
if you don't trust libinput-gestures -r
output and confirm to yourself that libinput is not reporting gestures. Sorry, but there is nothing this utility can do about that.
I read the docs/ troubleshooting as if TOUCH-events will be turned into GESTURE-events based on coordinates/ algorithm/ magic. So the changes must go into libinput itself so that either TOUCH_* is to be replaced with GESTURE-something or in addition to TOUCH_* also GESTURE-events appear?
I think the device you are referring to here controls a touchscreen, not a touchpad. Note that libinput does not process gestures for touchscreens, only touchpads so this utility is not relevant to you. Please confirm.
It is a touchscreen, wasn't aware of the small but important differences. Yet I don't understand why a touchpad controlling the same 2D plane has such context information or why it gets along without it. For me as end user a touchpad or drawing surface (like the Bamboo-things) or a touch screen resemble the same 2D interaction canvas.
So it is up to the event receiver, e.g. Gtk, Qt or such to interprete events accordingly. That is why it barely works in browsers but not for X in general. And libinput would be too early in the event processing chain!?
I'm basically keen on events like swipe (on the desktop/ X root window) to change virtual workspaces offered by the window manager. Pinching with each finger in a different window is an edge case I don't care about. I'd be absolutely fine with events being ignored as soon as they're in the scope of an application window. But that'd be up to the window manager and its root window interaction capabilities!?
Sorry, I've never bothered to think about why there is any technical difference other than what it says in that link I provided to you. As you can see though it is very clear, libinput does not process gesture for a touchscreen so this issue/discussion is not relevant here and I am closing this issue.