How to fix palm rejection on Ubuntu 16.04 LTS?

Solution 1:

First, you want to find your touch pad driver. You can do so by typing under terminal:

xinput

There you will receive a list of drivers. Under list Virtual core pointer, look for keyword TouchPad. That variable will be the {id} e.g. mine is "SynPS/2 Synaptics TouchPad".

Next go to Startup Applications Preferences, select "Add", you can put whatever for the name, I used "Palm Detection", and for the cmd you want to put:

xinput set-prop "{id}" "Synaptics Palm Detection" 1

Also, add another one to set the dimensions. Call it "Palm Dimensions" (you can replace the value as you wish, you might want to play with the value to get the best experience):

xinput set-prop "{id}" "Synaptics Palm Dimensions" 3, 3

Now you can reboot your laptop and good luck :)

P.S. I think the correct touch pad id to use is the one starting with ETPS/2. If not you can just try both and hopefully that will work.

Solution 2:

For my XPS 13 2017 with Ubuntu 16.04 the solution is to install dconf-editor and go to

org > gnome > desktop > peripherals > touchpad

and set click-method to fingers or if the key disable-while-typing is available, just set it to true.


Another solution is to add new shortcuts by going to Keyboard > Shortcuts > Custom Shortcuts. My shortcuts are

Ctrl + Shift + M -> gsettings set org.gnome.desktop.peripherals.touchpad tap-to-click true

Ctrl + Shift + N -> gsettings set org.gnome.desktop.peripherals.touchpad tap-to-click false

So whenever you want to enable tap to click, just press Ctrl+Shift+M and Ctrl +Shift +N to disable it.

Solution 3:

For me, all the solutions above didn't work. So if someone is in a similar situation, this could help to reduce the activation area of your touchpad at the edges. This hasn't created any negative side effects since you rarely start by clicking at the edges and when the touchpad is touched, you can still use the area at the edges. It can be done like this:

First, use this ( xinput list-props "ETPS/2 Elantech Touchpad"|grep Edges ) to get your touchpad edge dimensions. It returns 4 values (left, right ,top, down) e.g. Synaptics Edges (274): 100, 2408, 71, 1249

Second, these values can be used like this:

synclient AreaTopEdge=71
synclient AreaLeftEdge=100
synclient AreaRightEdge=2408

Solution 4:

If you have a modern Dell laptop, these instructions may help. They are directly from Dell, Precision / XPS: Ubuntu General Touchpad/Mouse Issue Fix

The first portion did wonders for me. Here is the script that they suggest adding to sudo gedit /usr/share/X11/xorg.conf.d/51-synaptics-quirks.conf. I do not recommend following the accepted answer's solutions as that route seems to create other problems.

# Disable generic Synaptics device, as we're using
# "DLL0704:01 06CB:76AE 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

For compatability comparison, I've a Dell Inspiron 13 7000 series with xinput list

jonathan@Dell:~$ xinput list
⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Logitech USB Receiver                     id=10   [slave  pointer  (2)]
⎜   ↳ Logitech USB Receiver                     id=11   [slave  pointer  (2)]
⎜   ↳ ELAN Touchscreen                          id=13   [slave  pointer  (2)]
⎜   ↳ DELL0741:00 06CB:7E7E Touchpad            id=14   [slave  pointer  (2)]
...

Synaptics is not on that list because it has been disabled by the above script. Before adding this script, I suggest running xinput --test <id>" (for me 14). If you get output on a terminal, that means your device is working (your device is "on").