Created attachment 125784 [details] left palm brushes touchpad Ubuntu Linux 16.04. There appears to be no palm detection as described in the exclusion zones document (https://wayland.freedesktop.org/libinput/doc/latest/palm_detection.html). I'm attaching evemu-record output when brushing touchpad from outer edge with palm. I've tested quite a few different kernels, the result does not change much. Many other touchpad features work fine. I can move the cursor smoothly, tap to click is fine, middle click emulation is good. Disable while typing works as expected, except that the instant I pause, the cursor flies somewhere else and I type in the wrong spot. I don't get dependable result from the three-finger tap. About 1 time in 10 I can get three-tap to trigger a middle event. However, a two-finger tap does work as a right click very dependably. I fairly often have the problem that the cursor flies to an outer edge at the instant I left click. I cannot tell if that is linked to palm detection, but I guess yes. This may be irrelevant to you, but I notice some trouble in the event recording playback. When I brush touchpad with palm, cursor moves inches on the screen, but when I do the playback, the cursor moves only 10% as much. I tried pretty hard to get the info you ask for. I hope this is it! Device: Dell Precision 5510 dmi:bvnDellInc.:bvr01.02.10:bd06/30/2016:svnDellInc.:pnPrecision5510:pvr:rvnDellInc.:rn0N8J4R:rvrA01:cvnDellInc.:ct9:cvr: touchpad dimensions width 104.8 height 79.4 Ubuntu Linux libinput 1.2.3 kernel $ uname -a Linux delllap-16 4.4.0-35-generic #54-Ubuntu SMP Tue Aug 9 17:03:04 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux The part from: $ cat /proc/bus/input/devices I: Bus=0011 Vendor=0002 Product=0007 Version=01b1 N: Name="SynPS/2 Synaptics TouchPad" P: Phys=isa0060/serio1/input0 S: Sysfs=/devices/platform/i8042/serio1/input/input6 U: Uniq= H: Handlers=mouse0 event7 B: PROP=5 B: EV=b B: KEY=e520 10000 0 0 0 0 B: ABS=660800011000003 The xinput list-props output. Device 'SynPS/2 Synaptics TouchPad': Device Enabled (139): 1 Coordinate Transformation Matrix (141): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000 libinput Tapping Enabled (273): 1 libinput Tapping Enabled Default (274): 0 libinput Tapping Drag Enabled (275): 1 libinput Tapping Drag Enabled Default (276): 1 libinput Tapping Drag Lock Enabled (277): 0 libinput Tapping Drag Lock Enabled Default (278): 0 libinput Accel Speed (279): 0.000000 libinput Accel Speed Default (280): 0.000000 libinput Natural Scrolling Enabled (281): 0 libinput Natural Scrolling Enabled Default (282): 0 libinput Send Events Modes Available (257): 1, 1 libinput Send Events Mode Enabled (258): 0, 0 libinput Send Events Mode Enabled Default (259): 0, 0 libinput Left Handed Enabled (283): 0 libinput Left Handed Enabled Default (284): 0 libinput Scroll Methods Available (285): 1, 1, 0 libinput Scroll Method Enabled (286): 1, 0, 0 libinput Scroll Method Enabled Default (287): 1, 0, 0 libinput Click Methods Available (288): 1, 1 libinput Click Method Enabled (289): 1, 0 libinput Click Method Enabled Default (290): 1, 0 libinput Disable While Typing Enabled (291): 1 libinput Disable While Typing Enabled Default (292): 1 Device Node (260): "/dev/input/event7" Device Product ID (261): 2, 7 libinput Drag Lock Buttons (293): <no items> libinput Horizonal Scroll Enabled (262): 1
Created attachment 125785 [details] right palm brushes touchpad The right palm
how old is this laptop? the touchpad doesn't have resolution data so libinput assumes a standard size (which is quite off, but that's fixable). I'm just surprised that resolution-less synaptics pads are still out in the wild
Laptop was received June 18, 2016.
add your dmesg here too please
Created attachment 125832 [details] dmesg
Please test the hwdb entry below according to https://wayland.freedesktop.org/libinput/doc/latest/faq.html#faq_hwdfaq_hwdb_changes # Dell Precision 5510 evdev:name:SynPS/2 Synaptics TouchPad:dmi:bvn*:bvr*:bd*:svnDellInc.:pnPrecision5510* EVDEV_ABS_00=::42 EVDEV_ABS_01=::43 EVDEV_ABS_35=::42 EVDEV_ABS_36=::43 And while you're at it, please run the touchpad-edge-detector to check if the axis ranges are correctly announced by the kernel.
I'm not used to feeling so out of my depth. I put the file in /etc/udev/hwdb.d: pauljohn:hwdb.d$ cat dell-5510.hwdb # Dell Precision 5510 evdev:name:SynPS/2 Synaptics TouchPad:dmi:bvn*:bvr*:bd*:svnDellInc.:pnPrecision5510* EVDEV_ABS_00=::42 EVDEV_ABS_01=::43 EVDEV_ABS_35=::42 EVDEV_ABS_36=::43 pauljohn:hwdb.d$ sudo udevadm hwdb --reload hwdb: unrecognized option '--reload' I'm guessing my udevadm is not up to date? My systemd is version 229-4ubuntu7 Please advise. Meanwhile, Mr Google suggests that rebooting will do the hwdb automatically, I'll see if that does it. If you don't hear from me, it will mean I've broken something horribly by following the advice of teenagers in Stackoverflow :) I can run the touchpad-edge-detector pauljohn:~$ sudo touchpad-edge-detector /dev/input/event7 Touchpad SynPS/2 Synaptics TouchPad on /dev/input/event7 Move one finger around the touchpad to detect the actual edges Kernel says: x [1278..5664], y [1206..4646] Touchpad sends: x [1278..5665], y [1209..4650] |^C Touchpad has no resolution, size unknown Calculate resolution as: x axis: 4386/<width in mm> y axis: 3440/<height in mm> Suggested udev rule: # <Laptop model description goes here> evdev:name:SynPS/2 Synaptics TouchPad:dmi:bvnDellInc.:bvr01.02.10:bd06/30/2016:svnDellInc.:pnPrecision5510:pvr:rvnDellInc.:rn0N8J4R:rvrA01:cvnDellInc.:ct9:cvr:* EVDEV_ABS_00=1278:5665:<x resolution> EVDEV_ABS_01=1209:4650:<y resolution> EVDEV_ABS_35=1278:5665:<x resolution> EVDEV_ABS_36=1209:4650:<y resolution>
(In reply to Paul Johnson from comment #7) > I'm not used to feeling so out of my depth. > > I put the file in /etc/udev/hwdb.d: > > pauljohn:hwdb.d$ cat dell-5510.hwdb > # Dell Precision 5510 > evdev:name:SynPS/2 Synaptics > TouchPad:dmi:bvn*:bvr*:bd*:svnDellInc.:pnPrecision5510* in case this wasn't bugzilla adding the linebreak: make sure this is one line only > pauljohn:hwdb.d$ sudo udevadm hwdb --reload > hwdb: unrecognized option '--reload' whoops. documentation is wrong, it's --update. Sorry about that, I'll push the fix out in a second > Meanwhile, Mr Google suggests that rebooting will do the hwdb automatically, no, it doesn't rebuild the hwdb on reboot, it merely applies the tags in the existing compiled hwdb > pauljohn:~$ sudo touchpad-edge-detector /dev/input/event7 > Touchpad SynPS/2 Synaptics TouchPad on /dev/input/event7 > Move one finger around the touchpad to detect the actual edges > Kernel says: x [1278..5664], y [1206..4646] > Touchpad sends: x [1278..5665], y [1209..4650] |^C ok, that's close enought hat we don't have to fix anything here, thanks.
fwiw, you can just quickly test if things work by building libinput and running sudo ./tools/event-debug, optionally with --verbose That only prints the events but should show you the right size of the touchpad now and it'll be easy to check if palm detection really swallows the events. Of course you need to make sure the hwdb is built first.
I don't see any difference before and after. Maybe I don't know what to look for. I got idea from your exclusion document that the outside 10% (or so) of touchpad would not initiate touches, especially on the left. If I drag a finger on left--top to bottom near the edge--cursor should not move. Right should do nothing moving from bottom to top. I wondered, in the output from touchpad-edge-detector, where it has EVDEV_ABS_00=1278:5665:<x resolution> EVDEV_ABS_01=1217:4649:<y resolution> EVDEV_ABS_35=1278:5665:<x resolution> EVDEV_ABS_36=1217:4649:<y resolution> what does it mean <x resolution> or <y resolution>. In any case, I'm going to test the libinput build suggestion. Here is the implementation info on # Dell Precision 5510 evdev:name:SynPS/2 Synaptics TouchPad:dmi:bvn*:bvr*:bd*:svnDellInc.:pnPrecision5510* EVDEV_ABS_00=::42 EVDEV_ABS_01=::43 EVDEV_ABS_35=::42 EVDEV_ABS_36=::43 pauljohn:hwdb.d$ sudo udevadm hwdb --update pauljohn:hwdb.d$ sudo udevadm trigger /sys/class/input/event7 pauljohn:hwdb.d$ sudo udevadm test /sys/class/input/event7 calling: test version 229 This program is for debugging only, it does not run any program specified by a RUN key. It may show incorrect results, because some values may be different, or not available at a simulation run. === trie on-disk === tool version: 229 file size: 7058592 bytes header size 80 bytes strings 1762272 bytes nodes 5296240 bytes Load module index timestamp of '/etc/systemd/network' changed timestamp of '/lib/systemd/network' changed Parsed configuration file /lib/systemd/network/99-default.link Created link configuration context. timestamp of '/etc/udev/rules.d' changed timestamp of '/lib/udev/rules.d' changed Reading rules file: /lib/udev/rules.d/39-usbmuxd.rules Reading rules file: /lib/udev/rules.d/40-crda.rules Reading rules file: /lib/udev/rules.d/40-libsane.rules Reading rules file: /lib/udev/rules.d/40-usb-media-players.rules Reading rules file: /lib/udev/rules.d/40-usb_modeswitch.rules Reading rules file: /lib/udev/rules.d/40-vm-hotadd.rules Reading rules file: /lib/udev/rules.d/50-apport.rules Reading rules file: /lib/udev/rules.d/50-bluetooth-hci-auto-poweron.rules Reading rules file: /lib/udev/rules.d/50-firmware.rules Reading rules file: /lib/udev/rules.d/50-udev-default.rules Reading rules file: /lib/udev/rules.d/55-dm.rules Reading rules file: /lib/udev/rules.d/56-hpmud.rules Reading rules file: /lib/udev/rules.d/60-block.rules Reading rules file: /lib/udev/rules.d/60-cdrom_id.rules Reading rules file: /lib/udev/rules.d/60-drm.rules Reading rules file: /lib/udev/rules.d/60-evdev.rules Reading rules file: /lib/udev/rules.d/60-gnupg.rules Reading rules file: /lib/udev/rules.d/60-gnupg2.rules Reading rules file: /lib/udev/rules.d/60-inputattach.rules Reading rules file: /lib/udev/rules.d/60-libgphoto2-6.rules Reading rules file: /lib/udev/rules.d/60-pcmcia.rules Reading rules file: /lib/udev/rules.d/60-persistent-alsa.rules Reading rules file: /lib/udev/rules.d/60-persistent-input.rules Reading rules file: /lib/udev/rules.d/60-persistent-storage-dm.rules Reading rules file: /lib/udev/rules.d/60-persistent-storage-tape.rules Reading rules file: /lib/udev/rules.d/60-persistent-storage.rules Reading rules file: /lib/udev/rules.d/60-persistent-v4l.rules Reading rules file: /lib/udev/rules.d/60-serial.rules Reading rules file: /etc/udev/rules.d/60-vboxdrv.rules Reading rules file: /lib/udev/rules.d/61-kde-bluetooth-rfkill.rules Reading rules file: /lib/udev/rules.d/61-persistent-storage-android.rules Reading rules file: /lib/udev/rules.d/64-btrfs.rules Reading rules file: /lib/udev/rules.d/64-xorg-xkb.rules Reading rules file: /lib/udev/rules.d/66-xorg-synaptics-quirks.rules Reading rules file: /lib/udev/rules.d/69-cd-sensors.rules Reading rules file: /lib/udev/rules.d/69-libmtp.rules Reading rules file: /lib/udev/rules.d/69-wacom.rules Reading rules file: /lib/udev/rules.d/69-xorg-vmmouse.rules Reading rules file: /lib/udev/rules.d/70-debian-uaccess.rules Reading rules file: /lib/udev/rules.d/70-mouse.rules Reading rules file: /lib/udev/rules.d/70-power-switch.rules Reading rules file: /lib/udev/rules.d/70-printers.rules Reading rules file: /lib/udev/rules.d/70-uaccess.rules Reading rules file: /lib/udev/rules.d/71-nvidia.rules Reading rules file: /lib/udev/rules.d/71-power-switch-proliant.rules Reading rules file: /lib/udev/rules.d/71-seat.rules Reading rules file: /lib/udev/rules.d/71-u-d-c-gpu-detection.rules Reading rules file: /lib/udev/rules.d/73-seat-late.rules Reading rules file: /lib/udev/rules.d/73-special-net-names.rules Reading rules file: /lib/udev/rules.d/73-usb-net-by-mac.rules Reading rules file: /lib/udev/rules.d/75-net-description.rules Reading rules file: /lib/udev/rules.d/75-probe_mtd.rules Reading rules file: /lib/udev/rules.d/77-mm-cinterion-port-types.rules Reading rules file: /lib/udev/rules.d/77-mm-ericsson-mbm.rules Reading rules file: /lib/udev/rules.d/77-mm-huawei-net-port-types.rules Reading rules file: /lib/udev/rules.d/77-mm-longcheer-port-types.rules Reading rules file: /lib/udev/rules.d/77-mm-mtk-port-types.rules Reading rules file: /lib/udev/rules.d/77-mm-nokia-port-types.rules Reading rules file: /lib/udev/rules.d/77-mm-pcmcia-device-blacklist.rules Reading rules file: /lib/udev/rules.d/77-mm-platform-serial-whitelist.rules Reading rules file: /lib/udev/rules.d/77-mm-qdl-device-blacklist.rules Reading rules file: /lib/udev/rules.d/77-mm-simtech-port-types.rules Reading rules file: /lib/udev/rules.d/77-mm-telit-port-types.rules Reading rules file: /lib/udev/rules.d/77-mm-usb-device-blacklist.rules Reading rules file: /lib/udev/rules.d/77-mm-usb-serial-adapters-greylist.rules Reading rules file: /lib/udev/rules.d/77-mm-x22x-port-types.rules Reading rules file: /lib/udev/rules.d/77-mm-zte-port-types.rules Reading rules file: /lib/udev/rules.d/78-graphics-card.rules Reading rules file: /lib/udev/rules.d/78-sound-card.rules Reading rules file: /lib/udev/rules.d/80-debian-compat.rules Reading rules file: /lib/udev/rules.d/80-drivers.rules Reading rules file: /lib/udev/rules.d/80-ifupdown.rules Reading rules file: /lib/udev/rules.d/80-mm-candidate.rules Reading rules file: /lib/udev/rules.d/80-net-setup-link.rules Reading rules file: /lib/udev/rules.d/80-snappy-assign.rules Reading rules file: /lib/udev/rules.d/80-udisks2.rules Reading rules file: /lib/udev/rules.d/84-nm-drivers.rules Reading rules file: /lib/udev/rules.d/85-brltty.rules Reading rules file: /lib/udev/rules.d/85-hdparm.rules Reading rules file: /lib/udev/rules.d/85-hplj10xx.rules Reading rules file: /lib/udev/rules.d/85-keyboard-configuration.rules Reading rules file: /lib/udev/rules.d/85-nm-unmanaged.rules Reading rules file: /lib/udev/rules.d/85-regulatory.rules Reading rules file: /lib/udev/rules.d/90-alsa-restore.rules Reading rules file: /lib/udev/rules.d/90-fwupd-devices.rules Reading rules file: /lib/udev/rules.d/90-libgpod.rules Reading rules file: /lib/udev/rules.d/90-pulseaudio.rules Reading rules file: /lib/udev/rules.d/95-cd-devices.rules Reading rules file: /lib/udev/rules.d/95-upower-csr.rules Reading rules file: /lib/udev/rules.d/95-upower-hid.rules Reading rules file: /lib/udev/rules.d/95-upower-wup.rules Reading rules file: /lib/udev/rules.d/97-hid2hci.rules Reading rules file: /lib/udev/rules.d/99-systemd.rules rules contain 393216 bytes tokens (32768 * 12 bytes), 35511 bytes strings 24167 strings (203400 bytes), 20623 de-duplicated (171434 bytes), 3545 trie nodes used value '[dmi/id]sys_vendor' is 'Dell Inc.' value '[dmi/id]sys_vendor' is 'Dell Inc.' IMPORT builtin 'input_id' /lib/udev/rules.d/50-udev-default.rules:14 capabilities/ev raw kernel attribute: b capabilities/abs raw kernel attribute: 660800011000003 capabilities/rel raw kernel attribute: 0 capabilities/key raw kernel attribute: e520 10000 0 0 0 0 properties raw kernel attribute: 5 test_key: checking bit block 0 for any keys; found=0 test_key: checking bit block 64 for any keys; found=0 test_key: checking bit block 128 for any keys; found=0 test_key: checking bit block 192 for any keys; found=0 GROUP 106 /lib/udev/rules.d/50-udev-default.rules:30 IMPORT builtin 'hwdb' /lib/udev/rules.d/60-evdev.rules:8 IMPORT builtin 'hwdb' returned non-zero value '[dmi/id]modalias' is 'dmi:bvnDellInc.:bvr01.02.10:bd06/30/2016:svnDellInc.:pnPrecision5510:pvr:rvnDellInc.:rn0N8J4R:rvrA01:cvnDellInc.:ct9:cvr:' IMPORT builtin 'hwdb' /lib/udev/rules.d/60-evdev.rules:17 IMPORT builtin 'hwdb' returned non-zero IMPORT builtin 'path_id' /lib/udev/rules.d/60-persistent-input.rules:31 LINK 'input/by-path/platform-i8042-serio-1-event-mouse' /lib/udev/rules.d/60-persistent-input.rules:33 value '[dmi/id]product_name' is 'Precision 5510' value '[dmi/id]product_name' is 'Precision 5510' value '[dmi/id]product_name' is 'Precision 5510' value '[dmi/id]product_name' is 'Precision 5510' PROGRAM '/bin/readlink /etc/udev/rules.d/80-net-setup-link.rules' /lib/udev/rules.d/73-usb-net-by-mac.rules:6 starting '/bin/readlink /etc/udev/rules.d/80-net-setup-link.rules' Process '/bin/readlink /etc/udev/rules.d/80-net-setup-link.rules' failed with exit code 1. handling device node '/dev/input/event7', devnum=c13:71, mode=0660, uid=0, gid=106 preserve permissions /dev/input/event7, 020660, uid=0, gid=106 preserve already existing symlink '/dev/char/13:71' to '../input/event7' found 'c13:71' claiming '/run/udev/links/\x2finput\x2fby-path\x2fplatform-i8042-serio-1-event-mouse' creating link '/dev/input/by-path/platform-i8042-serio-1-event-mouse' to '/dev/input/event7' preserve already existing symlink '/dev/input/by-path/platform-i8042-serio-1-event-mouse' to '../event7' created db file '/run/udev/data/c13:71' for '/devices/platform/i8042/serio1/input/input6/event7' .INPUT_CLASS=mouse ACTION=add DEVLINKS=/dev/input/by-path/platform-i8042-serio-1-event-mouse DEVNAME=/dev/input/event7 DEVPATH=/devices/platform/i8042/serio1/input/input6/event7 ID_INPUT=1 ID_INPUT_TOUCHPAD=1 ID_INPUT_TOUCHSCREEN=1 ID_PATH=platform-i8042-serio-1 ID_PATH_TAG=platform-i8042-serio-1 ID_SERIAL=noserial MAJOR=13 MINOR=71 SUBSYSTEM=input USEC_INITIALIZED=2508925 Unload module index Unloaded link configuration context. pauljohn:hwdb.d$
(In reply to Paul Johnson from comment #10) > Maybe I don't know what to look for. I got idea from your exclusion > document that the outside 10% (or so) of touchpad would not initiate > touches, especially on the left. If I drag a finger on left--top to bottom > near the edge--cursor should not move. yep, that's correct. > I wondered, in the output from touchpad-edge-detector, where it has > > EVDEV_ABS_00=1278:5665:<x resolution> > EVDEV_ABS_01=1217:4649:<y resolution> > EVDEV_ABS_35=1278:5665:<x resolution> > EVDEV_ABS_36=1217:4649:<y resolution> > > what does it mean <x resolution> or <y resolution>. this is where you plug in the resolution in units/mm. libevdev upstream now requires the size specification so this is auto-filled. > # Dell Precision 5510 > evdev:name:SynPS/2 Synaptics > TouchPad:dmi:bvn*:bvr*:bd*:svnDellInc.:pnPrecision5510* again, this must not be across two lines, it must be a single line. which file did you add it to? the udev adm output doesn't show any specific file and it should complain about the above if you added it to an existing file. but either way, the problem right now is that udev doesn't apply the tag which indicates either a typo or some other issue with the hwdb match.
Bingo. You got that right. I had the line break. Honestly, it looked that way in the web browser. I put lines 2-3 on one line and result was entirely happier. I'm typing this message now and cursor is not flying everywhere! I'm going to use this for a few days before I complain any more about it. Thanks so much for your attention. Now the outer left edge of the exclusion zone from to to bottom is inactive and the bottom-to-top action on the right is similarly numb. Top right to bottom is still active, but not always. I can't quite tell the pattern yet, but I'm pretty happy. I have never used the right edge scroll feature too much, will get used to the two finger drag in the middle for scrolling. Some of the other surprises are gone too. I don't see quite so much random cursor movement that coincides with a click inside the main part of the touchpad. In one hour, I've seen just a couple of those weird "cursor flies out to the edges" effects. Three finger tap to produce middle click is still very undependable, but two finger click is super dependable and two finger drag works 100% of time. I built libinput and ran the test you described. sudo ./tools/event-debug --verbose I only moved finger along left side during test period. I'm attaching that separately. In conclusion, this is very encouraging. I'll practice with this for a week before I contact you again.
Created attachment 125897 [details] output from libinput event-debug --verbose while using left side Hopefully, you see improvement in this and I'm not fooling myself thinking this touchpad is better. A few times I've been so frustrated that I actually fooled myself into thinking it was better.
yep, definitely activates. Look at the message "palm: palm detected (edge)", that's the signal. PR submitted, thanks! https://github.com/systemd/systemd/pull/3989 Closing this bug, systemd PRs are usually merged very quickly.
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.