ubuntuusers.de » Wiki » Touchpad

Touchpad

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Touchpads funktionieren unter Ubuntu im Regelfall anstandslos. Mit dem Synaptics-Treiber steht für beliebige Touchpads sogar ein mächtiges Instrument zur Verfügung, mit dem sich die unterschiedlichsten Funktionen ein- und ausstellen lassen und sogar in eine regelrechte Multimedia-Maus verwandelt werden können. Die Einrichtung erfolgt dabei über HAL. Bis Gutsy Gibbon muss die xorg.conf editiert werden, was hier aber nichtmehr besprochen wird; einige Änderungen lassen sich aber auch über graphische Oberflächen erledigen.

Vorbereitung

Voraussetzung für das Betreiben eines beliebigen Touchpads ist die Installation [1] des X.org-Treibers:

  • xserver-xorg-input-synaptics

Der Treiber sollte allerdings schon bei der Installation von Ubuntu automatisch installiert worden sein.

Einrichtung

HAL

Die Einrichtung des Touchpads erfolgt über HAL.

Hinweis:

Falls eine Version ab Intrepid Ibex genutzt wird und keine Parameter von Hand gesetzt werden sollen, kann dieser Abschnitt übersprungen werden und beispielsweiße direkt SHM aktiviert werden.

Zur Konfiguration ist bereits eine Beispieldatei vorhanden. Diese über das Terminal [3] kopieren

sudo cp /usr/share/hal/fdi/policy/20thirdparty/11-x11-synaptics.fdi /etc/hal/fdi/policy/11-x11-synaptics.fdi 

und dann mit einem Editor mit root Rechten bearbeiten.

Das folgende Beispiele bestimmt den zu nutzenden Treiber und aktiviert kreisförmiges Scrollen mit Start oben links für ein Synaptics Touchpad.

1
2
3
4
5
6
7
...
    <match key="info.capabilities" contains="input.touchpad">
        <merge key="input.x11_driver" type="string">synaptics</merge>
        <merge key="input.x11_options.CircularScrolling" type="string">true</merge>
        <merge key="input.x11_options.CircScrollTrigger" type="string">8</merge>
    </match>
...

Dabei ist darauf zu achten, dass keinerlei Einträge für das Touchpad mehr in der xorg.conf enthalten sind.

Parameter

Die Parameter können auch unter man synaptics nachgeschlagen werden.

Grundeinstellungen

Option Typ Verhalten
Device "Text" Die Gerätedatei: Automatische Erkennung (Standard) oder Pfad (wird ignoriert, wenn als Protokoll "auto-dev" verwendet wird).
Protocol "Text" Das zu verwendende Protokoll: "autodev" (Standard), "psaux" (Rohdaten) oder "event" (Kernel-Events).
SHMConfig "True" oder "False" Die Möglichkeit, das Touchpad im laufenden Betrieb umzukonfigurieren: "False" (Standard) oder "True"

Verhalten

Für die Konfiguration der folgenden Parameter bietet es sich an ein grafisches Werkzeug zu verwenden.

Tapping und Klick-Verhalten

Option Typ Verhalten
FingerHigh "ganze Zahl" Gibt den Schwellenwert an, ab wann eine Berührung als Druck erkannt wird.
PalmDetect "on" oder "off" Erkennt versehentliches Tippen mit der Handfläche als ungültig.
MaxTapTime "ganze Zahl" Gibt in Millisekunden an, wie lange eine Berührung sein darf, um als Klick erkannt zu werden. Der Wert "0" schaltet Klicks mit dem Touchpad selbst ganz ab.
MaxTapMove "ganze Zahl" Gibt an, wie weit sich eine Berührung bewegen darf, um als Klick erkannt zu werden.
MaxDoubleTapTime "ganze Zahl" Gibt in Millisekunden an, wie lange zwei Berührungen nacheinander sein dürfen, um als Doppelklick erkannt zu werden.
LTCornerButton "ganze Zahl" Gibt an, welcher Mausbutton durch Tippen in die linke obere Ecke ausgelöst wird (LT = left-top, analog die anderen drei Ecken LB, RT und RB).
TapButton1 "ganze Zahl" Gibt an, welcher Mausbutton beim Tippen mit einem Finger in die Mitte des Touchpads ausgelöst wird (Analog für zwei oder drei Finger).

