bulletmark / libinput-gestures

Actions gestures on your touchpad using libinput

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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.