Sondertasten der Tastatur mit Bordmitteln belegen

Hier wird beschrieben, wie man Sondertasten auf der Tastatur mit “Bordmitteln”, also ohne zusätzliche Programme (wie LinEAK oder ähnliche) belegen kann.

Das ist nicht kompliziert, aber es erfordert ein paar Arbeitsschritte. Diese sind:

  1. Herausfinden der schon erkannten Tasten
  2. Herausfinden der Tasten, die der Kernel nicht erkennt
  3. Kernel die entspr. Tasten mitteilen
  4. Vervollständigen der Keycodes für den X-Server
  5. X-Server die Tasten mitteilen
  6. Dem Windowmanager die neuen Tasten mitteilen und diese funktionstüchtig machen

Also beginnen wir ganz vorne.
Als erstes sollte man sich eine Tabelle machen, die folgende Form haben kann (hier: mit Beispieleinträgen):

Taste Keycode X-Symbol Bemerkungen
Kernel input.h X-Server
Mute 160 XF86AudioMute Ton Stummschalten
Vol – 174 XF86AudioLowerVolume
Vol + 176 XF86AudioRaiseVolume

In diese Tabelle trägt man dann erst mal alle Tasten ein, die man belegen möchte.
Wichtig ist für uns, das wir auf jeden Fall nachher für jede Taste ein Symbol des X-Servers haben.

Herausfinden der Tasten, die der Kernel nicht erkennt

Wenn ,em>xevgar keine Ausgabe liefert erkennt – wie schon gesagt – der Kernel die Taste nicht.

In diesem Falle sieht man sich die Datei /var/log/syslog an. Am einfachsten ist das durch das Öffnen mit tail -f in einer Konsole. Der Aufruf (als root) wäre dann:

root@rechner$ tail -f /var/log/syslog

Hier sollte bei der Tastenbetätigung folgendes erscheinen:

Nov 9 14:57:49 rechner kernel: atkbd.c: Unknown key released (translated set 2, code 0xda on isa0060/serio0).
Nov 9 14:57:49 rechner kernel: atkbd.c: Use 'setkeycodes e05a ' to make it known.

Das Interessante hier ist der Ausdruck nach setkeycodes. Dieser Ausdruck (im obigen Fall e05a) wird in der Tabelle unter Keycode kernel eingetragen.

Nach dem eintragen der Tasten forscht man in der Datei /usr/include/linux/input.h nach einem sinnvollen Keycode zu der Taste.

Auszug aus input.h:

...
#define KEY_PROPS 130
#define KEY_UNDO 131
#define KEY_FRONT 132
#define KEY_COPY 133
#define KEY_OPEN 134
#define KEY_PASTE 135
#define KEY_FIND 136
#define KEY_CUT 137
#define KEY_HELP 138
#define KEY_MENU 139
#define KEY_CALC 140
#define KEY_SETUP 141
#define KEY_SLEEP 142
#define KEY_WAKEUP 143
#define KEY_FILE 144
...

Dieser Keycode wird dann wiederum in die Tabelle unter Keycode input.h bei der entsprechenden Taste eingetragen.

Kernel der entsprechenden Tasten mitteilen

Dem Kernel werden die Tasten bekannt gemacht, in dem man in die Datei /etc/rc.d/rc.local für jede Taste folgende Zeile einfügt:

setkeycodes [Keycode Kernel]   [Keycode input.h] #[Kommentar]

Entweder nach der Ausführung von rc.local, oder nach einem Neustart des Systems sind die Tasten dem Kernel bekannt.

Vervollständigen der Keycodes für den X-Server

Das Vervollständigen der Tabelle geschieht wieder über xev. Jetzt sollte wie in „Herausfinden der schon erkannten Tasten“ zu jeder Taste ein Keycode für den X-Server vorhanden sein und in unserer Tabelle eingetragen werden.

X-Server die Tasten mitteilen

