[[Vorlage(Getestet, bionic)]] {{{#!vorlage Wissen [:Terminal: Ein Terminal öffnen] [:Editor: Einen Editor öffnen] }}} [[Inhaltsverzeichnis(2)]] [[Bild(Wiki/Icons/Oxygen/X.png, 48, align=left)]] Der [:XServer:] konfiguriert sich weitgehend automatisch und selbstständig ("natives [wikipedia_en:Plug and play:]"). Eingabegeräte können im laufenden Betrieb hinzugesteckt und sofort benutzt werden, ohne dass Anpassungen an der '''[:XServer#Bearbeiten-von-etc-X11-xorg-conf:/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. = Überblick = 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. == Prinzip == Nach der früher gebräuchlichen Datei '''/etc/X11/xorg.conf''', die nur beim Start des X-Servers eingelesen wird, existieren ein Verzeichnis '''/usr/lib/X11/xorg.conf.d/''' bzw. seit [:Maverick_Meerkat:Ubuntu 10.10] '''/usr/share/X11/xorg.conf.d/''', 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''-Abschnitte. 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. Da im Auslieferungszustand Ubuntus verwendete Dateinamen teils mit Zahlen von 10 oder kleiner beginnen, sollte man eigene Konfigurationsdateien, die in der Regel speziell für ein Gerät geschrieben werden, mit einer größeren Zahl beginnen lassen, z.B. mit 20. {{{#!vorlage Hinweis 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. }}} == Syntax == Grundgerüst einer Datei im '''xorg.conf.d'''-Verzeichnis: {{{#!code text 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. = Beispiel = {{{#!vorlage Hinweis 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. }}} == Mausrad-Emulation von Trackpoints == Die folgende Konfigurationsdatei aktiviert die Scrollfunktion des TrackPoints auf IBM/Lenovo ThinkPads standardmäßig. Die Datei sollte als '''/usr/share/X11/xorg.conf.d/50-thinkpad-trackpoint.conf''' gespeichert werden. {{{#!code text 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. == Mausachsen invertieren == Die folgende Konfiguration invertiert die Mausachsen für die »Wireless Mouse Wireless Mouse«. Die Datei sollte als '''/usr/share/X11/xorg.conf.d/50-invertaxes.conf''' gespeichert werden. {{{#!code text Section "InputClass" Identifier "Mausachsen invertieren" MatchProduct "Wireless Mouse Wireless Mouse" MatchDevicePath "/dev/input/event*" Option "InvertY" "true" Option "InvertX" "true" EndSection }}} == Bildlauf mit Zwei Fingern == Die folgende Konfiguration aktiviert den Bildlauf mit zwei Fingern auf neueren Synaptics-Touchpads. Die Datei sollte als '''/usr/share/X11/xorg.conf.d/50-twofingerscroll.conf''' gespeichert werden. {{{#!code text 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`). = Links = * [https://www.x.org/wiki/XorgHAL Stand und Ausblick] {en} der Xorg Entwicklung bezüglich Eingabegeräten * [https://who-t.blogspot.com/2010/01/new-configuration-world-order.html Ausführliche Beschreibung] {en} der neuen Konfigurationsmöglichkeiten * [:XServer:] {Übersicht} Grundlagenartikel #tag: Hardware, Installation, XServer