Touchpad scrolls with one finger
Summary
This is with a Dell Latitude 5500 laptop. The touchpad can end up in a state where moving one finger doesn't move the cursor. Instead scroll events seem to be produced (sometimes) by libinput. Curiously, libinput debug-events may or may not show any output when scrolling occurs.
I think it's because the libinput loses track of the number of touches and still thinks there is a finger or two down. This hardware produces MSC_TIMESTAMP during a touch and they stop when the touchpad is empty. Maybe touch state should be cleared when MSC_TIMESTAMP stop coming? Or maybe reset on new events when a timeout has been exceeded?
Steps to reproduce
It's is inconsistent, but this seems to do fairly often:
- Open a terminal & generate some lines of scrollback
- Place cursor in terminal
- Place 4 fingers spread out on touchpad
- Pinch fingers together and lift them all off
- Move 1 finger on the touchpad and see the cursor remain still
- Terminal might scroll under cursor
Required information
- libinput version: 1.16.1
- libevdev version: 1.9.1
- hardware information: Dell Latitude 5500 laptop
# udevadm info /sys/class/input/event13
P: /devices/pci0000:00/0000:00:15.1/i2c_designware.1/i2c-9/i2c-DELL08B9:00/0018:0488:121F.0001/input/input18/event13
N: input/event13
S: input/by-path/pci-0000:00:15.1-platform-i2c_designware.1-event-mouse
E: DEVLINKS=/dev/input/by-path/pci-0000:00:15.1-platform-i2c_designware.1-event-mouse
E: DEVNAME=/dev/input/event13
E: DEVPATH=/devices/pci0000:00/0000:00:15.1/i2c_designware.1/i2c-9/i2c-DELL08B9:00/0018:0488:121F.0001/input/input18/event13
E: ID_INPUT=1
E: ID_INPUT_HEIGHT_MM=52
E: ID_INPUT_TOUCHPAD=1
E: ID_INPUT_WIDTH_MM=99
E: ID_PATH=pci-0000:00:15.1-platform-i2c_designware.1
E: ID_PATH_TAG=pci-0000_00_15_1-platform-i2c_designware_1
E: ID_SERIAL=noserial
E: LIBINPUT_DEVICE_GROUP=18/488/121f:i2c-DELL08B9:00
E: MAJOR=13
E: MINOR=77
E: SUBSYSTEM=input
E: USEC_INITIALIZED=13200707
# cat /sys/class/dmi/id/modalias
dmi:bvnDellInc.:bvr1.3.11:bd06/11/2019:svnDellInc.:pnLatitude5500:pvr:rvnDellInc.:rn0M14W7:rvrA00:cvnDellInc.:ct10:cvr:
-
libinput record
output: recording.yml.2020-10-10-18_04_34
In recording.yml, All fingers were removed before the "# Closing after 2s inactivity" at the end.
-
libinput debug-events --verbose
output: debug-events.log
debug-events.log has 2 failed attempts to trigger (you still get POINTER_MOTION) and then the triggered one with POINTER_AXIS from 1 finger.