Cursor-Geschwindigkeit

Option Typ Verhalten
MinSpeed "Zahl" Stellt die Minimalgeschwindigkeit des Zeigers ein.
MaxSpeed "Zahl" Stellt die Maximalgeschwindigkeit des Zeigers ein
AccelFactor "Zahl" Stellt die Beschleunigung von Minimalgeschwindigkeit zu Maximalgeschwindigkeit ein

Scrollen

Option Typ Verhalten
VertTwoFingerScroll "True" oder "False" Aktiviert das vertikale Scrollen mit zwei Fingern auf dem Touchpad. Hinweis: Wenn diese Optionen aktiviert sind, sollten VertEdgeScroll und HorizEdgeScroll sinnvoller Weise deaktiviert sein.
HorizTwoFingerScroll "True" oder "False" Aktiviert das horizontale Scrollen mit zwei Fingern auf dem Touchpad.
VertEdgeScroll "True" oder "False" Aktiviert die Nutzung des rechten Randes als vertikalen Scrollbalken. Hinweis: Wenn diese Optionen aktiviert sind, sollten VertTwoFingerScroll und HorizTwoFingerScroll sinnvoller Weise deaktiviert sein.
HorizEdgeScroll "True" oder "False" Aktiviert die Nutzung des unteren Randes als horizontalen Scrollbalken.
VertScrollDelta "ganze Zahl" Legt fest, ab welcher Distanz in vertikaler Richtung eine Bewegung als Scrollen anerkannt wird.
HorizScrollDelta "ganze Zahl" Legt fest, ab welcher Distanz in horizontaler Richtung eine Bewegung als Scrollen anerkannt wird.
CircularScrolling "True" oder "False" Aktiviert kreisförmiges Scrollen.
CircScrollTrigger "ganze Zahl" Legt fest, wo das kreisförmige Scrollen begonnen werden muss. 0 Alle Seiten und Ecken; 1 Obere Seite; 2 Obere, rechte Ecke; 3 Rechte Seite; 4 Untere, Rechte Ecke; 5 Untere Seite; 6 Untere, Linke Ecke; 7 Linke Seite; 8 Obere, Linke Ecke
CornerCoasting "on" oder "off" Weiterscrollen, wenn der Finger bei EdgeScroll in der Ecke angekommen ist.

Die Scroll-Einstellungen für Firefox finden sich in Firefox/Mausfunktionen.

SHMConfig

Für die Verwendung einiger Programme ist es nötig den Parameter "SHMConfig" auf "True" zu setzen. Das Aktiveren dieses Parameters erlaubt den Zugriff externer Anwendungen auf die Einstellungen des Touchpad-Treibers.

Dafür folgenden Code unter /etc/hal/fdi/policy/shmconfig.fdi speichern:

1
2
3
4
5
6
7
8
<?xml version="1.0" encoding="ISO-8859-1"?>
<deviceinfo version="0.2">
 <device>
  <match key="input.x11_driver" string="synaptics">
   <merge key="input.x11_options.SHMConfig" type="string">True</merge>
  </match>
 </device>
</deviceinfo>

Grafische Einstellungen

Die grundlegenden Funktionen von Touchpads können unter Ubuntu komfortabel über

  • System -> Einstellungen -> Maus -> Touchpad

eingestellt werden. Hier kann man unter anderem das Touchpad komplett deaktivieren als auch das Tapping an- und ausschalten.

Weitere Einstellungsmöglichkeiten bietet das Programm gsynaptics (universe [2]) für GNOME, wofür zuvor SHM aktiviert werden muss.

Das auf Qt4 basierende Programm touchfreeze (universe [2]) bietet die Möglichkeit das Touchpad an- und auszuschalten und deaktiviert das Tapping, solange der Nutzer eine Eingabe auf der Tastatur tätigt. Auch hierfür muss SHM aktiviert werden.

Hinweis:

