Sondertasten und Multimediatasten #
Auf vielen Tastaturen gibt es spezielle Tasten, die in einer normalen Linux-Umgebung nicht belegt sind. Dies sind z.B. die sogenannten "Multimediatasten", die oftmals Beschriftungen haben, um einen Musikplayer zu steuern, das sind Tasten wie "Sleep", "Power", etc. und last not least sind auch die auf vielen Tastaturen befindliche "Windows"-Tasten solche Sondertasten.
Über das Problem des KommaImZiffernblock gibt es übrigens eine eigene Wiki-Seite.
So wirds gemacht #
Einen guten Link zum Thema gibt es unter
Aber hier eine kurze Zusammenfassung:Schritt eins: keycode #
Der Kernel bekommt von der Tastatur sogenannte "raw scan codes". Diese werden in den allermeisten Fällen und einem halbwegs aktuellen Kernel von diesem in sogenannte Keycodes umgewandelt. Damit arbeiten dann alle Konsolenprogramme. An dieser Stelle hilft das Kommandozeilenprogramm xev, mit dem man diesen Keycode anzeigen kann. Wer hier eine Reaktion auf seine bisher funktionslose Taste bekommt, hat schon so gut wie gewonnen.
Auf meinem Sony Vaio zum Beispiel gibt es einige Tasten, die Keycodes ergeben und manche, die das (leider) nicht tun. Dabei lohnt es sich übrigens, nicht nur die richtigen Tasten auszuprobieren, sondern auch einige der auf Laptops üblichen Kombinationen mit der "Fn"-Taste haben eigene keycodes.
Schritt zwei: Keysym #
Der X-Server benutzt nun selber sogenannte keysyms. Diese werden mit dem Programm xmodmap einem keycode zugeordnet. Wer mit xev einen keycode gefunden hat, kann evtl. in /usr/share/X11/XKeysymDB nachsehen, welche keysyms (neben den einfachen wie "A" oder "F1") erlaubt sind. Die Keycodes können direkt mit dem Programm zugeordnet werden, sollten langfristig aber in die Datei ~/.Xmodmap geschrieben werden. Für mein Sony Vaio z.B. steht dort:
keycode 160 = XF86AudioMute keycode 174 = XF86AudioLowerVolume keycode 176 = XF86AudioRaiseVolume keycode 164 = XF86AudioStop keycode 162 = XF86AudioPlay keycode 144 = XF86AudioPrev keycode 153 = XF86AudioNext
Wenn man (wie ich hier) die Standard-Keysyms benutzt, kann es passieren, daß die meisten Programme bereits von selber funktionieren. Bei mir reichte z.B. schon obige Einstellung, damit KDE dafür sorgte, daß die Lautstärke-Einstellungen funktionierten.
Schritt drei: Eine Applikation finden, die die keysym benutzt #
Nachdem die keysyms passen, kommt nun die letzte Hürde: Man muss ein Programm haben, daß mit dem neuen keysym-Tastaturcode auch etwas anfangen kann. Hier kommt es stark auf die jeweilige Applikation selber an. So unterstützen wohl die meisten Musikplayer bereits automatisch die entsprechenden Tasten. Wer selber etwas besonderes will, muss in die Doku sehen. Einfach zu bewerkstelligen ist das Starten von Applikationen. Dies geht z.B. über das KDE-Menü ganz einfach (im Kontrollzentrum). Dort kann man für jeden Menüpunkt eine Tastenkombination zum STarten anlegen.
Sondertasten in Java (am Beispiel Eclipse) #
Java ist ja schon wieder eine ganz eigene Welt. Natürlich funktionieren da die Tastaturcodes, die der X-Server vorgibt, nicht. :-( Aber es geht dennoch. Ein Blick auf file:///home/tbayen/Daten/Dokumentationen_dontbackup/jdk-1.6-doc/api/java/awt/event/KeyEvent.html liess mich erkennen, welche Codes es in Java gibt. Also beschloss ich, einfach einen davon zu nehmen. Dabei fiel mir vor allem auf, daß dort 24 F-Tasten definiert sind. Also habe ich folgende .Xmodmap-Datei erstellt:
keycode 234 = F13
Dieser Eintrag definiert die Taste 234 (Sondertaste mit einem Symbol in der Art wie "Blättern nach links" auf zwei meiner Tastaturen) als F13. Nun kann ich in Eclipse im Preferences-Menü unter "General -> Keys" im Eingabefeld für "Binding" diese Taste wie jede andere Taste drücken und erhalte die Anzeige "F13". Damit kann ich jetzt Eclipse-Funktionen per Sondertaste auslösen.
-- ThomasBayen