15.09.2010

"Modern" touchpads

My new laptop has a fancy new touchpad. The buttons are part of the pad themselves. The whole pad is a button, the action depends on where you press it down. The only thing that separates the buttons from the rest of the touchpad is a small white line (so basically nothing). The touchpad supports multitouch, which works quite well on Windows but doesn't work at all on Linux. When staying on the "button area" with one finger while trying to move the cursor with another finger, the result is a jumping pointer which does everything but move the way I want it to. I finally found a workaround.
This has been tested on my Synaptics touchpad and I have no idea wether it works for anyone else.
  1. Check your synclient values and save them somewhere.
    Code:
    $ synclient -l > synclient-values
  2. Make the touchpad area smaller so that moving the finger over the buttons doesn't move the cursor.
    Code:
    $ synclient AreaBottomEdge=<value>
    where <value> is a value between the values of BottomEdge and TopEdge. Experiment with the values until you reach the optimal result. Mine was 3836
  3. Change the value of JumpyCursorThreshold. I have no idea what exactly this value is or what exact effect changes on this value have. I only know that setting this value to 100 made my pointer much calmer than before.
    Code:
    $ synclient JumpyCursorThreshold=100
    You may find that other values provide better results for Your laptop and Your touchpad. Feel free to experiment, You can always reset the values either manually or by rebooting.
You can write a shell script and add it to Your startup programs if You want to keep the settings.
Hint: It is not possible to rotate Your touchpad orientation (could be useful if screen can be rotated), since synclient prevents You from setting values for BottomEdge that are smaller than the value of TopEdge and so on...
Hint 2: It is also impossible to change the area of the buttons. If You need to always press the bottom 0.1mm of the touchpad to perform a click, You better get used to it (or write a patch for the synaptics driver).
That's it! You're done!