Als Alternative für touchfreeze bietet sich, vor allem für GNOME Nutzer, syndaemon an, da dafür kein Qt nachinstalliert werden muss.

Einrichten

Das Programm gsynaptics kann man unter

  • System -> Systemverwaltung -> Touchpad

öffnen. Mit Hilfe einer grafischen Bedienoberfläche kann das Synaptics Touchpad bei Bedarf an- oder ausgeschaltet werden.

Um touchfreeze zu starten muss nur der Menüpunkt

  • Anwendungen -> Zubehör -> TouchFreeze

angewählt werden. Daraufhin erscheint ein Touchpad Symbol in der Symbolleiste über welches TouchFreeze eingerichtet werden kann.

Probleme

Falls in einer der graphischen Oberflächen die Einstellmöglichkeiten deaktiviert sind und stattdessen Fehlermeldungen angezeigt werden (Treiber nicht installiert, X Shared Memory nicht aktiviert), wurde "SHMConfig" nicht auf "True" gesetzt (s.o.).

Touchpad ein- und ausschalten

Mit der Hilfe von syndaemon

Touchpad beim Schreiben deaktivieren

Am Praktischsten ist es, das Touchpad nur während des Schreibens auf der Tastatur zu deaktivieren.

Durch folgenden Befehl kann man das Touchpad während des Schreibens deaktivieren:

syndaemon -i 2 -d

#option -i gibt die Sperrzeit in Sekunden an
#falls ihr hier eine Fehlermeldung erhaltet, benutzt noch die Option -S 

Bei Erfolg kann man das auch automatisch bei der Anmeldung geschehen lassen.[5]

Tapping des Touchpads beim Schreiben deaktivieren

Eine nicht so restriktive aber möglicherweise effizientere Variante ist, das Tapping, also Mausklicks, die durch doppelte Berührung des Touchpads ausgelöst werden, während des Schreibens auf der Tastatur zu deaktivieren. So kann man trotzdem schnell zwischen Tastatur und Touchpad wechseln und genauso komfortabel wie gewohnt arbeiten. Der dazu benötigte Parameter wäre:

syndaemon -i 2 -d -t

#option -i gibt die Sperrzeit in Sekunden an
#option -t deaktiviert das Tapping

Mit der Hilfe von synclient

Das Programm synclient dient zur Konfiguration des Touchpads zur Laufzeit. Für die Verwendung wird jedoch SHM benötigt.

Touchpad mit Tastenkürzel ein- und ausschalten

Voraussetzung ist, dass folgende Pakete installiert sind [1]:

  • xbindkeys (universe, [2])

  • libnotify-bin (universe, [2])

Nun wechselt man ins Verzeichnis /usr/local/bin und erstellt die Datei touchpad.py in einem Editor[4] mit Root-Rechten und fügt Folgendes in diese Datei ein:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#!/usr/bin/python
# -*- coding: utf-8 -*-
# Benötigt libnotify-bin sowie SHMConfig

import subprocess
import shlex

def read_touchpad_config():
    proc = subprocess.Popen(['synclient', '-l'], stdout=subprocess.PIPE)
    config = {}
    for i, line in enumerate(proc.stdout):
        # remove first line, which does only contain a headline
        if i == 0: continue
        key, _, value = shlex.split(line)
        config[key] = value
    return config


def toggle_touchpad_state(current_state):
    subprocess.call(['synclient', 'TouchpadOff=%i' % (not current_state)])

def send_notify():
    config = read_touchpad_config()
    if config['TouchpadOff'] == '1':
        subprocess.Popen(['notify-send', 'Touchpad', 'Das Touchpad wurde ausgeschaltet', '-t', '2000'])
    else:
        subprocess.Popen(['notify-send', 'Touchpad', 'Das Touchpad wurde eingeschaltet', '-t', '2000'])

def main():
    config = read_touchpad_config()
    toggle_touchpad_state(config['TouchpadOff'] == '1')
    send_notify()

if __name__ == '__main__':
    main()

Nun muss die Datei nur noch ausführbar gemacht werden [8].

In der Konfiguration von xbindkeys wird dann der Eintrag eingefügt:

