fixed egrep command to detect touchpad type
Mention Stretch info more prominently.
|Deletions are marked like this.||Additions are marked like this.|
|Line 27:||Line 27:|
=== Debian 9 "Stretch" ===
In [[#libinput|most cases]], make sure you have the DebianPkg:xserver-xorg-input-libinput package installed, and not the DebianPkg:xserver-xorg-input-synaptics package.
|Line 146:||Line 151:|
|<<Anchor(Change to libinput)>>||<<Anchor(libinput)>>|
- Determining the type of Touchpad
- Desktop configuration
- System-wide configuration
- The syndaemon Helper
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.)
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"
Debian 7 "Wheezy"
On GNOME, click the system menu (top-right corner), select System Settings, then select "Mouse and Touchpad" (under Hardware).
Install the kde-config-touchpad package.
- 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.
Install the kde-config-touchpad package.
Go to System Settings -> Input Devices, there should be a "Touchpad" tab.
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.
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
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.
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
- Hibernate/suspend again, then resume again
- 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.
To reenable a disabled touchpad in gnome on stretch:
gsettings set org.gnome.desktop.peripherals.touchpad send-events 'enabled'