How to fix palm rejection on Ubuntu 16.04 LTS?

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.


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.


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