# Touchpad Control
"/usr/local/bin/touchpad.py"
   Control+F5

Abschließend muss xbindkeys neu gestartet werden. Danach sollte es möglich sein mit der Tastenkombination Strg + F5 das Touchpad aus- und wieder einschalten zu können.

Touchpad in Abhängigkeit einer Maus ein- und ausschalten

Um auf Änderungen an der Hardware reagieren zu können, muss eine Regel für udev geschrieben werden. Dazu wird die Datei /etc/udev/rules.d/99-touchpad.rules erstellt.

sudo touch /etc/udev/rules.d/99-touchpad.rules 

Die Datei danach mit root Rechten [4] öffnen. Folgende Regel veranlasst udev dazu das Touchpad mit Hilfe des Programmes synclient zu aktiveren, wenn eine Maus abgeschlossen bzw zu deaktivieren, wenn eine Maus angeschlossen wird.

ACTION=="add", SUBSYSTEM=="input", ENV{ID_CLASS}=="mouse", RUN+="/usr/bin/synclient TouchpadOff=1"
ACTION=="remove", SUBSYSTEM=="input", ENV{ID_CLASS}=="mouse", RUN+="/usr/bin/synclient TouchpadOff=0"

Dies in die Datei einfügen und abspeichern. Die Regel wird sofort aktiv, sobald das nächste mal eine Maus an- oder abgesteckt wird.

Zu guter letzt muss man unter Gnome noch über "System -> Einstellungen -> Maus" bei dem Punkt "Touchpad" den Haken bei "Touchpad aktivieren" entfernen, da Gnome das Touchpad sonst jedes mal von allein aktivieren würde, wenn sich etwas an der Eingabe-Hardware ändert und somit das Touchpad immer eingeschaltet wäre.

Automatische Touchpad-Verwaltung

Wenn das Touchpad automatisch beim Anschließen einer Maus ausgeschaltet und beim Entfernen der Maus wieder eingeschaltet werden soll, lassen sich dazu diese Skripte verwenden.

Problembehebungen

Identifikation

Falls man nicht weiß, welches Touchpad-Modell im Notebook eingebaut ist oder wie man es findet, gibt man Folgendes in ein Terminal ein [3]:

grep -B 5 mouse /proc/bus/input/devices 

Wenn u.a. der folgende Eintrag erscheint, besitzt das Gerät ein Synaptics-Touchpad:

I: Bus=0011 Vendor=0002 Product=0007 Version=0000
N: Name="SynPS/2 Synaptics TouchPad"

Wenn Ähnliches wie im folgenden Textfeld erscheint, besitzt das Gerät ein Alps-Touchpad:

I: Bus=0011 Vendor=0002 Product=0008 Version=6337
N: Name="AlpsPS/2 ALPS GlidePoint"

Sollten nur allgemeine Mauseinträge und insbesondere bloß ein Eintrag "PS/2 Generic Mouse", aber kein spezifischer Touchpad-Block erscheinen, so wird das Touchpad offenbar nicht automatisch erkannt. Mögliche Abhilfe dazu gibts bei den Problemlösungen.

Sollte das Modell ein "ETPS/2 Elantech Touchpad" sein, ist das psmouse-Modul neu zu laden. In einem Terminal folgendes eingeben:

sudo modprobe -r psmouse
sudo modprobe psmouse proto=imps 

Jetzt sollte das Touchpad zunächst funktionieren.

Für eine dauerhafte Lösung sollte man folgenden Eintrag in der Datei /etc/modprobe.d/options eintragen:

options psmouse proto=imps

Siehe Bug-Report: https://bugs.launchpad.net/bugs/315882, Kommentar

Gerätedatei falsch zugewiesen

Wenn das Touchpad in /proc/bus/input/devices zwar erkannt wird, aber dennoch nicht die erweiterten Funktionen bietet, dann könnte Folgendes die Ursache sein:

Gelegentlich tritt das Problem auf, dass in /var/log/Xorg.0.log der Synaptics-Treiber immer wieder mit /dev/input/event1 starten will, obwohl in der xorg.conf /dev/input/event2 angegeben ist, weil dort laut /proc/bus/input/devices das Touchpad bekannt ist.

