Zauberspiele mit XModMap
Es kommt des Öfteren vor, dass man ein Zeichen eintippen will, ohne dass es eine entsprechende Taste gibt. In der Regel bedient man sich einer Zeichentabelle wie bspw. gucharmap1, eine funktionale, aber langsame Variante, vor allem, wenn man gewisse Zeichen oft eingibt. Hier kommt XModMap ins Spiel, ein Kommandozeilenwerkzeug zum Ändern der Tastaturbelegung.
Als erstes holen wir uns die Liste aller Modifikatoren (Sondertasten (Alt, Meta, AltGr, Super, Hyper, Compose, Steuerung & Co.), die nur in Verbindung mit anderen Tasten sinnvoll sind):
xmodmap -pm
Die Ausgabe entspricht in etwa dieser:
xmodmap: up to 4 keys per modifier, (keycodes in parentheses): shift Shift_L (0x32), Shift_R (0x3e) lock Caps_Lock (0x42) control Control_L (0x25), Control_R (0x69) mod1 Alt_L (0x40), Meta_L (0xcd) mod2 Num_Lock (0x4d) mod3 mod4 Multi_key (0x85), Super_R (0x86), Super_L (0xce), Hyper_L (0xcf) mod5 ISO_Level3_Shift (0x5c), Mode_switch (0xcb)
Eine Tastatur hat vier Level:
- Level 1 erreicht man, indem man einfach eine Taste drückt
- Level 2 erreicht man, indem man zusätzlich Shift drückt
- Level 3 erreicht man, indem man zusätzlich ISO_Level3_Shift drückt (i. d. R. AltGr)
- Level 4 erreicht man, indem man zusätzlich Shift und ISO_Level3_Shift drückt
Da die Level 5 – 8 standardmäßig nicht erreichbar sind und daher äußerst selten genutzt werden, werden diese im Artikel nicht weiter erwähnt, weiterführende Informationen hierzu findet man hier.
So erklärt sich auch die Ausgabe von XModMap:
- 1. Spalte: Die Taste auf der Tastatur
- 2. Spalte: Symbol auf Level 1
- 3. Spalte: Symbol auf Level 2
- 4. Spalte: Symbol auf Level 3
- 5. Spalte: Symbol auf Level 4
Logischerweise müssen nicht alle Level belegt sein.
Als nächstes lassen wir uns unsere aktuelle Konfiguration ausgeben:
xmodmap -pke
Auszug aus meiner Konfiguration:
keycode 19 = 0 equal 0 equal braceright degree braceright keycode 20 = ssharp question backslash U1E9E backslash U1E9E keycode 21 = dead_acute dead_grave dead_acute dead_grave dead_cedilla dead_ogonek dead_cedilla keycode 22 = BackSpace NoSymbol BackSpace NoSymbol BackSpace keycode 23 = Tab ISO_Left_Tab Tab ISO_Left_Tab Tab ISO_Left_Tab keycode 24 = q Q q Q at Greek_OMEGA at keycode 25 = w W w W lstroke Lstroke lstroke Lstroke
In der ersten Spalte steht die Taste, in den anderen deren Belegung; entweder ein Keycode (dezimal, bspw. keycode 25 (= w)), ein Keysym-name (alpha, bspw. keysym w) oder ein Keysym (hexadezimal bspw. keysym 0x0077 (= w)). Eine Liste der Keysym-Namen/Keysyms befindet sich in /usr/include/X11/keysymdef.h (oder online).
Die Konfiguration kann sowohl temporär als auch permanent gemacht werden.
Als Beispiel wollen wir die Taste e dazu bringen, im 3. Level € und im 4. ε zu erzeugen.
Temporäre Lösung:
xmodmap -e "keysym e = e E EuroSign Greek_epsilon EuroSign Greek_epsilon"
(Wie oben erwähnt wird auf die Level 5 – 8 nicht weiter eingegangen, allerdings spricht meine Tastatur auf 3 und 4 nicht an, sondern auf 5 und 6, weshalb diese Kopien von 3 und 4 sind.)
Permanente Lösung:
$HOME/.Xmodmap öffnen oder erstellen und den Befehl (bis auf xmodmap -e) eintragen:
keysym e = e E Eurosign Greek_epsilon Eurosign Greek_epsilon
Die Datei lässt sich via
xmodmap $HOME/.Xmodmap
laden. GNOME bspw. fragt beim nächsten Sitzungsstart nach, ob die Datei jedesmal geladen werden soll oder nicht, was wir bestätigen.
Nun zu etwas praxisnäheren Beispielen.

