How can I setup my touchpad multi-finger tapping functionality?

I'm trying to setup my multi-finger tap in the following way:

  • Single finger - Left click
  • Two fingers - Middle click
  • Three fingers - Right click

What I currently have is:

  • Single finger - Left click
  • Two fingers - Right click
  • Three fingers - none

I've looked up several questions here on Ask Ubuntu, as well as the Ubuntu wiki on the subject (plus some general Google searching), but couldn't find anything to help me out. I know of xinput, but I don't know what to change there and how.

If anyone is able to point me to the right direction, I'd be grateful and award him with 25 shiny rep points, a large green tick mark, and some cookies.


This can be done using synclient.

To do this per-session (and to test that it's working correctly on your system), type into a terminal the following commands:

synclient "TapButton2"=2
synclient "TapButton3"=3

The option TapButtonx means "A tap with x fingers, not in a corner", while the numbers 1, 2 and 3 after correspond to left, middle and right click respectively.

To make these changes permanent, navigate to /usr/share/X11/xorg.conf.d. ls to find the file with "synaptics.conf" in the name (in my case, 50-synaptics.conf). Then, sudo gedit 50-synaptics.conf, and add the following lines into the end of the first InputClass section:

Option "TapButton2" "2"
Option "TapButton3" "3"

Then restart your machine, and you should be good to go.

If editing the 50-synaptics.conf file doesn't work, do the following: open dconf-editor and navigate to org/gnome/settings-daemon/plugins/mouse. Uncheck the box marked "active" and restart again. This will allow the synaptics settings to take precedence.


Here is what we need to do:

  1. First we gather the ID for the trackpad/mouse pad.

    $ xinput --list  
    Virtual core pointer                        id=2    [master pointer  (3)]  
    ⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]  
    ⎜   ↳ PS/2 Generic Mouse                        id=10   [slave  pointer  (2)]    
    **⎜   ↳ SynPS/2 Synaptics TouchPad                  id=11   [slave  pointer  (2)]  **
    ⎣ Virtual core keyboard                     id=3    [master keyboard (2)]    
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]    
    ↳ Power Button                              id=6    [slave  keyboard (3)]    
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]    
    ↳ Sleep Button                              id=8    [slave  keyboard (3)]    
    ↳ AT Translated Set 2 keyboard              id=9    [slave  keyboard (3)]    
    ↳ HP WMI hotkeys                            id=12   [slave  keyboard (3)]    
    
  2. Now the highlighted one is our device with ID in my case 11

  3. List out the properties and hence configuring the one against the ID

    $ xinput --list-props 11  
    Device 'SynPS/2 Synaptics TouchPad':  
    Device Enabled (132):   1  
    Coordinate Transformation Matrix (134): 1.000000, 0.000000, 0.000000, 0.000000,   1.000000, 0.000000, 0.000000, 0.000000, 1.000000  
    Device Accel Profile (253): 1  
    Device Accel Constant Deceleration (254):   2.500000  
    Device Accel Adaptive Deceleration (255):   1.000000  
    Device Accel Velocity Scaling (256):    12.500000  
    Synaptics Edges (276):  1769, 5431, 1653, 4671  
    Synaptics Finger (277): 25, 30, 256  
    Synaptics Tap Time (278):   180  
    Synaptics Tap Move (279):   242  
    Synaptics Tap Durations (280):  180, 180, 100  
    Synaptics ClickPad (281):   0  
    Synaptics Tap FastTap (282):    0  
    Synaptics Middle Button Timeout (283):  75  
    Synaptics Two-Finger Pressure (284):    282  
    Synaptics Two-Finger Width (285):   7  
    Synaptics Scrolling Distance (286): 110, 110  
    Synaptics Edge Scrolling (287): 1, 0, 0  
    Synaptics Two-Finger Scrolling (288):   0, 0  
    Synaptics Move Speed (289): 1.000000, 1.750000, 0.036265, 40.000000  
    Synaptics Edge Motion Pressure (290):   30, 160  
    Synaptics Edge Motion Speed (291):  1, 441  
    Synaptics Edge Motion Always (292): 0  
    Synaptics Off (293):    0  
    Synaptics Locked Drags (294):   0  
    Synaptics Locked Drags Timeout (295):   5000  
    Synaptics Tap Action (296): 2, 3, 0, 0, 1, 3, 0  
    Synaptics Click Action (297):   1, 1, 0  
    Synaptics Circular Scrolling (298): 0  
    Synaptics Circular Scrolling Distance (299):    0.100000  
    Synaptics Circular Scrolling Trigger (300): 0  
    Synaptics Circular Pad (301):   0  
    Synaptics Palm Detection (302): 0  
    Synaptics Palm Dimensions (303):    10, 200  
    Synaptics Coasting Speed (304): 20.000000, 50.000000  
    Synaptics Pressure Motion (305):        ... of unknown type CARDINAL  
    
    Synaptics Pressure Motion Factor (306): 1.000000, 1.000000  
    Synaptics Resolution Detect (307):  1  
    Synaptics Grab Event Device (308):  1  
    Synaptics Gestures (309):   1  
    Synaptics Capabilities (310):   1, 0, 1, 1, 1, 1, 1  
    Synaptics Pad Resolution (311): 85, 45  
    Synaptics Area (312):   0, 0, 0, 0  
    Synaptics Noise Cancellation (313): 8, 8  
    Device Product ID (249):    2, 7  
    Device Node (250):  "/dev/input/event8"  
    
  4. Now find the point, in this case its 285, 288. Using the command you may configure the same on your touch pad.

    $xinput set-int-prop <properties>  
    
  5. Hope this helps