Der Treiber ignoriert die Angabe

Option "Device" "/dev/psaux"

wenn es auch ein

Option "Protocol" "auto-dev"

gibt, denn auto-dev sucht sich, wie sein Name schon sagt, automatisch eine Gerätedatei ("Device").

Abhilfe schafft diese Angabe:

Option "Protocol" "event"
Option "Device" "/dev/input/event2"

Da nun der Synaptics-Treiber tatsächlich an event2 gebunden ist, funktionieren auch die ganzen Zusatzfunktionen. Wichtig: psmouse muss geladen sein, damit das Touchpad gefunden wird.

Gerätedatei wechselt

Gelegentlich kommt es vor, dass udev beim Booten dem Touchpad eine andere Gerätedatei zuweist als dies beim letzten Booten geschehen ist. Dabei kann die folgende Udev-Regel Abhilfe schaffen:

SUBSYSTEM=="input", KERNEL=="event*", SYSFS{name}=="AlpsPS/2 ALPS GlidePoint", SYMLINK+="input/touchpad"

Der Name des Touchpads muss natürlich angepasst werden, er steht in /proc/bus/input/devices:

I: Bus=0011 Vendor=0002 Product=0008 Version=7321
N: Name="AlpsPS/2 ALPS GlidePoint"
...
H: Handlers=mouse3 event11

Momentan hat das Touchpad also eine Gerätedatei unter /dev/input/event11. Durch die oben angegebene Udev-Regel wird beim Booten automatisch ein symbolischer Link auf die aktuelle Gerätedatei unter /dev/input/touchpad abgelegt, der immer auf die korrekte Gerätedatei verweist. Wird dieser Link nun in Konfigurationsdateien verwendet, gibt es keine Probleme mehr, auch wenn das Touchpad beim nächsten Booten einen anderen Handler bekommt.

Touchpad wird nicht erkannt

Wird das Touchpad nur sporadisch erkannt, und andernfalls nur wie eine gewöhnliche Maus angesprochen, so hilft unter Umständen ein zusätzlicher Eintrag in der menu.lst. Dazu öffnet man mit einem Texteditor mit Root-Rechten [4] die Datei /boot/grub/menu.lst und hängt an die Zeile kopt= folgenden Wert an:

i8042.reset

Anschließend führt man sudo update-grub aus. Nach einem Reboot sollte das Touchpad korrekt erkannt werden.

In neuesten Dells oder Thinkpads kann es auch vorkommen, dass das Touchpad gar nicht erkannt wird. Es wird dann wie eine gewöhnliche Maus angesprochen, so dass nur die Zeigerbewegung und linke und rechte Tasten funktionieren. Um das Touchpad erkennen zu lassen, muss das psmouse-Modul gepatcht werden. Folgende Pakete sind dazu nötig [1]:

  • build-essential

  • linux-headers-<VERSION>

  • linux-source-<VERSION>

In /usr/src/ finden sich nun die Quellen des aktuellen Kernels in einem Archiv; dieses ist in dasselbe Verzeichnis zu entpacken. Nun gilt es, die Datei /usr/src/linux-source-<VERSION>/drivers/input/mouse/alps.c zu editieren [4] (zudem ist es sicherlich nicht falsch, zuerst von der alten alps.c eine Sicherungsdatei zu erstellen). Dort lauten die Zeilen 53-55:

        { { 0x20, 0x02, 0x0e }, 0xf8, 0xf8, ALPS_PASS | ALPS_DUALPOINT }, /* XXX */
        { { 0x22, 0x02, 0x0a }, 0xf8, 0xf8, ALPS_PASS | ALPS_DUALPOINT },
        { { 0x22, 0x02, 0x14 }, 0xff, 0xff, ALPS_PASS | ALPS_DUALPOINT }, /* Dell Latitude D600 */

Daran anschließend ist folgende Zeile einzufügen:

        { { 0x73, 0x02, 0x50 }, 0x4f, 0x4f, ALPS_FW_BK_1 }, /* beliebiger Kommentar, zB Modellnamen des verwendeten PCs */

