Ubuntu 12.04 Precise Pangolin
Der XServer konfigiert sich weitgehend automatisch und selbstständig ("natives Plug and play"). Eingabegeräte können im laufenden Betrieb hinzugesteckt und sofort benutzt werden, ohne dass Anpassungen an der /etc/X11/xorg.conf nötig wären oder die grafische Oberfläche neu gestartet werden müsste.
Geräteklassentreiber können bei Bedarf dynamisch nachgeladen und wieder entladen werden. Gesteuert wird dieses über zusätzliche Dateien im Verzeichnis /usr/share/X11/xorg.conf.d/. Verzeichnis und Dateien müssen dafür ggf. erst angelegt werden.
Die Installation liefert bereits einige generische Dateien mit, mit denen die wichtigsten Funktionen der meisten Eingabegeräte bereits funktionieren sollten. Dieser Artikel beschreibt, wie man in den Konfigurationsprozess eingreifen und Feinabstimmung betreiben kann.
Die hier beschriebene Methode ersetzt die ehemalige Konfiguration mittels .fdi-Dateien über HAL vollständig. Sie erbt aber die folgenden Beschränkungen:
Es können nur globale Einstellungen gemacht werden, die für alle Nutzer gleichermaßen gelten
Die Einstellungen werden nur beim Start des XServers und bei Hinzufügen eines Gerätes gesetzt
Will man zur Laufzeit Einstellungen für den angemeldeten Nutzer vornehmen, kann man auf das hierfür vorgesehene xinput
zurückgreifen oder eines der speziellen grafischen Werkzeuge unter "System -> Einstellungen -> Maus bzw. Tastatur" nutzen.
Neben der zentralen /etc/X11/xorg.conf, die nur beim Start des X-Servers eingelesen wird, existiert nun zusätzlich ein Verzeichnis /usr/lib/X11/xorg.conf.d/ bzw. /usr/share/X11/xorg.conf.d/ (ab Ubuntu 10.10), dessen enthaltene Konfigurationsdateien bei jedem Hinzustecken eines Eingabegerätes eingelesen werden. Vom Aufbau ähneln diese der alten xorg.conf, jedoch mit 3 wichtigen Unterschieden:
Es gibt einen oder mehrere Abschnitte vom Typ InputClass. In diesen können die gleichen Optionen wie für die InputDevice-Abschnitte benutzt werden.
Die Einstellungen gelten zunächst immer für alle Eingabegeräte. Einschränkungen werden über die Werte neuer Schlüssel der Art MatchProduct, MatchIsPointer, MatchTag, etc. vorgenommen.
Die Einstellungen für ein spezifisches Gerät ergibt sich aus der Gesamtmenge aller passenden InputClass-Abschnitten
Alle Dateien im xorg.conf.d-Verzeichnis werden in lexikalischer Reihenfolge abgearbeitet. Später gelesene Werte überschreiben frühere. Dies löst unter Umständen Konflikte bei widersprüchlichen Werten für die gleiche Option eines Geräts aus. Konfigurationen mit großer Streubreite sollten daher am Anfang stehen, die dann durch nachfolgende Einstellungen erweitert oder überschrieben werden können.
Dies wird auch im Auslieferungszustand von Ubuntu 10.04 so gemacht. Hier findet man die verwendeten Dateien unterhalb von /usr/lib/X11/xorg.conf.d/. Da diese verwendeten Dateinamen mit Zahlen von 10 oder kleiner beginnen, sollte man eigene Konfigurationsdateien – die ja in Regel speziell für ein Gerät geschrieben werden – mit einer größeren Zahl beginnen lassen, z.B. mit 20.
Man sollte grundsätzlich neue Dateien anlegen und nicht die bestehenden ändern. Dies hat neben der besseren Übersicht den Vorteil, eigene Anpassungen bei Nichtgefallen mittels Löschen der Datei schnell wieder loszuwerden.
Grundgerüst einer Datei im xorg.conf.d-Verzeichnis:
1 2 3 4 5 6 7 8 | Section "InputClass" Identifier "Name" [Driver "Treiber"] … [Klauseln] … [Optionen] EndSection … [Weitere InputClass-Abschnitte] |
Der nötige Treiber für ein Eingabegerät ist den allermeisten Fällen durch die mitgelieferten Dateien bereits korrekt gesetzt. Aufgrund der oben beschrieben Regeln muss er daher nicht wiederholt werden. In der Regel muss man nur die Optionen den eigenen Wünschen entsprechend setzen. Die erlaubten Werte sind die gleichen wie für die „normalen“ InputDevice-Abschnitte in der xorg.conf.
Hilfe hierzu findet man auf den man-Pages von xorg.conf und evdev bzw. dem alternativ eingesetzten Treiber (synaptics, wacom, etc.).
Wichtig ist der Abschnitt mit den Klauseln, diese schränken die Gültigkeit der gesetzten Werte auf passende Geräte ein. Erkannt werden folgende Schlüssel:
MatchIsKeyboard "bool"
MatchIsPointer "bool"
MatchIsJoystick "bool"
MatchIsTablet "bool"
MatchIsTouchpad "bool"
MatchIsTouchscreen "bool"
Testet auf die entsprechende Geräteklasse; bool
steht für einen Wahrheitswert:
"1
", "on
", "true
" für "ja",
"0
", "off
", "false
" für "nein".
MatchProduct "matchproduct"
Testet, ob der Substring matchproduct
im Gerätenamen auftaucht.
MatchVendor "matchvendor"
Testet, ob der Substring matchvendor
im Namen des Geräteherstellers auftaucht.
MatchDevicePath "matchdevice"
Testet, ob der Pfad zur Gerätedatei matchdevice
entspricht. Ein "*
" kann als Auslassungszeichen genutzt werden.
MatchTag "matchtag"
Testet, ob mindestens eins der automatisch vergebenen Tags matchtag
entspricht.
Bei allen letztgenannten Klauseln kann das "|
"-Symbol genutzt werden, um verschiedene mögliche Werte voneinander abzutrennen, z.B. MatchVendor "Logitech|Microsoft"
.
Neben den treiberspezifischen Optionen existiert eine spezielle Option, die den X-Server anweist, das Gerät vollständig zu ignorieren:
Option "Ignore" "true"
Das ist nützlich, falls Eingaben über dieses Gerät von einem anderen Programm verarbeitet werden, z.B. Lirc bei Infrarot-Empfängern, oder das Gerät nicht zur Steuerung des Mauszeigers verwendet werden soll, z.B. Beschleunigungssensoren.
Da aufgrund des regelbasierten Ansatzes nur Eingabegeräte konfiguriert werden, die auch tatsächlich vorhanden sind, können folgende Beispieldateien ohne Bedenken in das eigene System eingebunden werden.
Die folgende Konfigurationsdatei aktiviert die Scrollfunktion des TrackPoints auf IBM/Lenovo ThinkPads standardmäßig. Die Datei sollte als /usr/lib/X11/xorg.conf.d/50-thinkpad-trackpoint.conf gespeichert werden.
1 2 3 4 5 6 7 8 9 | Section "InputClass" Identifier "ThinkPad TrackPoint" MatchProduct "TPPS/2 IBM TrackPoint" MatchDevicePath "/dev/input/event*" Option "EmulateWheel" "true" Option "EmulateWheelButton" "2" Option "XAxisMapping" "6 7" Option "YAxisMapping" "4 5" EndSection |
Da die gesetzten Optionen Eigenschaften des Allzwecktreibers evdev
sind, kann diese Datei auch für TrackPoints anderer Hersteller verwendet werden. Dazu muss die Zeile mit MatchProduct
entsprechend angepasst werden. Da für den TrackPoint mehrere Gerätedateien angelegt werden (auch /dev/input/mouse*
), sorgt die Zeile mit MatchDevicePath
dafür, die Einstellungen nur einmal für die korrekte Gerätedatei zu verwenden. Der X-Server erkennt und ignoriert solche Mehrfach-Gerätedateien allerdings automatisch, daher könnte die Zeile auch gelöscht werden.
Die folgende Konfiguration invertiert die Mausachsen für die »Wireless Mouse Wireless Mouse«. Die Datei sollte als /usr/lib/X11/xorg.conf.d/50-invertaxes.conf gespeichert werden.
1 2 3 4 5 6 7 | Section "InputClass" Identifier "Mausachsen invertieren" MatchProduct "Wireless Mouse Wireless Mouse" MatchDevicePath "/dev/input/event*" Option "InvertY" "true" Option "InvertX" "true" EndSection |
Die folgende Konfiguration aktiviert den Bildlauf mit zwei Fingern auf neueren Synaptics-Touchpads. Die Datei sollte als /usr/lib/X11/xorg.conf.d/50-twofingerscroll.conf gespeichert werden.
1 2 3 4 5 6 7 8 | Section "InputClass" Identifier "Zwei-Finger-Bildlauf für Touchpads einschalten" MatchProduct "SynPS/2 Synaptics TouchPad" MatchDevicePath "/dev/input/event*" Option "VertTwoFingerScroll" "on" Option "EmulateTwoFingerMinW" "8" Option "EmulateTwoFingerMinZ" "40" EndSection |
Die richtige Bezeichnung für „MatchProduct“ kann mittels xinput list
ermittelt werden. Sehr viele weitere Optionen für Synaptics-Touchpads findet man auf der man-Page des Treibers (man synaptics
).
Stand und Ausblick der Xorg Entwicklung bezüglich Eingabegeräten
Ausführliche Beschreibung der neuen Konfigurationsmöglichkeiten
XServer Grundlagenartikel
Diese Revision wurde am 7. Oktober 2016 17:08 von verdooft erstellt.