Dell XPS 13 (9360) Touchpad - Palm Detection and Sensitivity

I’m having trouble with the touchpad on my XPS 13, bought in November 2016. I’m running Tumbleweed. The touchpad is way too sensitive, and doesn’t seem to respond to palm detection settings. In the System Settings (“Configure Desktop”) tool, Hardware > Input Devices > Touchpad Settings, all options under the “Sensitivity” tab are grayed out and disabled. Similarly, under the “Pointer Motion” tab, the settings under “Pressure-Dependent Motion” are disabled. Under the “Enable/Disable Touchpad” tab, checking “Disable touchpad while typing” and changing the “timeout” settings seems to have no effect. I can still type keys with one hand, and use my palm to move the mouse around or effect a tap and reposition the cursor.

I’m not that adept technically, but I’d like to know what the underlying packages and settings are that are being changed by the graphic tool “Touchpad Settings.” I don’t know if it’s libinput, or synaptics, or something else. I’d like to know what file is being altered (if any) when I change these options, and why sensitivity options are not enabled. Any advice? I’m going crazy with this cursor-jumping and window-changing, no matter how carefully I type. Other than that, I love my machine and Tumbleweed.

You can tell which Xorg input driver is in use by executing the following

grep "Using input drivers" /var/log/Xorg.0.log

The hwinfo command can be used to obtain more info about your hardware as well

/usr/sbin/hwinfo --mouse

It might be that your touchpad is being treated as a generic pointing device, rather than a touchpad device.

Thanks for your response. The hwinfo command got me the answer as to which Xorg input driver was at work. I’m still mid-stream, though, (or maybe mid-ocean) on the touchpad problem, with more information but still no solution in sight. I don’t know if redacting code output (with “…”) is OK to do, but here’s the relevant line from the first command.

> grep "Using input driver" /var/log/Xorg.0.log
...
     7.794] (II) Using input driver 'synaptics' for 'DLL075B:01 06CB:76AF Touchpad'

So it’s synaptics and not libinput. Still, altering FingerHigh, FingerLow, and PalmDetect values through synclient has no effect. Changing others, like MinSpeed and MaxSpeed, does have effect, and is reflected in the Touchpad Settings gui tool. Vice-versa, too–changing them in the gui changes the results of synclient -l.

The hwinfo output is pretty opaque to me. Not sure if there are any hints in there.


> /usr/sbin/hwinfo --mouse
33: PS/2 00.0: 10500 PS/2 Mouse                                 
  [Created at input.249]
  Unique ID: AH6Q.l7lNz95wNhE
  Hardware Class: mouse
  Model: "DLL075B:01 06CB:76AF Touchpad"
  Vendor: 0x06cb 
  Device: 0x76af "DLL075B:01 06CB:76AF Touchpad"
  Compatible to: int 0x0210 0x0001
  Device File: /dev/input/mice (/dev/input/mouse1)
  Device Files: /dev/input/mice, /dev/input/mouse1, /dev/input/event16, /dev/input/by-path/pci-0000:00:15.1-platform-i2c_designware.1-event-mouse, /dev/input/by-path/pci-0000:00:15.1-platform-i2c_designware.1-mouse                                                              
  Device Number: char 13:63 (char 13:33)                                                                                                  
  Driver Info #0:                                                                                                                         
    Buttons: 1                                                                                                                            
    Wheels: 0                                                                                                                             
    XFree86 Protocol: explorerps/2                                                                                                        
    GPM Protocol: exps2                                                                                                                   
  Config Status: cfg=no, avail=yes, need=no, active=unknown

Evtest run on the touchpad registers neither width nor pressure information. There are no ABS_MT_PRESSURE or ABS_TOOL_WIDTH references in the output. Most of the various forum discussions about palm detection seem to focus on syndaemon, or synclient’s PalmDetect setting, or evtest’s ABS_TOOL_WIDTH value, and this makes sense, but I just want to get the touchpad’s sensitivity down. Getting the sensitivity working will take care of palm detection for me, I think. As it is, it is impossible to make any contact with my touchpad without a touch being registered, no matter how lightly I try. If I can get FingerHigh and FingerLow (or some equivalent) working, I will not end up in the madhouse from files and applications opening when I don’t want them to.