Der ganze Abschnitt (Zeilen 51-57) sollte dann folgendermaßen aussehen:

        { { 0x73, 0x02, 0x0a }, 0xf8, 0xf8, 0 },
        { { 0x73, 0x02, 0x14 }, 0xf8, 0xf8, ALPS_FW_BK_2 },             /* Ahtec Laptop */
        { { 0x20, 0x02, 0x0e }, 0xf8, 0xf8, ALPS_PASS | ALPS_DUALPOINT }, /* XXX */
        { { 0x22, 0x02, 0x0a }, 0xf8, 0xf8, ALPS_PASS | ALPS_DUALPOINT },
        { { 0x22, 0x02, 0x14 }, 0xff, 0xff, ALPS_PASS | ALPS_DUALPOINT }, /* Dell Latitude D600 */
        { { 0x73, 0x02, 0x50 }, 0x4f, 0x4f, ALPS_FW_BK_1 }, /* Dell Vostro 1400 */
};

Die Datei ist zu speichern.

Nun müssen die Maustreiber neu kompiliert werden; das geht in einem Terminal [3] mit folgenden zwei Befehlen:

cd /usr/src/linux-source-<VERSION>/drivers/input/mouse/         # wechselt ins Verzeichnis der Treiber-Quellen
sudo make -C /lib/modules/`uname -r`/build M=`pwd`              # kompiliert den Treiber mit den Vorgaben des aktuellen Kernels 

Schließlich sind die neuen Treiber in den aktuellen Kernel hinüberzukopieren (auch hier ist es sinnvoll, eine Sicherungsdatei der alten Treiber zu erstellen):

sudo cp /usr/src/linux-source-<VERSION>/drivers/input/mouse/*.ko /lib/modules/<VERSION>/kernel/drivers/input/mouse/ 

Das psmouse-Modul ist nun noch zu entladen und danach wieder zu laden:

sudo modprobe -r psmouse
sudo modprobe psmouse 

Das Touchpad sollte nun erkannt werden und über die xorg.conf wie oben beschrieben konfigurierbar sein.

Touchpad reagiert merkwürdig

Manchmal kann es sein, dass das Touchpad merkwürdig reagiert und ein gewisses Eigenleben an den Tag legt. Der Mauszeiger hüpft hin und her und Verknüpfungen und Links werden einfach geöffnet während die Maus selbstständig drüberfährt. In diesem Fall kann ein zusätzlicher Eintrag in der menu.lst das Problem beheben. Dazu öffnet man mit einem Texteditor mit Root-Rechten [4] die Datei /boot/grub/menu.lst und fügt die Zeile

# acpi_osi=Linux

hinzu und führt sudo update-grub aus. Nach dem nächsten Neustart sollte das merkwürdige Verhalten des Touchpads damit passé sein.

Dell XPS-Notebooks mit ALPS Touchpads

Bei Dell-Notebooks verhält sich das Touchpad seit dem Bios-Update auf Version A08 sehr merkwürdig, das Touchpad rast unkontrollierbar über den Bildschirm und es werden überall Sachen angeklickt. Dieses Verhalten lässt sich über einen Parameter in /boot/grub/menu.lst beheben. Dazu muss an die Zeile kopt= der folgende Parameter angehängt werden:

i8042.nomux=1

Anschließend führt man noch

sudo update-grub 

aus. Nach einem Reboot sollte es dann funktionieren.

Sollte trotz der in der xorg.conf eingetragenen Zeile

    Option "SHMConfig" "on"

SHMConfig nicht starten, so kann es an der Zuteilung des Parameters "CorePointer" liegen. Dieser sollte dem Touchpad zugewiesen werden. Die übrigen Devices setzt man entsprechend den Anweisungen dieses Artikels {de} auf "AlwaysCore".

Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0"
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Synaptics Touchpad" "CorePointer"
    InputDevice    "Mouse0" "AlwaysCore"
EndSection

Diese Revision wurde am 19. November 2009 um 14:50 Uhr von Bennerl erstellt.
Dieser Seite wurden folgende Begriffe zugeordnet: synaptics, touchpad, Hardware

Passwort vergessen?