Oskar Welzl: Weblog zur Homepage

Cymotion Master Linux, X.org Server 1.6 und HAL/evdev

Gleichzeitig mit der Upgrade auf den X.org Server 1.6 bin ich auf evdev (unter HAL) als Treiber für Tastatur und Maus umgestiegen. Das ist schön, hat aber zur Folge, daß alle meine für den alten kbd-Treiber augetüftelten Extra-Konfigurationen nicht mehr funktioniert haben. Zwar war die Tastenbelegungen fast in Ordnung, aber eben doch nicht mehr so ganz nach meinem Geschmack.

Das Hauptproblem war, daß alle Keycodes von evdev neu bzw. anders definiert werden; diese Keycodes verwende ich in den Konfigurationsfiles zur Änderung der Tastenbelegung. Außerdem war es notwendig, meine persönliche Konfiguration an die stark verbesserte Unterstützung durch das Basissystem anzupassen - also nicht mehr in Dinge einzugreifen, die ohnehin funktionieren. (So hat z.B. irgenwann mal jemand meine 2005 hier veröffentlichten Änderungen bezüglich typographischer Sonderzeichen ins deutsche Standard-Layout übernommen, was ich bisher nie bemerkt habe.)

Das Ergebnis stelle ich gerne der interessierten Öffentlichkeit zur Verfügung. Immerhin ist ein früherer Artikel zum gleichen Thema ja unter den Top 10 dieses Blogs zu finden (noch vor dem nackten Robbie Williams übrigens).

Also, wie tut man? Zunächst: Diese Anleitung bezieht sich auf ein System, in dem evdev als Treiber zum Einsatz kommt und HAL die Gerätekonfiguration übernimmt. Das sollte man sinnvollerweise zuerst überprüfen: In der Xorg-Log-Datei (/var/log/Xorg.0.log) sollten so Dinge stehen wie:

(II) LoadModule: "evdev"
(II) Loading /usr/lib/xorg/modules/input//evdev_drv.so
(II) Module evdev: vendor="X.Org Foundation"
(**) Option "xkb_rules" "evdev"

Die Kommandosequenz lshal | grep keyboard sollte auch einige Zeilen zur momentan angesteckten Tastatur auswerfen. Wenn diese beiden Voraussetzungen gegeben sind, wird die hier vorgestellte Methode funktionieren. Wahrscheinlich. Ansonsten gibts den oben erwähnten älteren Artikel.

Sinnvoll wird es auch sein, nach Durchführung aller Änderungen eventuell verbliebene Reste zur Tastaturkonfiguration aus /et/X11/xorg.conf zu entfernen. Doppel konfiguriert hält ganz sicher nicht besser.

Wenn die Vorbereitungen erledigt sind, ist die xkb-Konfiguration zu patchen. Das geht nur mit root-Rechten, daher sind einerseits Vorsicht und andererseits eine Sicherheitskopie das xkb-Verzeichnisses zu empfehlen (auf modernen Distributionen ist das /usr/share/X11/xkb). Den Patch hab ich hier abgelegt, er ist am besten von /usr/share/X11/ aus mit dem Kommando patch --dry-run -p0 < cymotion.patch zu testen und dann mit patch -p0 < cymotion.patch einzuspielen. Was sich dadurch alles ändert, hab ich im README aufgezählt. (Die Information sollte ausreichen, um die Änderungen händisch vorzunehmen, wenn man sich beim Patchen unwohl fühlt.)

Als Ergebnis hat man eine Xorg-Konfiguration, in der ein Modell „Cherry Cymotion Master Linux“ mit einer zumindest für meinen Geschmack deutlich verbesserten Unterstützung von Sondertasten aufscheint. (Die Originalvariante von X.org beispielsweise ersetzt die praktische [@]-Taste rechts neben [alt gr] mit dem so gut wie nie verwendeten SUPER_R Modifier, nur weil der sonst meistens an dieser Stelle zu finden ist. Mit solchem Unfug räume ich auf. Außerdem belege ich die Tasten für kopieren, einfügen, suchen etc. mit Tastaturkürzeln, die unabhängig von der Desktopumgebung in fast jedem Programm funktionieren.) Zusätzlich gib es zu den ohnehin bekannten deutschen Tastaturbelegungen (Standard, Dvorak, keine Tottasten, …) eine weitere Variante, in der I, S, G und C in Verbindung mit [alt gr] bzw. [Shift]+[alt gr] die türkischen Sonderzeichen ı, İ, ş, Ş, ğ, Ğ, ç und Ç ergeben. Diese neuen Layouts sollten bereits zur Verfügung stehen, wenn man in der Desktop-Umgebung die Tastatureinstellungen manuell wählt.