I tried another solution, which I saw in a discussion related to palm detection here, but it didn’t help. Like there, xinput list showed that I had two touchpad devices running, both “DLL075B:01 06CB:76AF Touchpad” and “SynPS/2 Synaptics TouchPad”. And, as in the post, resuming from suspend would make the SynPS/2 one disappear. I created a file (since it didn’t already exist) at /usr/share/X11/xorg.conf.d/51-synaptics-quirks.conf, and created the entry:

# Disable generic Synaptics device, as we're using
# "DLL075B:01 06CB:76AF Touchpad"
# Having multiple touchpad devices running confuses syndaemon
Section "InputClass"
        Identifier "SynPS/2 Synaptics TouchPad"
        MatchProduct "SynPS/2 Synaptics TouchPad"
        MatchIsTouchpad "on"
        MatchOS "Linux"
        MatchDevicePath "/dev/input/event*"
        Option "Ignore" "on"
EndSection

This took care of having two touchpad devices running, but didn’t have any effect on whether the FingerHigh and FingerLow settings in synclient kicked in, or on any other behavior as far as I could tell. So this issue of two touchpad devices might have been a dead end. I mention it just in case there are any clues here that I’m not seeing. The51-synaptics-quirks.conf file is still there, but I’m not sure if I should keep it.

Just a thought…while the synaptics driver may still offer more configuration options, it may be that the libinput driver is a better option here. It may be better with handling palm detection for example. To use it make sure ‘xf86-input-libinput’ is installed. You could remove ‘xf86-input-synaptics’, but it should only be necessary to remove or rename any synaptics config files in the /etc/X11/xorg.conf.d/ directory eg rename 51-synaptics.conf to eg 51-synaptics.old. Once that is done, you should be able to confirm (via the Xorg log) that libinput is now in use.

It may handle the touchpad as required without further configuration, but if necessary a custom config could be created with the appropriate options eg /etc/X11/xorg.conf.d/40-dell-touchpad.conf

Section "InputClass"
    Identifier "touchpad"
    MatchProduct "DLL075B:01 06CB:76AF Touchpad"
    Driver "libinput"
    Option    "Tapping"    "on"
    Option    "AccelSpeed"    "1"
EndSection

Some common options described here
https://wiki.archlinux.org/index.php/Libinput#Common_options

Also, refer to the man pages for libinput

man libinput

Thanks again for the response. I tried the libinput driver, and ended up switching back to synaptics. The non-configurable delay on two-finger scrolling was a bit annoying, since I use that gesture often. I’ve narrowed it down to a sensitivity issue. If I could only get pressure information to be conveyed from the clickpad, I would be able to set FingerHigh and FingerLow. Another option might be to limit the tap-to-click area to the “button” areas of the clickpad, but I don’t see a way to do that. Any hope of getting it so that pressure info (Z value?) can get working? I am thinking it might be an impossible dream.

Okay, well worth a shot. It was created to consolidate the input stack and is under active development, and will eventually replace both evdev and synaptics input drivers AFAIU. In time it should gain more capability and configuration options to provide the behaviour users need.

Another option might be to limit the tap-to-click area to the “button” areas of the clickpad, but I don’t see a way to do that.

I understand that libinput can be configured to do that, (although I recognise your preference with using synaptics because of its faster gesture behaviour).

From ‘man libinput’

Option “ClickMethod” “string”
Enables a click method. Permitted values are none, buttonareas, clickfinger. Not all devices support all methods, if an option
is unsupported, the default click method for this device is used.

https://wayland.freedesktop.org/libinput/doc/latest/clickpad_softbuttons.html

I’m not sure what support the synaptics driver has for your hardware and in any case ‘xinput’ needs to be used to determine the capabilities (parameters) of the touchpad device.

I think the best way to progress this may be via a bug report aimed at the libinput developers. However, that would mean using that driver and providing information requested around that.

https://wayland.freedesktop.org/libinput/doc/latest/reporting_bugs.html#reporting_bugs_touchpad

Thanks again. I’ve been busy trying to get my mother’s glacial Windows machine working using Fedora/LXDE. When I’m done with that I will look into the bug report idea. I’ve benefited much from Linux forums and the efforts of knowledgeable Linux folks, so I will give it a shot, though I feel like an amateur. I’m getting used to the hypersensitive touchpad at this point, though I still want to figure it out. My mom’s laptop is an old Asus, and synclient FingerLow/High works perfectly.

But OpenSuse is great, I love it.