User Tools

Site Tools


Synaptics Touchpad Tricks

NOTE!! This page is completely out of date and will likely not work for you. It is here for historical reference only!


Although I've been using Linux for a desktop for quite some time, it wasn't that long ago that I installed it on my laptop. Since then I've been exploring all of the new hardware that you usually only find on a laptop, such as a touchpad. I'm using a relatively cheap, yet pretty powerful Gateway MX6931 which has a built-in Synaptics Touchpad. The first order of business is making sure that you have a Synaptics touchpad and not something else like Alps.

Verifying It's a Synaptics Touchpad

This is really pretty easy. All you have to do is check out the file /proc/bus/input/devices and you should have a section similar to this:

I: Bus=0011 Vendor=0002 Product=0007 Version=0000
N: Name="SynPS/2 Synaptics TouchPad"
P: Phys=isa0060/serio1/input0
S: Sysfs=/class/input/input2
H: Handlers=mouse1 event2 ts1 
B: EV=b
B: KEY=6420 0 70000 0 0 0 0 0 0 0 0
B: ABS=11000003

If you do, let's plow forward into the fun stuff.

Modifying Your xorg.conf

Now, we need to open your xorg.conf file and make sure that a few key things are set before we move forward. This file should be located in the /etc/X11 directory. Before opening this file with an editor, MAKE A BACKUP!!!. Seriously, MAKE A BACKUP. That said, open that file up and we should see a section in there like this:

Section "InputDevice"
    Identifier  "Synaptics Touchpad"
    Driver      "synaptics"
    Option      "SendCoreEvents"    "true"
    Option      "Device"        "/dev/psaux"
    Option      "Protocol"      "auto-dev"
    Option      "SHMConfig" "on"

You may have more lines in it than that, but the one thing that we are really concerned with before moving forward is this line:

    Option      "SHMConfig" "on"

Make sure that if it does not exist, you add it. This will allow you to edit the config on the fly without having to restart X. This is essential to do anything else from here on out.

High Level Stuff With gsynaptics

The first thing to do is install qsynaptics. This is a nice GUI based editor that will allow you to make some high level changes to your touchpad settings. It's handy for some basic stuff. So, if you are on a Debian based distro (like Ubuntu), you can just run on the command-line:

$ sudo apt-get install gsynaptics

After that's installed, go ahead and run it:

$ gsynaptics

This will open up the GUI for you and most of the options inside should be self explanatory.

Digging Deeper With synclient

So, now that you've gone through and done some basic setup, it's time to dig in and really start tweaking with synclient.

If you run synclient -? from the command-line, you should see something similar to this:

$ synclient -?
Usage: synclient [-m interval] [-h] [-l] [-V] [-?] [var1=value1 [var2=value2] ...]
  -m monitor changes to the touchpad state.
     interval specifies how often (in ms) to poll the touchpad state
  -h Show detected hardware properties
  -l List current user settings
  -V Print synclient version string and exit
  -? Show this help message
  var=value  Set user parameter 'var' to 'value'.

Now, if you want to see all the settings for your touchpad as they currently exist, type synclient -l:

