Differences between revisions 7 and 54 (spanning 47 versions)
Revision 7 as of 2009-03-16 03:31:04
Size: 5016
Editor: anonymous
Comment: converted to 1.6 markup
Revision 54 as of 2020-11-29 12:36:12
Size: 9195
Editor: nodiscc
Comment: CategoryHardware
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
#language en
Line 2: Line 3:
~-[[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[fr/SynapticsTouchpad|Français]] - [[it/SynapticsTouchpad|Italiano]]-~
----
Line 3: Line 6:
=== Debian Lenny (testing), kernel 2.6.21 ===
On a Dell Latitude C610, very little was needed to configure the more advanced features of the touchpad. The touchpad was detected and package free86-driver-synaptics was already installed.
<<TableOfContents>>
Line 6: Line 8:
1. Edit /etc/X11/xorg.conf.
Find the section regarding the Touchpad (which is correctly recognised during installation) and add the option SHMConfig "on"
== Introduction ==

This document is applicable to squeeze, wheezy, jessie and stretch.

== Determining the type of Touchpad ==

The following command will tell you whether you have a Synaptics, ALPS or [[DebianEeePC/HowTo/ElantechTouchpad|Elantech touchpad]]:
Line 10: Line 17:
Section "InputDevice"
 Identifier "Synaptics Touchpad"
 Driver "synaptics"
 Option "SendCoreEvents" "true"
 Option "Device" "/dev/psaux"
 Option "Protocol" "auto-dev"
 Option "HorizScrollDelta" "0"
 Option "SHMConfig" "on"
egrep -i 'synap|alps|etps|elan' /proc/bus/input/devices
}}}

(Elantech support was enabled in Linux kernel 2.6.32-4.)

== Desktop configuration ==

Some desktop environments such as GNOME and KDE can allow you to adjust settings of your touchpad through a graphical system settings panel.

If you can't find a Touchpad or Synaptics tab in your system settings, or the settings you wish to change cannot be changed through the GUI, follow the instructions below to configure system-wide via {{{/etc/X11/xorg.conf.d/synaptics.conf}}}. However, be aware that it is likely your desktop preferences, if you have them, will override your system-wide settings.

<<Anchor(Stretch)>>
=== Debian 9 "Stretch" ===

