How to edit synaptics configuration? xorg.conf way doesen't work

I created the /etc/X11/xorg.conf.d/71-synaptics.conf file with the following contents with sudo vi:

Section "InputClass"
        Identifier "touchpad catchall"
        Driver "synaptics"
        MatchIsTouchpad "on"
        Option "TapButton3" "2"
EndSection

and I can see in /var/log/Xorg.0.log that the option has been set.

[ 91056.468] (**) Option "TapButton3" "2"

The option was merged with options I had set similarly in my 70-synaptics.conf file.

If your device uses a different device or different driver (see the /var/log/Xorg.0.log to see), you should adjust the Identifier and Driver lines appropriately.

Another approach is to disable the gnome mouse settings plugin.

  • To do this start a terminal with Alt+Ctl+T, and then install the dconf-editor:

    apt-get install dconf-editor hleinone

  • Launch dconf-editor

    dconf-editor

and navigate the tree to org.gnome.settings-daemon.plugins.mouse.

  • Finally, uncheck the Active box

A drawback of this latter approach is that no settings you configure in System Settings-> Mouse and Touchpad will be effective.

This approach, from the comments, is from here by way of hleinone.


Old Answer

You can use ClickFinger3 instead, which is quite close to TapButton3.

I encountered exactly the same problem. In addition to TapButton3, my conf file also set ClickFinger3 to 2.

Section "InputClass"
        Identifier "touchpad bind middle button"
        MatchDriver "synaptics"
        Option "TapButton3" "2"
        Option "ClickFinger3" "2"
EndSection

However, my Xorg.0.log does have the following.

[    35.860] (**) Option "TapButton3" "2"
[    35.860] (**) Option "ClickFinger3" "2"

The ironic thing is ClickFinger3 works pretty well but TapButton3 doesn't even work.

I also tried to put synclient TapButton3=2 ClickFinger3=2 in the .xsessionrc file, in the startup application script.

I tried this

xinput set-prop --type=int --format=8 "SYNA2393:00 06CB:75E2 Touchpad" "Synaptics Tap Action" \
       `xinput list-props "SYNA2393:00 06CB:75E2 Touchpad" | sed -n 's/,//g; s/Synaptics Tap Action.*:\(.*\)./\1/p'` 2

and that

xinput set-prop --type=int --format=8 "SYNA2393:00 06CB:75E2 Touchpad" "Synaptics Tap Action" 2 3 0 0 1 3 2

To no avail, none of them works for TapButton3 and all of them works for ClickFinger3. I spent a day (literally, no exaggeration) to research about it and arrived at this conclusion.

This line of code is very likely to the cause of this strange behavior.

References:
state of multitouch gestures in 14.04 / Unity
How can I disable arbitrary default multitouch gestures in Unity?


New Answer

I found the real solution after I wrote the above.

Accidentally, I unchecked the "Tap to Click" option in Mouse & Touchpad via GUI and then read the output of synclient. I observed that all the tap related values had been set to 0. This made me believe that the Unity mouse panel executes synclient upon login and sets "Synaptics Tap Action" to 2, 3, 0, 0, 1, 3, 0.

To verify my conjecture, I needed to disable this GUI thing. I googled "ubuntu unity control center override synclient" and got this link as the top result.

I conducted an experiment by deactivating the GNOME mouse plugin.

gsettings set org.gnome.settings-daemon.plugins.mouse active false

Then I rebooted, hooray, the TapButton3 finally worked after login. I jollied around and soon found out my usual natural (reverse?) scrolling, which I set through GUI settings , no longer worked. After some investigation, I gathered the following actions (possibly incomplete) made by GNOME mouse plugin.

synclient HorizTwoFingerScroll=1 VertEdgeScroll=0
syndaemon -i 1.0 -t -K -R &

I can now make touchpad settings on a per-user base (which I prefer). So I removed my synaptics.conf file and wrote the following as my ~/.xsessionrc.

synclient TapButton3=2 ClickFinger3=2
synclient HorizTwoFingerScroll=1 VertEdgeScroll=0
# the following ampersand is significant
syndaemon -i 1.0 -t -K -R &
# natural scrolling
synclient VertScrollDelta=-28 HorizScrollDelta=-28

Reference:
How do I make my synclient settings stick?