Dieser Anleitung fehlen noch einige Informationen. Wenn Du etwas verbessern kannst, dann editiere den Beitrag, um die Qualität des Wikis noch weiter zu verbessern.
Anmerkung: der Abschnitt Problembehebungen enthält noch Hinweise zum Bootmanager GRUB. Unter Ubuntu wird aber seit der Version 9.10 der Nachfolger GRUB 2 verwendet.
Die Hinweise in diesem Artikel HAL betreffend sind nicht mehr aktuell und müssen überarbeitet werden. Bitte keine HAL policy Dateien anlegen. Die Verwaltung von Eingabegeräten läuft seit Ubuntu 10.04 über udev - siehe Alps (Synaptics) touchpad configuration in Lucid and Maverick Meerkat .
Ubuntu 10.04 „Lucid Lynx“
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 ab Ubuntu 10.04 erfolgt über xorg.conf.d-Dateien, udev-Regeln oder die grafische Betriebssystem-Oberfläche.
Voraussetzung für das Betreiben eines beliebigen Touchpads ist die Installation [1] des X.org-Treibers:
xserver-xorg-input-synaptics
mit apturl
Paketliste zum Kopieren:
sudo apt-get install xserver-xorg-input-synaptics
sudo aptitude install xserver-xorg-input-synaptics
Der Treiber sollte bei der Installation von Ubuntu automatisch installiert worden sein.
Der synaptics-Treiber ermöglichst eine sehr detaillierte Konfiguration der Parameter. Die meisten dieser Einstellungen sind nicht über die grafische Oberfläche konfigurierbar. Allerdings sind diese Einstellungen optional, eine Beschäftigung mit diesen ist also empfehlenswert, wenn man mit dem Verhalten des Touchpads nicht zufrieden ist. Ist das nicht der Fall, kann diese Sektion übersprungen werden.
Bis Ubuntu 8.10 geschieht die Konfiguration über HAL, ab Ubuntu 9.04 über udev. Beides wird in dieser Sektion erklärt.
Um herauszufinden, welche Parameter man wie setzen muss, kann man im Terminal [2] mit synclient experimentieren.
Zur Konfiguration ist bereits eine Beispieldatei vorhanden. Diese über das Terminal [2] 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. Mögliche Einstellungen sind im Abschnitt Parameter erläutert. Dabei sind auch die angegebenen Datentypen zu beachten, die mit dem type
Parameter übergeben werden: type="string"
für Text, type="boolean"
für on/off, 1/0 oder true/false, type="float"
für Gleitkommazahlen, sowie type="integer"
für ganze Zahlen.
Standardmäßig werden die Einstellungen für das Touchpad (unter Anderem) aus der Datei /usr/share/X11/xorg.conf.d/50-synaptics.conf geladen. Für eine manuelle Konfiguration sollte eine Kopie dieser Datei mit anderem Namen angelegt werden.
Falls in Ubuntu 10.04 der Ordner /use/share/X11/xorg.conf.d/ nicht existiert, muss für alle folgenden Beispiele der Ordner /etc/lib/X11/xorg.conf.d/ verwendet werden.
Die Kopie kann im Terminal [2] mit dem folgenden Befehl realisiert werden.
sudo cp /usr/share/X11/xorg.conf.d/50-synaptics.conf /usr/share/X11/xorg.conf.d/51-synaptics-userdefined.conf
Der Dateiname kann bis auf zwei Dinge frei gewählt werden:
Die Zahl am Anfang sollte größer als 50 sein, damit die Datei nach der 50-synaptics.conf geladen wird
Der Dateiname muss mit .conf enden
Die neue Datei kann nun mit einem Editor [3] mit Root-Rechten [6] geöffnet werden. Der relevante Block ist Section "InputClass"
, sodass alles Andere gelöscht werden kann. Der prinzipielle Aufbau ist wie folgt.
1 2 3 4 5 6 7 8 9 10 11 | Section "InputClass" Identifier "touchpad catchall" Driver "synaptics" MatchIsTouchpad "on" MatchDevicePath "/dev/input/event*" Option "SHMConfig" "off" Option "LeftEdge" "1600" Option "RightEdge" "5400" Option "TopEdge" "1500" Option "BottomEdge" "4500" EndSection |
Dieses Beispiel entspricht bereits dem Inhalt einer funktionierenden Datei. Die Option
Parameter sind nach den eigenen Bedürfnissen anzupassen. Mögliche Optionen sind im Abschnitt Parameter angegeben.
Die Parameter können auch unter Manpage für synaptics
nachgeschlagen werden.
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" |
Für die Konfiguration der folgenden Parameter bietet es sich an ein grafisches Werkzeug zu verwenden.
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). |
Option | Typ | Verhalten |
MinSpeed | "Gleitkommazahl" | Stellt die Minimalgeschwindigkeit des Zeigers ein. |
MaxSpeed | "Gleitkommazahl" | Stellt die Maximalgeschwindigkeit des Zeigers ein |
AccelFactor | "Gleitkommazahl" | Stellt die Beschleunigung von Minimalgeschwindigkeit zu Maximalgeschwindigkeit ein |
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.
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.
Die Option wird über die Konfiguration mittels xorg.conf.d eingeschaltet. Hierzu muss eine Datei angelegt werden, wie es im Abschnitt udev erklärt wird. Zur Aktivierung von SHM muss die Option SHMConfig
auf on
gesetzt werden, wie im folgenden Beispiel.
1 2 3 4 5 6 7 | Section "InputClass" Identifier "touchpad catchall" Driver "synaptics" MatchIsTouchpad "on" MatchDevicePath "/dev/input/event*" Option "SHMConfig" "on" EndSection |
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> |
Das Programm synclient dient zur Konfiguration des Touchpads zur Laufzeit. Für die Verwendung wird jedoch SHM benötigt. Es kann über ein Terminal [2] mit verschiedenen Parametern aufgerufen werden. Beispiele:
Untersuchung des Verhaltens bei Druck und Auslesen der x- und y-Grenzen:
synclient -m 100
Auflisten aller Parameter:
synclient -l
Editieren eines Parameters:
synclient AccelFactor=0.15
Siehe GNOME3 Systemeinstellungen.
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 UND auch das Tapping an- und ausschalten.
Weitere Einstellungsmöglichkeiten für GNOME bietet das Programm gsynaptics, wofür zuvor SHM aktiviert werden muss. Das Programm kann man unter
"System -> Einstellungen -> Touchpad"
öffnen. Mit Hilfe einer grafischen Bedienoberfläche können Touchpads des Herstellers Synaptics bei Bedarf an- oder ausgeschaltet werden.
Das auf Qt basierende Programm touchfreeze 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. Das Programm ist nur bis Ubuntu 10.04 in den offiziellen Paketquellen enthalten. Unter neueren Ubuntu-Versionen lädt man das Paket für 10.04 herunter und installiert es manuell.
Um die Anwendung zu starten, muss der Menüpunkt
"Anwendungen -> Zubehör -> TouchFreeze"
angewählt werden. Daraufhin erscheint ein Touchpad-Symbol in der Symbolleiste, über das TouchFreeze eingerichtet werden kann.
Unter KDE stehen sowohl die internen Einstellungen als auch das Programm synaptiks zur Konfiguration des Touchpads zur Verfügung. Damit lassen sich die wichtigsten Einstellung für das Touchpad treffen. Synaptiks startet man z.B. in einem Terminal:
synaptiks
synaptiks zeigt alle aktuell angeschlossenen Mäuse an und bietet die Möglichkeit, einzelne Mäuse für die automatische Deaktivierung des Touchpads zu ignorieren. Damit kann man den eingebauten Trackball, Trackpoint oder ähnliches, der als Maus identifiziert wird, ausschließen. Tut man dies nicht, wird das Touchpad permanent deaktiviert, was durchaus gewünscht sein kann.
Die folgenden Angaben sind für Kubuntu 11.04 oder neuer gültig.
An den Systemeinstellungen wurden in den aktuellen KDE-Versionen Änderungen vorgenommen. Unter KDE werden die Eingabegeräte (Tastatur, Maus, Touchpad, Joystick) unter den Systemeinstellungen benutzerspezifisch konfiguriert. Hier hat man allerdings nur Zugriff auf einen Teil der Einstellmöglichkeiten, die synaptiks bietet, nämlich den Menüpunkt Touchpad-Konfiguration. Für weitergehende Einstellungen muss man synaptiks direkt aufrufen.
Ab 11.04 stehen zwei Hauptkonfigurationsseiten zur Verfügung: Touchpad-Verwaltung und Touchpad-Konfiguration. Letztere ist auch über die Systemeinstellungen von KDE zugänglich.
Unter Touchpad-Verwaltung kann man folgende, nützliche Einstellungen treffen:
Touchpad beim Anschließen einer Maus automatisch ausschalten und dabei zu ignorierende Mäuse (s.u.).
Touchpad bei Tastaturaktivität automatisch ausschalten und Wartezeit für Reaktivierung.
Hier nutzt man den Einstellungsmanager von Xfce.
Keine integrierte Einstellungsmöglichkeit vorhanden, gsynaptics oder syndaemon verwenden.
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 hier eine Fehlermeldung erscheint, zusätzlich die Option -S verwenden
Bei Erfolg kann man das auch automatisch bei der Anmeldung geschehen lassen [4].
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 ist:
syndaemon -i 2 -d -t #option -i gibt die Sperrzeit in Sekunden an #option -t deaktiviert das Tapping
Voraussetzung ist, dass folgende Pakete installiert sind [1]:
xbindkeys (universe)
libnotify-bin (universe)
mit apturl
Paketliste zum Kopieren:
sudo apt-get install xbindkeys libnotify-bin
sudo aptitude install xbindkeys libnotify-bin
Nun wechselt man ins Verzeichnis /usr/local/bin und erstellt die Datei touchpad.py in einem Editor [3] 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 [5].
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.
Jupiter dient zur Steuerung des Energieverbrauchs, Ändern der Bildschirmauflösung/-ausrichtung und De-/Aktivierung von Bluetooth, Touchpad, WLAN und weiterer modellabhängiger Hardware.
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/01-touchpad.rules erstellt. Die Datei danach mit einem Editor und Root-Rechten öffnen.
Folgende Regel veranlasst udev dazu, das Touchpad mit Hilfe des Programmes synclient zu aktiveren, wenn eine Maus abgesteckt bzw. zu deaktivieren, wenn eine Maus angeschlossen wird. Hierzu sollte/muss
gpointing-device-settings
mit apturl
Paketliste zum Kopieren:
sudo apt-get install gpointing-device-settings
sudo aptitude install gpointing-device-settings
installiert sein/werden.
ACTION=="remove", SUBSYSTEM=="hid", RUN+="/sbin/modprobe psmouse" ACTION=="add", SUBSYSTEM=="hid", RUN+="/sbin/rmmod psmouse"
Siehe hierzu auch o-o-s.de . Dies in die Datei einfügen und abspeichern. Die Regel wird sofort aktiv, sobald das nächste mal eine Maus an- oder abgesteckt wird. Nun muss man noch unter GNOME 2 über "System -> Einstellungen -> Pointing devices" im Reiter "Allgemein" bei abgezogener Maus unter "Guest Mouse" das Häkchen bei "Set guest mouse off" entfernen, damit das Touchpad schon beim Systemstart und angesteckter Maus deaktiviert ist. Dies gilt für Synaptics-Touchpads.
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.
Wenn Unity verwendet wird (Standard ab 11.04), dann kann man ab Ubuntu 10.04 auch den Touchpad-indicator nehmen. Dazu muss zuerst ein "Personal Package Archiv" (PPA) hinzugefügt werden.
Adresszeile zum Hinzufügen des PPAs:
ppa:atareao/atareao
Zusätzliche Fremdquellen können das System gefährden.
Ein PPA unterstützt nicht zwangsläufig alle Ubuntu-Versionen. Weitere Informationen bietet die PPA-Beschreibung vom Benutzer/Team atareao.
Damit Pakete aus dem PPA genutzt werden können, müssen die Paketquellen neu eingelesen werden.
Nach dem Aktualisieren der Paketquellen kann folgendes Paket installiert werden:
touchpad-indicator (ppa)
mit apturl
Paketliste zum Kopieren:
sudo apt-get install touchpad-indicator
sudo aptitude install touchpad-indicator
Dann startet man das Programm in einem Terminalfenster:
touchpad-indicator
Anschließend auf das Tochpad-Symbol mit rechter Maustaste draufklicken und dann Einstellungen anklicken. Hier nun einen Haken bei "Automatischer Start" und "Touchpad deaktivieren, wenn eine Maus angeschlossen ist" hinzufügen.
Unter GNOME sollte man zuerst überprüfen, ob das Touchpad überhaupt in den Einstellungen aktiviert ist:
gconftool-2 --get /desktop/gnome/peripherals/touchpad/touchpad_enabled
Ist die Ausgabe false
, so reicht dieser Befehl zur Aktivierung des Touchpads:
gconftool-2 --set --type boolean /desktop/gnome/peripherals/touchpad/touchpad_enabled true
Danach einmal abmelden und anschließend wieder anmelden oder den Rechner einmal neu starten.
Falls man nicht weiß, welches Touchpad-Modell im Notebook eingebaut ist oder wie man es findet, gibt man Folgendes in ein Terminal ein [2]:
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
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 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 /dev/input/event2
gebunden ist, funktionieren auch die ganzen Zusatzfunktionen. Wichtig: psmouse
muss geladen sein, damit das Touchpad gefunden wird.
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.
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 [3] mit Root-Rechten 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. Folgendes Paket wird dazu benötigt [1]:
build-essential
mit apturl
Paketliste zum Kopieren:
sudo apt-get install build-essential
sudo aptitude install build-essential
Außerdem werden die Pakete linux-headers und linux-source passend zur eigenen Kernel-Version und -Architektur (-generic
, -386
, -generic-pae
usw.) benötigt. Diese Pakete lassen sich über die beiden folgenden Befehle installieren:
sudo apt-get install linux-headers-$(uname -r) sudo apt-get install linux-source-$(uname -r)
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 [3] (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 [2] 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.
Die Touchpads der Dell E2-Serie (z.B. E6510, E6410, E4310, ...) werden ebenfalls nur als "PS/2 Generic Mouse" erkannt, leider reicht die oben beschriebene Änderung nicht mehr aus. Abhilfe schafft folgender Patch .
Nachdem dieser auf den Quellcode angewandt wurde, kann das Modul wie oben beschrieben kompiliert und aktiviert werden. Die Touchpads werden damit zwar weiterhin nicht vollständig erkannt (es erscheint z.B. kein "Touchpad"-Tab unter den Mauseinstellungen), aber Dinge wie vertikales Scrollen sollten wieder funktionieren.
Damit das gepatchte Modul richtig arbeitet, sollten alle evtl. noch vorhandenen Workarounds, wie z.B. der Parameter proto=imps beim Laden des Moduls oder in einer Konfigurationsdatei unter /etc/modprobe.d/ deaktiviert bzw. entfernt werden!
Getestet mit einem Dell Latitude E4310 und E5410 unter Maverick.
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 eine Konfiguration des Bootloaders Grub 2 das Problem beheben. Dazu öffnet man mit einem Texteditor [3] mit Root-Rechten die Datei /etc/default/grub und fügt acpi_osi=Linux in die Zeile GRUB_CMDLINE_LINUX_DEFAULT ein. Das kann dann wie folgt aussehen:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash acpi_osi=Linux"
Danach führt man sudo update-grub
aus. Nach dem nächsten Neustart sollte das merkwürdige Verhalten des Touchpads damit passé sein.
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 auf "AlwaysCore".
Section "ServerLayout" Identifier "Layout0" Screen 0 "Screen0" InputDevice "Keyboard0" "CoreKeyboard" InputDevice "Synaptics Touchpad" "CorePointer" InputDevice "Mouse0" "AlwaysCore" EndSection