I recently purchased a Dell XPS 15 9560 which I use for my day to day work, with Ubuntu 16.04 as the only operating system. It is a wonderful laptop and Ubuntu runs on it with virtually no issues. There is one issue which bothered me more than others. The touch pad sensitivity and palm detection. Whenever I tried to type a long piece of text I would invariably find my self type a couple of words somewhere else on the screen.
The problem was that when I reached for letters in the middle of the keyboard such as
Y the inside bit of my palm would touch the touchpad in the top corner. The touchpad percieved that as a tap and I’d continue typing wherever the mouse pointer was at the time.
I usually have a mouse plugged in and have set the touchpad to be disabled when a mouse is plugged in. I used these instructions from askubuntu to do that. It helped but I do quite a bit of work away from a desk and then I need the touchpad enabled.
After a bit of googling a found a couple of questions on answers on numerous forums and managed to piece things together from there. See the references at the bottom of the post.
To make it work you first you have work out what your touchpad is called internally. You do this by running:
which prints something like this:
From this output you can see there are a number of touch input devices:
- Virtual core XTEST pointer - Not entirely sure what this is
- ELAN Touchscreen
- DLL07BE:01 06CB:7A13 Touchpad
Look for the one called ‘Touchpad’. You can now list all the configuration for this device by using
xinput list-props. For the XPS it is:
This yields a long list of properties and their values. Look for the following:
- Synaptics Palm Detection
- Synaptics Palm Dimensions
- Synaptics Area
In my case these where set as follows:
|Synaptics Palm Detection||0||This means palm detection is off|
|Synaptics Palm Dimensions||10, 200||The first value refer to the minimum|
|Synaptics Area||0, 0, 0, 0||This describe the touchpad surface area where touches are detected.|
Most of the references I found was talking about changing the first two properties
Synaptics Palm Detection and
Synaptics Palm Dimensions however, changing those
didn’t make a difference for me. The cursor still jump around because my palm looks like a finger at the edge of the touchpad no matter how small I make the palm detection setting. This is understandable since only a small part of my palm actually touches the touchpad surface while typing.
The setting which made the biggest difference for me was the last one
Synaptics Area. It is used to manage the detection of touches at the edges of the touchpad.
By changing the four values associated with Synaptics Area you can change the area of the touchpad that is active to touches.
Note that the
Synaptics Areais about inital touches. The disabled areas still work if a touch is initated in the active area
The first value defines how far from the left of the touchpad edge touches are detected. Anything to the left of this value is not considered a touch. The second value sets how far to the right the active part of the touchpad stretches. The third sets how far from the top edge the active area starts and the fourth is how far down the active part stretches.
To configure these you first have to work out how large the touchpad is by running the following command:
1 2 3 4 5 6 7 8
From this you can see that the touchpad as a horizontal range of
0-1228 and a vertical range of
0-928. I don’t know what these numbers mean or measure, but I
played around with different values a bit and found that, for me, the magic number is
- Start detecting touches
70from the left
- Stop detecting touches
1228-70 = 1168from the left
- Start detecing touches
70from the top
- Detect touches all the way down
This setup work perfectly for me without even changing the
Synaptics Palm Dimensions. I can now type without worrying about my cursor jumping all over the place. The best part is that if you initiate a drag of the pointer in the active area of the touchpad, the touchpad will track your finger all the way to the edge, even in the ‘no touch’ zone.
To make the changes permanent put them in a script and run the file at log in time using the startup applications gui.