I recently bought a new Dell XPS 15 and installed Debian on it. It previously ran Windows 10, and the palm detection/rejection worked perfectly, just as I would have expected. But now, running Debian and using
libinput, palm detection is (as far as I can tell) non-existant/completely broken.
xinput | grep -i touchpad:
⎜ ↳ SynPS/2 Synaptics TouchPad id=13 [slave pointer (2)]
xinput list-props 13:
Device 'SynPS/2 Synaptics TouchPad': Device Enabled (116): 1 Coordinate Transformation Matrix (118): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000 libinput Tapping Enabled (269): 1 libinput Tapping Enabled Default (270): 0 libinput Tapping Drag Enabled (271): 1 libinput Tapping Drag Enabled Default (272): 1 libinput Tapping Drag Lock Enabled (273): 0 libinput Tapping Drag Lock Enabled Default (274): 0 libinput Tapping Button Mapping Enabled (275): 1, 0 libinput Tapping Button Mapping Default (276): 1, 0 libinput Accel Speed (251): 0.000000 libinput Accel Speed Default (252): 0.000000 libinput Natural Scrolling Enabled (256): 0 libinput Natural Scrolling Enabled Default (257): 0 libinput Send Events Modes Available (236): 1, 1 libinput Send Events Mode Enabled (237): 0, 0 libinput Send Events Mode Enabled Default (238): 0, 0 libinput Left Handed Enabled (258): 0 libinput Left Handed Enabled Default (259): 0 libinput Scroll Methods Available (260): 1, 1, 0 libinput Scroll Method Enabled (261): 1, 0, 0 libinput Scroll Method Enabled Default (262): 1, 0, 0 libinput Click Methods Available (277): 1, 1 libinput Click Method Enabled (278): 1, 0 libinput Click Method Enabled Default (279): 1, 0 libinput Middle Emulation Enabled (265): 0 libinput Middle Emulation Enabled Default (266): 0 libinput Disable While Typing Enabled (280): 1 libinput Disable While Typing Enabled Default (281): 1 Device Node (239): "/dev/input/event1" Device Product ID (240): 2, 7 libinput Drag Lock Buttons (267): <no items> libinput Horizontal Scroll Enabled (268): 1
Section "InputClass" Identifier "libinput touchpad catchall" MatchIsTouchpad "on" MatchDevicePath "/dev/input/event*" Driver "libinput" Option "Tapping" "on" Option "TappingDrag" "on" EndSection
A sample of input events generated with
sudo evemu-record /dev/input/event1 >> eventlog-finger.log, using my finger on the touchpad as I do during normal usage.
A sample of input events generated with
sudo evemu-record /dev/input/event1 >> eventlog-palm.log, using my palm on the touchpad as happens while I try to type.
If you look at the event logs, you'll see that
ABS_TOOL_WIDTH only appears once at the beginning of each log. From what I've found, here and here, this is a (somewhat) known issue where
ABS_TOOL_WIDTH is never reported as anything other than 0. This apparently breaks palm detection using synaptics drivers, and I'm assuming in libinput as well.
Trying to do anything on my laptop without plugging in an external mouse and disabling the touchpad is almost impossible, the mouse jumps and more troubling, sometimes my palm can click the touchpad, making me type somewhere unpredictable or nowhere at all.
If anyone knows anything at all as to how to even start fixing this, it would be greatly appreciated.
I should mention that I have already tried using Synaptics touchpad drivers, including doing the following:
apt install -y xserver-xorg-input-synaptics synclient PalmDetect=1
and then by messing with the following settings to no avail:
synclient PalmMinWidth=4 synclient PalmMinZ=80
I've tried everything between 0 and 15 for
PalmMinWidth and 50 through 150 for
PalmMinZ. Nothing works. But if it wasn't already clear - I already know that this is because
ABS_TOOL_WIDTH is not reported. That much I'm sure of, and therefore that is not the basis of my question - my question pertains to how I would go about fixing the reporting of
ABS_TOOL_WIDTH or another workaround that would yield a similar result.