Um die Tasten jetzt noch mit Symbolen zu versehen, so dass man sie über die Tastenbelegung im Windowmanager ansprechen kann, editiert man entweder die Datei .Xmodmap~/.

Auch das ist kein Hexenwerk.

Ein Abschnitt aus dieser .Xmodmap könnte dann so aussehen:

...
!! Volume Control
keycode 160 = XF86AudioMute
keycode 174 = XF86AudioLowerVolume
keycode 176 = XF86AudioRaiseVolume
...

Wobei der Keycode des X-Servers ist. Die Ausdrücke rechts des Gleichheitszeichens erfährt man aus der Datei /usr/X11R6/lib/X11/XKeysymDB.
Hier noch ein Auszug aus dieser Datei:

...
XF86AudioLowerVolume :1008FF11
XF86AudioMute :1008FF12
XF86AudioRaiseVolume :1008FF13
XF86AudioPlay :1008FF14
XF86AudioStop :1008FF15
XF86AudioPrev :1008FF16
XF86AudioNext :1008FF17
...

Damit wird die Tabelle dann mit den Symbolen für den X-Server komplettiert und man besitzt alle Informationen um die Tasten im Windowmanager einzurichten.
Nach dem Neustart des X-Servers (oder man möchte zum äußersten schreiten und das System erneut neu Starten) kennt der X-Server nun hoffentlich alle zusätzlichen Tasten.
Man kann dies wiederum mit xev nachprüfen, wenn man möchte, oder zur Fehlersuche nutzen.

Dem Windowmanager die neuen Tasten mitteilen und diese damit funktionstüchtig machen

Kommen wir nun in die Zielgerade und erklären dem Windowmanager, was er mit der Taste anfangen soll. Als Beispiel hierfür soll mal ein Auszug aus der Datei keys dienen, die in Fluxbox die Tastenkürzel festlegt.

...
none XF86Mail :ExecCommand /usr/bin/thunderbird
none XF86WWW :ExecCommand /usr/bin/firefox
none XF86Calculator :ExecCommand /opt/kde/bin/kcalc
...

Das sollte dann natürlich auch in KDE, GNOME, usw. funktionieren. Natürlich ist die Vorgehensweise in den verschiedenen Desktopsystemen und Windowmanagern unterschiedlich.

Nach dem evtl. benötigten Neuladen der Windowmanager Konfiguration (darf’s noch ein Neustart sein? 😉 ) sollten die Tasten ordnungsgemäß funktionieren.

Dann sind wir auch schon im Finale: Das Testen der neuen Konfiguration.

Schlußwort

Warum nun der ganze Zirkus, wenn’s doch so schön einfache Programme gibt, die bei der Anmeldung automatisch geladen werden?

Nun.
Ich habe persönlich eine sehr herzliche Abneigung dagegen, bei jedem Rechnerstart erst mal vor dem Bildschirm zu sitzen und zu warten bis alle kleinen Zusatzprogramme geladen sind und laufen.
Zumal jedes dieser Programme zusätzlichen Speicher und zusätzliche Prozessorzeit braucht, die man – meiner Meinung nach – minimieren kann, indem man Funktionen von Programmen nutzt, die in jedem Fall geladen werden (in diesem Fall der Kernel, der X-Server und der Windowmanager).

Ein weiterer Effekt dieses Vorgehens ist, das man nach diesem Ablauf eigentlich alle Daten zur Hand hat, um Projekte wie LinEAK zu unterstützen. Diese brauchen die Daten, die in diesem Tutorium gesammelt wurden, um die Breite der unterstützten Hardware zu erweitern. Was wiederum Ein – und Umsteigern sehr zugute kommt, die noch ganz am Anfang stehen und evtl. auf diese Helferlein angewiesen sind, oder sich nicht wirklich tief in die Materie einarbeiten wollen und mögliche Nachteile dafür in Kauf nehmen.

Wenn dieses Tutorium ein paar Leuten hilft besser mit Linux klar zu kommen hat es seinen Sinn erfüllt.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Wordpress Anti-Spam durch WP-SpamShield