The Answer Girl
Dass der Computeralltag auch unter Linux des Öfteren für Überraschungen gut ist, ist eher eine Binsenweisheit: Immer wieder funktionieren Dinge nicht oder nicht so, wie eigentlich angenommen. Das Answer-Girl im LinuxUser zeigt, wie man mit solchen Problemchen elegant fertig wird.
Ein neuer Arbeitsplatz, ein neuer Rechner oder ein Keyboard, das nach langen, treuen Jahren der Zusammenarbeit den Weg alles Irdischen ging – irgendwann kommt jede/r mal in die Verlegenheit, sich mit einer neuen Tastatur anfreunden zu müssen, die heutzutage ganz sicher mit Windows-Tasten aufwartet. Selbst wenn man die gegen Pinguin-Tasten austauscht, so ändert das noch nichts an ihrer – je nach Distribution – (Nicht-)Funktion.
Mag eine unbenutzt vor sich hindämmernde Windows-Taste noch so unschön sein – richtig nervig ist oft die [CapsLock]-Taste, mit deren Hilfe man immer wieder mal aus Versehen das arme Rechnerlein anschreit.
Warum also nicht dem Quälgeist eine vernünftige Funktion geben? Sinnvoll wäre zum Beispiel, ihn zu einer zweiten linken [Umschalt]-([Shift]-)Taste umzufunktionieren, an deren Stelle er so oft aus Versehen gedrückt wird. Manche Leute tauschen einfach die Funktionen von [CapsLock] und der linken [Strg]-Taste. Auch einer individuellen Lösung steht wenig entgegen – zunächst einmal nur die Frage, wie das eigentlich geht.
Leider nicht mit einer einzigen Änderung, denn die beiden Benutzer-Schnittstellen unter Linux, die Textkonsole und das grafische X-Window-System, kümmern sich separat um die Tastenbelegung. Wer schon einmal eine Distribution installiert hat, bei der er/sie sich selbst um eine deutsche Tastenbelegung kümmern musste [1] oder Umlaute nachrüsten wollte [2], ahnt bereits, dass man dazu an separaten Rädchen drehen muss.
Tastenbelegung ohne X
Dass auch eine deutsche Tastatur mit einer amerikanischen Belegung arbeiten kann, weiß jede/r, die/der im BIOS-Menü ein y für "yes" eingeben wollte und mit der passenden Taste eines deutschen Keyboards ein z produzierte. Erst beim Hochfahren lädt das System die deutsche Tastenbelegung. Dazu muss es einen Befehl geben, und der sollte der Schlüssel zum Problem sein. Ihn im Alleingang zu finden, gibt es (mindestens) drei Möglichkeiten: * Die Lieblingssuchmaschine mit passenden Stichwörtern wie Tastaturbelegung, keytable und Linux zu füttern. * Die Boot-Skripte im init.d-Verzeichnis (meist /etc/rc.d/init.d oder /etc/init.d) nach einem Befehl zu durchsuchen, der vermutlich irgendwas mit key heißt. * In der whatis-Datenbank des eigenen Systems nach diesem Befehl zu fahnden.
Die erste Möglichkeit überlasse ich Ihren persönlichen Präferenzen; ob man mit der zweiten Erfolg hat, hängt stark von der verwendeten Distribution ab: Bei SuSE (als Beispiel dient 7.2) mit ihrer Vorliebe für möglichst komplexe, für Normal-Benutzer nahezu undurchschaubare Skripte kommt man zwar mit
trish@linux:~ > grep keys /etc/init.d/*[…] /etc/init.d/kbd: rc_status && retmsg="`loadkeys $KEYMAP 2>&1`"[…]
recht schnell zu der Ansicht, dass die Datei /etc/init.d/kbd (wie "keyboard") für's Laden der richtigen Tastaturtabelle verantwortlich ist, doch wer einen Blick in dieses Skript wirft und nicht bereits weiß, wonach er/sie sucht, wird sich vermutlich etwas verlassen vorkommen. Das Suchergebnis bei Debian (/etc/init.d/keymap.sh), Red Hat (/etc/init.d/keytable) oder Caldera OpenLinux (/etc/rc.d/init.d/keytable) ist wesentlich übersichtlicher und legt das Ergebnis nahe, dass loadkeys der gesuchte Befehl ist.
Die Suche in der whatis-Datenbank mit dem Befehl apropos oder
trish@linux:~ > man -k keys loadkeys (1) - load keyboard translation tables
und ein anschließender Blick in die entsprechende Manpage bestätigen den Verdacht: Mit diesem Kommando lässt sich die Tastaturbelegung auf der Konsole ändern. Die Belegung wiederum ist in sogenannten Map-Dateien unterhalb von /usr/lib/kbd/keymaps (SuSE, Red Hat), /usr/share/keymaps (Debian) oder /usr/share/kbd/keymaps (Caldera) zu finden. Allerdings nicht in genau diesem Unterverzeichnis, sondern fein säuberlich sortiert nach Rechner-Architektur (i386, sun, mac etc.) und Keyboard-Layout (qwerty, qwertz usw.).
Die darin liegenden Map-Dateien (z. B. i386/qwertz/de-latin1.map.gz) lassen sich als mit gzip gepackte Textdateien beispielsweise mit dem Befehl zless anschauen (Listing 1 zeigt einen Ausschnitt).
Listing 1
Ausschnitt aus
de-latin1.map# de-latin1.map: German keymap […] include "qwertz-layout" […] # Normal Shift AltGr Strg keycode 1 = Escape Escape […] keycode 54 = Shift keycode 56 = Alt keycode 57 = space space Meta_space nul keycode 58 = Caps_Lock keycode 86 = less greater bar keycode 97 = Control
Wie so oft, leitet ein #-Zeichen am Anfang der Zeile einen Kommentar ein, der keine Auswirkung auf die Funktionalität hat. Interessant ist die Zeile include "qwertz-layout" – statt wirklich alles selbst zu definieren, kann man also auch bereits vordefinierte Keymaps einbinden. Bei den einzelnen Tastenbelegungsdefinitionen steht auf der linken Seite des Gleichheitszeichens ein sogenannter Keycode, rechts davon werden bis zu vier Funktionswerte definiert: einer für den einfachen Druck der jeweiligen Taste, einer für den Tastendruck bei gleichzeitig niedergehaltener [Umschalt]-Taste, ein dritter bei gleichzeitig gedrückter [AltGr]-Taste und ein vierter, wenn die Taste zusammen mit [Strg] gedrückt wird.
Wider das Geschrei auf der Konsole
Netterweise bekommen wir den Keycode von [CapsLock] frei Haus geliefert und können damit sehr schnell die Funktionalität des Quälgeists umdefinieren: Wir erzeugen eine neue Datei namens personal.map, und schreiben dort hinein, dass wir die Taste mit dem Keycode 58 auf Shift-Funktionalität setzen wollen, uns bei der restlichen Belegung aber auf die de-latin1.map verlassen:
include "/usr/share/kbd/keymaps/i386/qwertz/de-latin1.map.gz" keycode 58 = Shift
(Den Pfad zu de-latin1.map.gz müssen Sie eventuell an Ihr System anpassen.) Testweise auf der Konsole mit
trish@linux:~ > loadkeys personal.map Loading personal.map
aufgerufen, wirkt das neue Key-Mapping wunderbar: [CapsLock] arbeitet jetzt wie die [Shift]-Taste.



