We've made a ton of changes in how X works in Ubuntu starting in 12.04 LTS. One big change was a move of the gesture stack to the client side of the X server instead of being embedded as huge patches in the server itself. This means the gesture stack relies on XInput touch events.
Unfortunately, X can't send touch events if it is also sending other events caused by the same touches. For example, if you have two finger scrolling enabled for a touchpad, X can't send touch events until you put three touches down.
Here are the settings that affect touchpad gestures. You can use xinput or synclient for querying and setting properties. Synclient is easier to use, but does not function properly if you have multiple trackpads.
To query values using xinput, run:
$ xinput (find your trackpad device id or name) $ xinput list-props <device id|device name>
To set values using xinput, run:
xinput set-prop <device id|device name> <property id|property name> <value 1> <value 2> ..."
To query values using synclient, run:
$ synclient
To set values using synclient, run:
$ synclient <property>=<value>
To enable three touch gestures:
- Disable three-touch tapping:
- The last value of the "Synaptics Tap Action" xinput property must be 0
The synclient property TapButton3 must be 0
- Disable three-touch clicking:
- The last value of the "Synaptics Click Action" xinput property must be 0
The synclient property ClickFinger3 must be 0
To enable two touch gestures:
- Disable two-finger scrolling:
- Both values of the "Synaptics Two-Finger Scrolling" property must be 0
The synclient properties VertTwoFingerScroll and HorizTwoFingerScroll must be 0
- Disable two-touch tapping:
- The second to last value of the "Synaptics Tap Action" xinput property must be 0
The synclient property TapButton2 must be 0
- Disable two-touch clicking:
- The second value of the "Synaptics Click Action" xinput property must be 0
The synclient property ClickFinger2 must be 0
In Ubuntu, the following can be performed to enable the above:
- To enable three touch gestures:
- Nothing needed. Should work out of the box.
- To enable two touch gestures:
- Open "System Settings", go to Mouse and Touchpad, go to the Touchpad tab, then:
- Uncheck "Enable mouse clicks with touchpad"
- Disable scrolling or select Edge scrolling
- Disable two-touch clicking as described above
- Open "System Settings", go to Mouse and Touchpad, go to the Touchpad tab, then:
We hope that in the future these traditional touchpad features will also move to the client side of X. Then we will be able to have both gestures and touchpad features side by side.