Synaptics Touchpad/Xorg 7.3

Introduction
This guide describes setting up Synaptics and ALPS touchpads under Linux for Xorg 7.3 and newer.

This is not strictly necessary for normal mouse functionality, which can be achieved with the standard X11 mouse configuration. The synaptics driver enables the following functionality:


 * 1) Movement with adjustable, non-linear acceleration and speed.
 * 2) Button events through tapping (Click and Double-Click).
 * 3) Dragging.
 * 4) Middle and right button events on the upper and lower corners.
 * 5) Vertical scrolling (button four and five events) through moving the finger on the right side.
 * 6) The up/down button sends0button four/five events.
 * 7) Horizontal scrolling (button six and seven events) through moving the finger on the lower side.
 * 8) The multi-buttons send button four/five events, and six/seven events for horizontal scrolling.
 * 9) Adjustable finger detection.
 * 10) Multifinger taps: two finger for middle button and three finger for right button (Requires hardware support).
 * 11) Run-time configuration. This means you can change parameter settings without restarting the X server.

Kernel
Enable "Event Interface" within the kernel. If you have an Apple/Macintosh Laptop, also enable "Apple USB Touchpad support" (statically or as a module).

X11
First add synaptics to INPUT_DEVICES in ,

Make sure that the USE-Flag is enabled on both  and  with,

If so, emerge the synaptics driver,

Note: Hal was the preferred way to set up input devices in Xorg 1.6 and 1.7. The recommended way for 1.8 and later is using udev. Hal is deprecated.

Configuration
Today the input devices get configurated by. The use of the for input configuration is deprecated. To add an option, you have to create an .fdi file. You may wish to start with the default file from :

Here an example how to activate the shared memory option to enable real time tweaking:

/etc/hal/fdi/policy/99-x11-synaptics.fdi

You can set all other options like this. Just add another line. For more informations about HAL and .fdi files, see the HAL article.

For more options and their meanings, see the installed man page:

Real-Time Tweaking
Changes to the touchpad configuration can be made without restarting X using. These changes are not permanent and must be explicitly set via the HAL .fdi file or in a startup script.

To activate the tweaking you have to add the SHMConfig option to your .fdi file, see above.

Usage examples:


 * List of available parameters :
 * Decreasing the RightEdge value to 5000 may allow for easier vertical scrolling:
 * Find out proper edge parameters :
 * Turn off the Tap-to-Click feature:

Prevent Accidental Mouse Movement
If your laptop has a compact physical layout, you may often have accidental mouse clicks while typing. (part of the synaptics package) can be used to disable the touchpad while keyboard keys are pressed.

You can start the daemon automatically using the file in your $HOME directory or using your desktop's autostart feature (if available). For KDE, add this script to the folder:

If you wish to use modifier keys (e.g.: Ctrl, Alt) while moving the mouse, you can add to the command.

Please read syndaemon's man page for more options to control disabling the touchpad while typing.

Upgrading from Xorg 7.2
Bear in mind that if you are upgrading from an existing style configuration to HAL style configuration, you should remove the InputDevice section corresponding to the mouse from ; otherwise this may conflict with HAL settings.

Can't use Touchpad for clicking
After migrating from the old broken "x11-drivers/synaptics" to "x11-drivers/xf86-input-synaptics" package, clicking using the Touchpad (and not buttons) was ignored on my Dell Inspiron 8100 Laptop Synaptics Touchpad. I found the TapButton variable was the culprit, defaulting to 0 here. Add the following to the fdi file:

Or, try it out first using:

Two and three finger tapping unstable
If the tapping became almost unusable, you could restore the previous behavior just changing this:

In order to make this change permanent, update the file modifying synaptics' section to be like this:

Just for reference, it's the touchpad of a Lenovo/IBM T60 laptop.

Horizontal Scroll misinterpreted as Back/Forward in Web Browser
Browsers may misinterpret the horizontal scroll as 'back' and 'forward'. For Firefox there are these solutions:
 * Disable horizontal scroll. Add this to the touchpad's input section of your :


 * Another options is to configure Firefox so that it doesn't misinterpret the horizontal scroll. In Firefox type in the address . Double-click the line mousewheel.horizscroll.withnokey.action. Set it to 0 (2 is forward and back pages. 1 enables Horizontal scrolling). Set to.
 * If you actually want this feature (left scrolling takes you back, and right scrolling makes firefox go forward), set these values:

mousewheel.horizscroll.withnokey.action 2 mousewheel.horizscroll.withnokey.numlines -1 (Setting it to -1 or 1 is used to change directions of a back/forward gesture) mousewheel.horizscroll.withnokey.sysnumlines false

For Opera to recognize horizontal scrolling, go to Preferences > Advanced > Shortcuts and click the Edit button next to Mouse setup. Expand the Application section and delete the two entries (Button6, Back) and (Button7, Forward).

Can't access shared memory area. SHMConfig disabled?" error

 * Check that you activated the SHMConfig option in your .fdi, see Real-Time Tweaking.
 * Setting the "SHMConfig" option to true doesn't work in newer Xorg. Change it to on.
 * Make sure that the xorg-server package was compiled with the USE-Flag disabled, otherwise modules loading is not possible.
 * It might also be that your computer does not recognize that you have a synaptics touchpad due to a bug. Compiling your kernel with psmouse as module, load it, unload it, touch the pad and load it again solved it for me. If you have X started you have to restart it after you have reloaded the module.

Configuring a Synaptic Device Without HAL
HAL has become deprecated in favor of udev as the device manager of choice for many Linux distributions. As such, packages such as xorg-server have moved from using hal to udev. The synaptics driver still requires hal for auto detection of synaptic devices although you may simply manually configure xorg to use the synaptic driver for devices without the need for hal.

/usr/share/X11/xorg.conf.d/50-synaptics.conf

In this example, /dev/input/event7 corresponds to a synaptic device. You may change this line to support your system.

Sample Configurations
MacBook Configuration Sample ALPS Configuration Sample