$ synclient -l
Parameter settings:
    LeftEdge             = 1872
    RightEdge            = 5950
    TopEdge              = 1712
    BottomEdge           = 4144
    FingerLow            = 25
    FingerHigh           = 30
    MaxTapTime           = 180
    MaxTapMove           = 220
    MaxDoubleTapTime     = 180
    SingleTapTimeout     = 180
    ClickTime            = 100
    FastTaps             = 0
    EmulateMidButtonTime = 75
    VertScrollDelta      = 60
    HorizScrollDelta     = 0
    VertEdgeScroll       = 1
    HorizEdgeScroll      = 1
    VertTwoFingerScroll  = 0
    HorizTwoFingerScroll = 0
    MinSpeed             = 0.0822368
    MaxSpeed             = 0.197368
    AccelFactor          = 0.00164474
    EdgeMotionMinZ       = 30
    EdgeMotionMaxZ       = 160
    EdgeMotionMinSpeed   = 1
    EdgeMotionMaxSpeed   = 304
    EdgeMotionUseAlways  = 0
    UpDownScrolling      = 1
    LeftRightScrolling   = 1
    UpDownRepeat         = 1
    LeftRightRepeat      = 1
    ScrollButtonRepeat   = 100
    TouchpadOff          = 0
    GuestMouseOff        = 0
    LockedDrags          = 0
    RTCornerButton       = 2
    RBCornerButton       = 3
    LTCornerButton       = 6
    LBCornerButton       = 7
    TapButton1           = 1
    TapButton2           = 2
    TapButton3           = 3
    CircularScrolling    = 0
    CircScrollDelta      = 0.1
    CircScrollTrigger    = 0
    CircularPad          = 0
    PalmDetect           = 1
    PalmMinWidth         = 10
    PalmMinZ             = 200
    CoastingSpeed        = 0
    PressureMotionMinZ   = 30
    PressureMotionMaxZ   = 160
    PressureMotionMinFactor = 1
    PressureMotionMaxFactor = 1

As you can see, there are many, many options to explore here. As stated in the help for synclient, you can use synclient var=value to change settings on the fly. Personally, the main reason I started looking around at options for the touchpad was because, on my touchpad, I had a “divider ridge” for the vertical scrolling section on the right hand side that was supposed to separate off the scroll area. I had a large area of “spillover” into my normal movement area that ended up being usable only for scrolling. This was rather annoying to say the least. So in my case, the original setting for RightEdge was set at about 4760. I just started to tweak that value up with synclient RightEdge=5000 and kept climbing until I settled on the value above for my setting, which moved my movement area all the way over to the ridge that is supposed to separate movement area from scroll area. This is just one example of what you can do with these settings.

Another fun thing you can do is make your vertical scrolling into a “Mac style” scroll (i.e. the 2 finger scroll). You can do this with the following:

$ synclient VertEdgeScroll=0 VertTwoFingerScroll=1

Now just slide 2 fingers down across the pad and down you scroll, just like a Mac.

Another, either handy or annoying (depending on who you are), thing that you can set up are corner buttons. There are 4 settings that I have in my config:

    RTCornerButton       = 2
    RBCornerButton       = 3
    LTCornerButton       = 6
    LBCornerButton       = 7

These correspond to mouse button numbers. Mouse button 2 is a middle click, 3 is a right click and 6 and 7 are special. Basically, what those settings mean is that I can tap the Right Top corner of the touchpad (in the scroll area) to do a middle click, the Right Bottom corner of the touchpad to do a right click. The 6 and 7 buttons (the left corners of the touchpad), function as the Back and Forward buttons in your browser, respectively.

So, those are some things to get you started. Most of the settings should be self-explanatory in terms of the names, so happy tweaking!

Making it "Stick"

So now if you've found some settings that you changed to better suit your use, you now have to add those to your xorg.conf so that they will stay in effect after a reboot. If you didn't do it earlier do it now: MAKE A BACKUP of your xorg.conf file. Once that is done, open up /etc/X11/xorg.conf in your favorite editor and go down to the Synaptics section again. For all of the settings that you wish to preserve, you simply add an “Option” line to your config. Mine looks like this:

Section "InputDevice"
    Identifier      "Synaptics Touchpad"
    Driver          "synaptics"
    Option          "SendCoreEvents"        "true"
    Option          "Device"                "/dev/psaux"
    Option          "Protocol"              "auto-dev"
    Option      "SHMConfig" "on"
    Option      "RightEdge" "5950"
    Option      "RTCornerButton"  "2"
    Option      "RBCornerButton"  "3"
    Option      "LTCornerButton"  "6"
    Option      "LBCornerButton"  "7"

Save and you are done. The next time you reboot, those options will be loaded with X.

More Info

os/linux/general/synapticstouchtricks.txt · Last modified: 2014/12/01 00:20 by jay