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.
Output of xinput | grep -i touchpad
:
⎜ ↳ SynPS/2 Synaptics TouchPad id=13 [slave pointer (2)]
Output of 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
My /etc/X11/xorg.conf.d/40-libinput.conf
file:
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.
Edit 1:
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.