Motivation
Ich persönlich bin kein wirklicher Freund sogenannter „Hotkeys“, also irgendwelcher Tastenkombinationen, die irgendwelche Funktionen ausführen. Früher gab es für fast jede Anwendung eigene „Hotkeys“, etwa für „Word“ oder „WordPerfect“. Natürlich waren die „Hotkeys“, für die gleichen Aufgaben, unterschiedlich und ich denke, in jener Computer-Urzeit, habe sich meine Abneigung gegenüber diesen vermeintlichen Helfern herausgebildet.
Trotzdem muss ich sagen, dass ich „Hotkeys“ verwende, wenn ich sie selbst definieren kann. Ich definiere sie dann nach meiner eigenen Logik, die einen Sinn für mich macht und die ich mir vor allem merken kann. Unter LXDE, Lubuntu bzw. Openbox, definiert man diese „Hotkeys“ mit sog. „Keybindings“.
Keybindings/Hotkeys
Keybindings werden beim Openbox Window Manager systemweit unter „/usr/share/lxde/openbox/rc.xml“ und benutzerspezifisch unter „$HOME/.config/openbox/rc.xml“ (bei Lubuntu unter „$HOME/.config/openbox/lubuntu-rc.xml„) konfiguriert. Eine beispielhafte Definition sieht so aus:
<keyboard>
<keybind key="A-F4">
<action name="Close"/>
</keybind>
<keybind key="A-Escape">
<action name="Lower"/>
<action name="FocusToBottom"/>
<action name="Unfocus"/>
</keybind>
<keybind key="A-space">
<action name="ShowMenu"><menu>client-menu</menu></action>
</keybind>
</keyboard>
Ein einzelnes Keybinding könnte wie folgt definiert sein:
<keybind key="A-F4">
<action name="Close"/>
</keybind>
Die wesentlichen Elemente sind „key“ und „action„.
Key
Ein Key ist eine einzelne Taste oder eine Tastenkombination. Eine Tastenkombination wird durch einen Modifier-Key eingeleitet und durch den eigentlichen Key ergänzt. Es gibt folgende Modifier-Keys:
| Modifier-Key | Taste |
| S | Umschalttaste (Shift) |
| C | Steuerungstaste (Strg bzw. Ctrl) |
| A | Alt Taste |
| W | Super Key (Windows Taste) |
| M | Meta Key |
| H | Hyper Key |
Keys sind die eigentlichen Tasten, ist man sich nicht sicher, kann man speziell bei Sonderzeichen und Umlauten das Kommandozeilen-Tool „xev“ zu Hilfe nehmen. Beispiel: „xev“ Ausgabe beim Drücken eines „ä“:
KeyRelease event, serial 41, synthetic NO, window 0x3c00001,
root 0xaf, subw 0x0, time 86008948, (501,8), root:(646,216),
state 0x0, keycode 48 (keysym 0xe4, adiaeresis), same_screen YES,
XLookupString gives 2 bytes: (c3 a4) "ä"
XFilterEvent returns: False
In der Zeile „keycode 48 (keysym 0xe4, adiaeresis)“ ist „adiaeresis“ die Information, die wir für die Definition des Keybindings benötigen. Beispiel: Durch Drücken von „Ctrl+ä“ soll das Hauptmenü gestartet werden. Ich gebe zu, daß diese Kombination vollkommen sinnbefreit ist, soll aber auch nur zu Demonstrationszwecken dienen. Die Definition wäre dann:
<keyboard>
...
<keybind key="C-adiaeresis">
<action name="ShowMenu">
<menu>root-menu</menu>
</action>
</keybind>
...
</keyboard>
Nachdem alle Definitionen erledigt sind, speichert man die Datei und meldet sich erneut an. Danach sollten die neuen Keybindings funktionieren, drückt man also auf „Ctrl+ä“, erscheint folgendes Menü:
Action
Der zweite Teil einer Keybindings-Definiton enthält die „Action“, also was passieren soll, wenn die Taste/Tastenkombination gedrückt wurde.
Eine Auflistung und Beschreibung aller verfügbaren Actions ist unter http://openbox.org/wiki/Help:Actions zu finden. Abgesehen davon, gibt es die Action „Execute“, mit der man direkt Kommandos ausführen kann. Beispielsweise wird durch folgende Definition den „Chromium-Browser“ starten (sofern er denn installiert ist):
<keybind key="A-b"> <action name="Execute"> <command>chromium</command> </action> </keybind>
Drückt man Ab- und Anmelden die Tastenkombination „Alt+b“, erscheint der „Chromium-Browser“, wie erwartet.
Key-Chains
Key-Chains kennt man beispielsweise vom Emacs Editor. Eine einleitende Taste/Tastenkombination und danach eine weitere Taste. Damit ist eine Kategorisierung möglich. Beispiel: Man will alle Hotkeys, die sich auf den Desktop beziehen mit „Ctrl+d“ einleiten und danach durch eine weitere Taste die eigentliche „Action“ definieren, wie „m“ für „Menü“, „n“ für nächstes Fenster, „v“ für vorheriges Fenster etc.
Die entsprechende Definition sähe dann wie folgt aus:
<keybind key="C-d">
<keybind key="v">
<action name="PreviousWindow"/>
</keybind>
<keybind key="n">
<action name="NextWindow"/>
</keybind>
</keybind>
Nützliche Helfer
Einige nützliche X11 Kommandos (Kommandozeile):
xev: zeigt X11 Events an. Hiermit kann man beispielsweise Keycodes ermitteln etc.
xprop: Eigenschaften von Fenstern und Schriften anzeigen
xwininfo: Informationen zu einem Fenster (Geometrie, Position, etc. ermitteln)
Fazit
Auch hier zeigt sich wieder der Vorteil eines „einfachen“ Window-Managers. Ohne große Umstände kann man fast alles konfigurieren und seinen Bedürfnissen anpassen.
Links
http://openbox.org/wiki/Help:Bindings
http://home.roadrunner.com/~computertaijutsu/fluxopen.html
