Touchpad sometimes detects wrong number of fingers for both movement and clicks
Summary
Sometimes my touchpad gets into a buggy state where it detects the wrong number of fingers, i.e 2 instead of 1 finger and it double clicks instead of single click, scroll instead of normal movement. Sometimes it even detects 3 instead of 1 finger and makes a triple click / triple swipe instead of the single finger action.
Once it enters the wrongful state I can do single clicks and it will do a double click (opens up the context menu) or touch the touchpad and move my finger up and down, instead of moving the cursor it will scroll up and down. Same goes for the 3 finger mode, it will then do a triple swipe (and open up the workspace overview in Gnome) instead of regular cursor movement.
I can also consistently leave the wrongful state either with one or multiple triple clicks / triple swipes. Most of the time a single triple click / swipe is enough. After that the touchpad will work as expected until it gets back into the buggy state again.
It works on Windows 11, so I assume it is (probably?) not a hardware issue.
Steps to reproduce
Happens randomly, I have not found a definitive way to reproduce it. But if I do some random triple and double clicks there is a chance it will change into the "wrong fingers state". The longer my laptop is powered on the more likely it happens. I had sessions that lasted a long time without the issue, but once it got into the wrong state, it will periodically do so.
Required information
- libinput version: 1.25.0
- hardware information: Xiaomi Book Pro 16 2022
- touchpad: GXT7863:00 27C6:01E0 Touchpad
- OS: Ubuntu 24.04 (but I can also reproduce it on Ubuntu 23.10 and Manjaro/Fedora)
Some libinput debug-events
log files:
-
start-debug-events-in-wrongful-state.txt started
libinput debug-events
in wrongful state, there is NO pointer activity being logged. Only once I leave the wrongful state, the pointer activity is again being logged. The keyboard events are done inside the wrongful state, then I do some single clicks and movement which is not recognized by the tool. Afterwards I do a triple click and we go back to the normal state and the logging happens again. -
start-debug-events-in-normal-state-return-with-triple-swipe.txt started
libinput debug-events
in normal state and did some stuff until it got into the wrongful state. Returning to the normal state with a triple swipe (assuming the GESTURE_SWIPE_BEGIN being it). Multiple clicks before the tripe swipe are actually single clicks. -
start-debug-events-in-normal-state-return-with-jump.txt again started
libinput debug-events
in normal state and waited for the change to wrongful state. Returning to normal state with a triple swipe, this time jump happens. All the clicks before the jump are actually single clicks.
Some libinput record
log files:
-
single-clicks-detected-as-double-clicks.txt Started the record in wrongful state and did some single clicks which are detected as double clicks.
-
single-clicks-normal.txt For comparison some single clicks in normal mode which are detected properly.
-
double-clicks-detected-as-triple-clicks.txt Started the record in wrongful state and did some double clicks which are detected as triple clicks.
-
double-clicks-normal.txt For comparison some double clicks in normal mode which are detected properly.
My touchpad edges: touchpad-edges.txt
Things I tried that did not help
- I tried several kernel parameters (i.e. i8042.noaux, i8042.reset, etc.) in different combinations
- Switching to X.org instead of wayland
-
modprobe -r hid_multitouch
followed bymodprobe -r hid_multitouch
resets the wrongful mode but it will come back again