In [[#libinput|most cases]], make sure you have DebianPkg:xserver-xorg-input-libinput DebianPkg:xserver-xorg-input-evdev DebianPkg:xserver-xorg-input-mouse installed, and not the DebianPkg:xserver-xorg-input-synaptics package.

Read: https://en.wikipedia.org/wiki/Evdev for more info on evdev.

<<Anchor(Wheezy)>>
=== Debian 7 "Wheezy" ===

On GNOME, click the system menu (top-right corner), select System Settings, then select "Mouse and Touchpad" (under Hardware).

On KDE:
 1. Install the DebianPkg:kde-config-touchpad package.
 1. Open System Settings from the Kickoff Application Launcher, go to Input Devices (under Hardware) and select the "Touchpad" tab.

<<Anchor(Squeeze)>>
=== Debian 6.0 "Squeeze" ===

On GNOME, go to System -> Preferences -> Mouse, there should be a "Touchpad" tab.

On KDE:
 1. Install the DebianPkg:kde-config-touchpad package.
 1. Go to System Settings -> Input Devices, there should be a "Touchpad" tab.

== System-wide configuration ==

=== Read the manual ===

This manual will tell you all the options that are available for the synaptics driver:

{{{
man 4 synaptics
}}}

=== Override options in /etc/X11/xorg.conf.d/synaptics.conf ===

At start, Xorg reads vendor-supplied configuration commands from directory /usr/share/X11/xorg.conf.d (details in {{{man xorg.conf.d}}}).

If you want to override the defaults system-wide, use a file in {{{/etc/X11/xorg.conf.d}}}, e.g. {{{/etc/X11/xorg.conf.d/synaptics.conf}}}, for configuration (but this will work just as well in a combined {{{/etc/X11/xorg.conf}}} file). {{{/usr/share/X11/xorg.conf.d}}} contains distro-supplied samples which can be copied over (or at least keep an eye on their settings when creating your own configuration). The following example shows how to enable tapping and how to configure various other options; you probably won't need everything in it. Comment out any old config for synaptics before replacing it with this new config.

(DebianPkg:xserver-xorg-input-synaptics has tapping disabled by default for touchpads with one or more physical buttons; see {{{/usr/share/doc/xserver-xorg-input-synaptics/NEWS.Debian.gz}}}. For a list of available options, see {{{synclient -l}}} . Not all options are appropriate; for example, Elantech touchpads don't support pressure, and many other touchpads don't support multitouch.)

{{{
Section "InputClass"
 Identifier "Touchpad" # required
 MatchIsTouchpad "yes" # required
 Driver "synaptics" # required
 Option "MinSpeed" "0.5"
 Option "MaxSpeed" "1.0"
 Option "AccelFactor" "0.075"
 Option "TapButton1" "1"
 Option "TapButton2" "2" # multitouch
 Option "TapButton3" "3" # multitouch
 Option "VertTwoFingerScroll" "1" # multitouch
 Option "HorizTwoFingerScroll" "1" # multitouch
 Option "VertEdgeScroll" "1"
 Option "CoastingSpeed" "8"
 Option "CornerCoasting" "1"
 Option "CircularScrolling" "1"
 Option "CircScrollTrigger" "7"
 Option "EdgeMotionUseAlways" "1"
 Option "LBCornerButton" "8" # browser "back" btn
 Option "RBCornerButton" "9" # browser "forward" btn
Line 21: Line 95:
2. Restart X: close all unsaved documents, then ctrl-alt-backspace (you could also reboot) It is normal for a touchpad to be presented as both a Synaptics device and as an ImPS/2 device. If this is so, then {{{/var/log/Xorg.0.log}}} should show that X has found a touchpad on {{{/dev/input/event6}}} (for example) and probably also that it has failed to do so on {{{/dev/input/mouse0}}} (for example). This is fine.
Line 23: Line 97:
3. install a package to act as a control panel for the touchpad. I used gsynaptics; there are a number of choices, including ksynaptics and qsynaptics. === Multitouch ===
Line 25: Line 99:
4. Launch your control panel to finish configuration. The touchpad works as a mouse even before these steps, but with the control panel you can add the functionality of the right edge of the touchpad being a scroll cursor zone (like a mouse scroll wheel). If multitouch doesn't work for you, your hardware may not support it, but you can use the following options to emulate multitouch which allows most of the features to work. Try adding these lines to the Touchpad section (shown above):
Line 27: Line 101:
At this point, the touchpad works, including in firefox/iceweasel.

Read the rest of this page for more tips, which are still relevant to recent kernels.

=== Debian 3.1, kernel 2.6.10 ===
Here is my experience installing the software for a Synaptics touchpad on a Compaq Presario 1690 laptop. Note that this is based on a fresh Debian 3.1 testing install with a 2.6.10 kernel from unstable. Some config file lines may differ from your setup:

1. Using apt or the Synaptic Package Manager (not to be confused with the Synaptics touchpad software), install "xfree86-driver-synaptics". Then read and follow the package's README.Debian file since it is likely more up to date and correct than this document.

2. I recommend you install "qsynaptics" as well, or perhaps "ksynaptics" if you prefer; in this case I am using qsynaptics.

3. Open a terminal, "su" to root, and open "/etc/X11/[[XF86Config]]-4" in your text editor.

4. Add/replace in the "InputDevice" section for the touchpad the following lines:
Line 42: Line 102:
 Section "InputDevice"
  Identifier "Synaptics Mouse"
  Driver "synaptics"
  Option "Device" "/dev/psaux"
  Option "Protocol" "auto-dev"
  Option "LeftEdge" "1700"
  Option "RightEdge" "5300"
  Option "TopEdge" "1700"
  Option "BottomEdge" "4200"
  Option "FingerLow" "25"
  Option "FingerHigh" "30"
  Option "MaxTapTime" "180"
  Option "MaxTapMove" "220"
  Option "VertScrollDelta" "100"
  Option "MinSpeed" "0.09"
  Option "MaxSpeed" "0.18"
  Option "AccelFactor" "0.0015"
  Option "["SHMConfig"]" "on"
 # Option "Repeater" "/dev/ps2mouse"
 EndSection
        Option "EmulateTwoFingerMinZ" "35"
        Option "EmulateTwoFingerMinW" "8"
Line 64: Line 106:
5. Add/replace these lines to the "ServerLayout" section: You can check which buttons are reported in Xorg.0.log to see if you have multitouch. A touchpad without this capability reports only the usual "left", "right" and "middle" buttons:
Line 66: Line 109:
      Section "ServerLayout"
      ...
              InputDevice "ConfiguredMouse" "CorePointer"
              InputDevice "Generic Mouse" "AlwaysCore"
              InputDevice "Synaptics Mouse" "AlwaysCore"
      ...
$ grep "TouchPad: buttons:" /var/log/Xorg.0.log
(II) SynPS/2 Synaptics TouchPad: buttons: left right middle
Line 74: Line 113:
6. Save the file and restart X (Ctrl+Alt+Backspace). (You may have to reboot, as well. I don't know why, but it didn't work for me until I rebooted, and I'm not knowledgable enough to know what to do to make it work without rebooting.) A touchpad with multitouch reports "double" for two-finger multitouch and "triple" for three-finger multitouch:
Line 76: Line 115:
7. Log in to your GUI and try running qsynaptics or ksynaptics. If all is well, qsynaptics should report that all is well and you should be able to configure your touchpad. {{{
$ grep "TouchPad: buttons:" /var/log/Xorg.0.log
(II) SynPS/2 Synaptics TouchPad: buttons: left right middle double triple
}}}
Line 78: Line 120:
(Thanks to Craig Fields of houseofcraig.net for his assistance.) === Enable tapping on touchpad ===
Debian 9 "Stretch" is using libinput driver
Line 80: Line 123:
8. Firefox has the default configuration to interpret horizontal scrolling as back or forward button events. If you don't want this you can disable horizontal scrolling via qsynaptics or ksynaptics, but if you want to keep horizontal scrolling (e.g. for viewing large images) do the following:
 * open Mozilla/Firefox
 * enter about:config in the location bar
 * set mousewheel.horizscroll.withnokey.action to "0"
 * set mousewheel.horizscroll.withnokey.sysnumlines to "true"
(This is not stricktly about touchpad configuration, but there is a lot of wrong information on that configuration on google, so I thought it would be useful here.)
{{{
$ mkdir -p /etc/X11/xorg.conf.d
$ echo 'Section "InputClass"
        Identifier "libinput touchpad catchall"
        MatchIsTouchpad "on"
        MatchDevicePath "/dev/input/event*"
        Driver "libinput"
        Option "Tapping" "on"
EndSection' > /etc/X11/xorg.conf.d/40-libinput.conf
$ systemctl restart lightdm
}}}
Line 87: Line 135:
=== The syndaemon Helper ===
syndaemon is able to help with a number of things, including palm-check and such. one possibility for loading this at X startup for all users is to add a separate file in /etc/X11/Xsession.d (i.e. /etc/X11/Xsession.d/98x11-syndaemon){{{

== The syndaemon Helper ==
syndaemon is able to help with a number of things, including palm-check and such. one possibility for loading this at X startup for all users is to add a separate file in {{{/etc/X11/Xsession.d}}} (i.e. {{{/etc/X11/Xsession.d/98x11-syndaemon}}}){{{
Line 96: Line 145:
}}}This also loads settings from the qsynaptics controlpanel. This can of course be omited. If you leave it in, you should make sure all new users have sensible options set by copying a working .qsynaptics to /etc/skel. }}}This also loads settings from the qsynaptics control panel. This can of course be omitted. If you leave it in, you should make sure all new users have sensible options set by copying a working .qsynaptics to {{{/etc/skel}}}.

== Troubleshooting ==

=== Touchpad does not work after resuming from hibernate/suspend ===

Sometimes when resuming from hibernate/suspend mode, the touchpad may stop working, even if {{{synclient}}} reports it as activated.

The following solutions were reported to get the touchpad working again:

  * Switch to a console, then switch back to X again

or

  * Hibernate/suspend again, then resume again

or

  * Unload the touchpad kernel module, then load it again.
    '''Warning''': this should NOT be done from within an X session (or the X server will crash), but from a virtual console. E.g.:
    1. Go to a virtual console, press {{{Ctrl-Alt-F2}}}
    2. Log in as root and unload/load the relevant kernel module, e.g. {{{modprobe -r psmouse ; modprobe psmouse}}}
    3. Go back to the X session, press {{{Ctrl-Alt-F1}}}

<<Anchor(libinput)>>
=== Change to libinput Xorg driver in Debian 9 "Stretch" ===

The ''synaptic'' Xorg driver in being superseded by the newer ''libinput'' driver, which can provide lower-level access to multi touch events to clients, but is currently lacking some features found in the older driver.

You can make the ''synaptics'' driver take precedence over ''libinput'' by copying {{{/usr/share/X11/xorg.conf.d/50-synaptics.conf}}} into {{{/etc/X11/xorg.conf.d}}}, so as to make it take precendence over the libinput configuration file found at {{{/usr/share/X11/xorg.conf.d/90-libinput.conf}}}.

The {{{synclient}}} and {{{syndaemon}}} commands don't work with the ''libinput'' driver and will instead exit with an error message such as:

{{{
$ synclient
Couldn't find synaptics properties. No synaptics driver loaded?
$ syndaemon
Unable to find a synaptics device.
}}}

The ''synaptics'' driver is provided by DebianPkg:xserver-xorg-input-synaptics.
The ''libinput'' driver is provided by DebianPkg:xserver-xorg-input-libinput.

To reenable a disabled touchpad in gnome on stretch:
{{{
gsettings set org.gnome.desktop.peripherals.touchpad send-events 'enabled'
}}}

Some devices have function keys to enable and disable the touchpad; after the initial transition from the ''synaptics'' driver to the ''libinput'' driver, those devices may default to disabling the touchpad. Toggling the touchpad enable/disable keyboard key may be required to get the touchpad working again.
----
CategoryLaptopComputer CategoryHardware

Translation(s): English - Français - Italiano


Introduction

This document is applicable to squeeze, wheezy, jessie and stretch.

Determining the type of Touchpad

The following command will tell you whether you have a Synaptics, ALPS or Elantech touchpad:

egrep -i 'synap|alps|etps|elan' /proc/bus/input/devices

(Elantech support was enabled in Linux kernel 2.6.32-4.)

Desktop configuration

Some desktop environments such as GNOME and KDE can allow you to adjust settings of your touchpad through a graphical system settings panel.

If you can't find a Touchpad or Synaptics tab in your system settings, or the settings you wish to change cannot be changed through the GUI, follow the instructions below to configure system-wide via /etc/X11/xorg.conf.d/synaptics.conf. However, be aware that it is likely your desktop preferences, if you have them, will override your system-wide settings.

Debian 9 "Stretch"

In most cases, make sure you have xserver-xorg-input-libinput xserver-xorg-input-evdev xserver-xorg-input-mouse installed, and not the xserver-xorg-input-synaptics package.

Read: https://en.wikipedia.org/wiki/Evdev for more info on evdev.

Debian 7 "Wheezy"

On GNOME, click the system menu (top-right corner), select System Settings, then select "Mouse and Touchpad" (under Hardware).

On KDE:

  1. Install the kde-config-touchpad package.

  2. Open System Settings from the Kickoff Application Launcher, go to Input Devices (under Hardware) and select the "Touchpad" tab.

Debian 6.0 "Squeeze"

On GNOME, go to System -> Preferences -> Mouse, there should be a "Touchpad" tab.

On KDE:

  1. Install the kde-config-touchpad package.

  2. Go to System Settings -> Input Devices, there should be a "Touchpad" tab.

System-wide configuration

Read the manual

This manual will tell you all the options that are available for the synaptics driver:

man 4 synaptics

Override options in /etc/X11/xorg.conf.d/synaptics.conf

At start, Xorg reads vendor-supplied configuration commands from directory /usr/share/X11/xorg.conf.d (details in man xorg.conf.d).

If you want to override the defaults system-wide, use a file in /etc/X11/xorg.conf.d, e.g. /etc/X11/xorg.conf.d/synaptics.conf, for configuration (but this will work just as well in a combined /etc/X11/xorg.conf file). /usr/share/X11/xorg.conf.d contains distro-supplied samples which can be copied over (or at least keep an eye on their settings when creating your own configuration). The following example shows how to enable tapping and how to configure various other options; you probably won't need everything in it. Comment out any old config for synaptics before replacing it with this new config.

(xserver-xorg-input-synaptics has tapping disabled by default for touchpads with one or more physical buttons; see /usr/share/doc/xserver-xorg-input-synaptics/NEWS.Debian.gz. For a list of available options, see synclient -l . Not all options are appropriate; for example, Elantech touchpads don't support pressure, and many other touchpads don't support multitouch.)

Section "InputClass"
        Identifier      "Touchpad"                      # required
        MatchIsTouchpad "yes"                           # required
        Driver          "synaptics"                     # required
        Option          "MinSpeed"              "0.5"
        Option          "MaxSpeed"              "1.0"
        Option          "AccelFactor"           "0.075"
        Option          "TapButton1"            "1"
        Option          "TapButton2"            "2"     # multitouch
        Option          "TapButton3"            "3"     # multitouch
        Option          "VertTwoFingerScroll"   "1"     # multitouch
        Option          "HorizTwoFingerScroll"  "1"     # multitouch
        Option          "VertEdgeScroll"        "1"
        Option          "CoastingSpeed"         "8"
        Option          "CornerCoasting"        "1"
        Option          "CircularScrolling"     "1"
        Option          "CircScrollTrigger"     "7"
        Option          "EdgeMotionUseAlways"   "1"
        Option          "LBCornerButton"        "8"     # browser "back" btn
        Option          "RBCornerButton"        "9"     # browser "forward" btn
EndSection

It is normal for a touchpad to be presented as both a Synaptics device and as an ImPS/2 device. If this is so, then /var/log/Xorg.0.log should show that X has found a touchpad on /dev/input/event6 (for example) and probably also that it has failed to do so on /dev/input/mouse0 (for example). This is fine.

Multitouch

If multitouch doesn't work for you, your hardware may not support it, but you can use the following options to emulate multitouch which allows most of the features to work. Try adding these lines to the Touchpad section (shown above):

        Option          "EmulateTwoFingerMinZ"  "35"
        Option          "EmulateTwoFingerMinW"  "8"

You can check which buttons are reported in Xorg.0.log to see if you have multitouch. A touchpad without this capability reports only the usual "left", "right" and "middle" buttons:

$ grep "TouchPad: buttons:" /var/log/Xorg.0.log
(II) SynPS/2 Synaptics TouchPad: buttons: left right middle

A touchpad with multitouch reports "double" for two-finger multitouch and "triple" for three-finger multitouch:

$ grep "TouchPad: buttons:" /var/log/Xorg.0.log
(II) SynPS/2 Synaptics TouchPad: buttons: left right middle double triple

Enable tapping on touchpad

Debian 9 "Stretch" is using libinput driver

$ mkdir -p /etc/X11/xorg.conf.d
$ echo 'Section "InputClass"
        Identifier "libinput touchpad catchall"
        MatchIsTouchpad "on"
        MatchDevicePath "/dev/input/event*"
        Driver "libinput"
        Option "Tapping" "on"
EndSection' > /etc/X11/xorg.conf.d/40-libinput.conf
$ systemctl restart lightdm

The syndaemon Helper

syndaemon is able to help with a number of things, including palm-check and such. one possibility for loading this at X startup for all users is to add a separate file in /etc/X11/Xsession.d (i.e. /etc/X11/Xsession.d/98x11-syndaemon)

# This file is sourced by Xsession(5), not executed.

# Load settings from ~/.qsynaptics
/usr/bin/qsynaptics -r

# start synaptics daemon to enable proper communication with touchpad
/usr/bin/syndaemon -d -t -k -i 1

This also loads settings from the qsynaptics control panel. This can of course be omitted. If you leave it in, you should make sure all new users have sensible options set by copying a working .qsynaptics to /etc/skel.

Troubleshooting

Touchpad does not work after resuming from hibernate/suspend

Sometimes when resuming from hibernate/suspend mode, the touchpad may stop working, even if synclient reports it as activated.

The following solutions were reported to get the touchpad working again:

  • Switch to a console, then switch back to X again

or

  • Hibernate/suspend again, then resume again

or

  • Unload the touchpad kernel module, then load it again.
    • Warning: this should NOT be done from within an X session (or the X server will crash), but from a virtual console. E.g.:

    • Go to a virtual console, press Ctrl-Alt-F2

    • Log in as root and unload/load the relevant kernel module, e.g. modprobe -r psmouse ; modprobe psmouse

    • Go back to the X session, press Ctrl-Alt-F1

Change to libinput Xorg driver in Debian 9 "Stretch"

The synaptic Xorg driver in being superseded by the newer libinput driver, which can provide lower-level access to multi touch events to clients, but is currently lacking some features found in the older driver.

You can make the synaptics driver take precedence over libinput by copying /usr/share/X11/xorg.conf.d/50-synaptics.conf into /etc/X11/xorg.conf.d, so as to make it take precendence over the libinput configuration file found at /usr/share/X11/xorg.conf.d/90-libinput.conf.

The synclient and syndaemon commands don't work with the libinput driver and will instead exit with an error message such as:

$ synclient
Couldn't find synaptics properties. No synaptics driver loaded?
$ syndaemon
Unable to find a synaptics device.

The synaptics driver is provided by xserver-xorg-input-synaptics. The libinput driver is provided by xserver-xorg-input-libinput.

To reenable a disabled touchpad in gnome on stretch:

gsettings set org.gnome.desktop.peripherals.touchpad send-events 'enabled'

Some devices have function keys to enable and disable the touchpad; after the initial transition from the synaptics driver to the libinput driver, those devices may default to disabling the touchpad. Toggling the touchpad enable/disable keyboard key may be required to get the touchpad working again.


CategoryLaptopComputer CategoryHardware