Tastaturen mit Spezialtasten nutzen
Dieser Beitrag stammt aus meinem alten Blog und wurde nachträglich übertragen. Etwaige Links auf alte Blogeinträge wurden angepasst.
Meine neue Tastatur hat, wie das besonders bei kabellosen gerne so ist, auch einige Spezialtasten. Diese wollte ich gerne unter Linux nutzen, und nachdem das tolle Programm (lineak
), welches das eigentlich können sollte, nicht funktioniert hat und wenn ich das nicht falsch verstanden habe eh nur unter X funktionieren kann, hab ich mich gestern über andere Möglichkeiten informiert.
Dazu zählt, ganz einfach die Scancodes, die diese Tasten wie die normalen auch produzieren, entweder in spezielle Anweisungen (auf die nächste Konsole wechseln z.B.) oder in andere Tastendrücke (oder auch ganze Folgen von Tastendrücken) umzuwandeln. Das klappt dann allerdings nur auf der Konsole.
Alle folgenden Schritte sollte man als root
und möglichst auch and der Konsole durchführen, nicht unter X.
Zunächst braucht man die Scancodes. Dafür ruft man showkey -s
auf. Das zeigt direkt die Scancodes aller Tastendrücke an. Dabei gibt es (meist) jeweils einen Code, der beim Drücken ausgelöst wird (und auch beim Halten der Taste, immer wieder wiederholt wird) und einen Code beim Loslassen. Interessieren dürfte meist nur der zum Drücken, auch wenn es vielleicht Fälle gibt, wo man beides benutzen kann. Die Ausgabe zeigt z.B. 0xe0 0x30
an, wenn man eine Taste drückt. Der Scancode ist dann e030
. (Nicht wie ich in Panik geraten, dass man showkey
nicht wieder beendet bekommt – einfach 10 Sekunden warten. Das steht auch da, wenn man das Programm startet, aber man überliest es schnell…)
(Edit: Ich habe ein seltsames Phänomen gefunden – zwei der Spezialtasten („Favoriten“ und „E-Mail“) haben bei meiner Tastatur dieselben Scancodes wie die linke bzw. rechte Windows-Taste. Wie die je unterschieden werden sollen, ist mir ein Rätsel. Schickt der da noch mehr mit, das showkey
nicht sehen kann? Oder kann die Tastatur gar umprogrammiert werden? Die Tastatur hat auch eine Taste, um F1 bis F12 für andere Funktionen zu nutzen – dann bekomme ich garkeinen Scancode von diesen Tasten. Ob das irgendwie zusammenhängt?)
Mit dumpkeys | less
zeigt man sich nun die Liste der Zuweisungen an. In meinem Fall waren die Keycodes 120-127 unbenutzt, was mir genau die 8 Positionen gibt, die ich brauche. Je nach Konfiguration können auch sehr viel mehr verfügbar sein.
Jetzt muss man einem freien Keycodes einen der Scancodes zuweisen, die man vorher besorgt hat. In meinem Fall für die „Volume +“ Taste ist das
setkeycodes 121 e030
Die folgenden Anweisungen schreibt man am besten in eine Datei. Als erstes ein Beispiel, wo dem gerade definierten Keycode ein String zugeordnet wird (ich benutze oft mplayer
, wo „0“ die Lautstärke erhöht):
string F121 = "0"
keycode 121 = F121
Hier ein Beispiel für eine andere Möglichkeit – damit kann man durch die Konsolen „blättern“:
keycode 121 = Decr_Console
Das muß man dann noch mit loadkeys < Datei
auführen, und Voila, hat man die Tasten einer (hoffentlich) sinnvollen Verwendung zugeführt.
Mehr informationen findet man natürlich in den Manpages der einzelnen Programme, oder in der Ausgabe von dumpkeys
– man findet genug Beispiele für alle Möglichkeiten, wie z.B. Boot
(das, was Standardmäßig Strg-Alt-Entf zugeordnet ist). Und wenn es alles funktioniert, kann man die nötigen Aufrufe z.B. in der /etc/init.d/boot.local
fest einbauen.