Damit alles aber ganz richtig läuft, sind noch ein bis zwei weitere Schritt notwendig; wie viele genau, das hängt davon ab, ob die Tastatur via USB oder PS/2-Stecker am Rechner hängt. In jedem Fall braucht HAL die Informationen über die gefundene Hardware. Diese werden in dieser FDI-Datei zur Verfügung gestellt, die man in /etc/hal/fdi/policy/ speichern muß. Achtung: Diese Datei ist für die USB-Option gedacht. Beim Anschluß via PS/2-Stecker muß die Zeile <match key="input.product" contains="HID 046a:0023"> mit der auskommentierte Zeile <match key="info.capabilities" contains="input.keyboard"> ersetzt werden. Anschließend werden HAL und X neu gestartet.

Für Nutzer des PS/2-Anschlusses gibt es noch ein zusätzliches Zuckerl: Die Kernel-Entwickler haben sich die vollständige Übersetzung aller Scancodes gespart. Auf der USB-Schnittstelle wird alles erkannt, via PS/2 aber fehlen 11 der 28 Sondertasten. (Gute Neuigkeiten auch hier: Bei meinen ersten Versuchen mit dieser Tastatur haben noch so gut wie alle Tasten gefehlt. Es wird ja.) Damit alles klaglos funktioniert, ist also beim Hochfahren des Systems ein zusätzliches Script notwendig, das den Kernel mit den restlichen Tasten bekannt macht. Wie dieses Script genau aussieht, wo es liegen muß und wie man es automatisch bei jedem Systemstart laufen läßt, ist distributionsabhängig. Die Version für Gentoo habe ich hier abgelegt. Sie muß unter /etc/init.d/ gespeichert und ausführbar gemacht werden. (Sinnvollerweise werden die Zugriffsrechte so gesetzt wie bei allen anderen Scripts in diesem Verzeichnis.) Wichtig und distributionsunabhängig ist dabei die Zeile

setkeycodes e070 161 e00b 177 e012 178 e017 137 e00a 135 e018 133 e071 148 e02c 149 e072 202 e007 129 e008 131

Sie erzeugt für die jeweiligen Scancodes einen Tastaturwert, mit dem anschließend weitergearbeitet werden kann. Nur so ist sichergestellt, daß wirklich alle der zuvor definierten Tasten auch auf einem PS/2-Anschluß erkannt werden.

Beim Anpassen aller bisher von mir verwendeten Änderungen an der X.org-Konfiguration ist mir eines passiert: Ich hab nach vier Jahren zum ersten mal verstanden, was ich da eigentlich mache und wie's wirklich funktioniert. Das ist ja eigentlich ein schöner Erfolg, oder? ;)

 
Deep_Blue meinte am :
Toller Erfolg, Ossi !
Aber dein Text wirft für mich folgende Frage auf :

Wenn dein mutiertes Taschentuch sich mit deiner Zahnbürste verbündet und mit Joghurt auf dich losgehen, heißt das dann, dass die Welt von einem Affen ohne Brille beherrscht wird, der die gelb-rot gestreiften Pullover für immer auf den Mars verbannen will, damit sie aufhören mit den rosa Pudeln zu reden, die bei ihren täglichen "Geschäften draußen im Garten" geheime Informationen für das Klopapier hinterlassen, damit es den brillenlosen, pulloverhassenden Affen mir Sonnenbrille stürzen kann?

Es ist alles so kompliziert ! 
erikhuemer meinte am :
Whow! Das nenne ich niedrigschwellige Benutzerfreundlichkeit :-)

Süß auch die "zufällige" besondere Berücksichtigung unserer anatolischen Freunde. :-) 
ossi1967 antwortete am :
Ich bin nicht freundlich!

Hab ich je den Eindruck erweckt, daß ich freundlich bin? Egal ob jetzt zu Benutzern oder zu sonstwem? Eben. Soll sich doch jeder holen, was er braucht. Beschwerden beim Salzamt. I bin ja ka Hotline. *grins* (Und der Counter sagt mir … Es gibt durchaus auch Leser, die über die höhere Schwelle springen. *g*)

Außerdem: Das Ottakringer Tastaturlayout hab ich nicht zur Befriedigung anatolischer Bedürfnisse eingebaut, sondern ausschließlich zwegn der Kültür! Pingelig wie ich nun mal bin hab nach wie vor das dringende Bedürfnis, Audiofiles auch korrekt zu taggen. Das mach ich, damit „Fıstık“ eben „Fıstık“ heißt und nicht „Fistik“ oder gar „F|st|k“ … weil wenns nicht „Fıstık“ heißt, hätt ich dann am End die Scherereien mit der Sonderzeichendarstellung bei Meine Medien von aonTV nicht - ach, was red ich denn da eigentlich. ;)))

 
schlosser meinte am :
Was?
Du hast noch eine PS/2?
Jetzt ist gerade die Playstation 3 beim Saturn im Angebot. Solltest Du zugreifen!

*kuuuuder* 
Weitere Links zu …
X.org: