Gründe, eine Tastatur mit US-Layout zu benutzen, gibt es viele: Der Programmierer liebt die einfach zu erreichenden Befehlstasten, der polyglotte Wissenschaftler die weltweit einheitliche Belegung und der Verwaltungsangestellte freut sich bei teuren Unix Workstations über den moderaten Preis einer original US-Tastatur. Auf Umlaute und andere Sonderzeichen muss jedoch dank xmodmap niemand verzichten.
Im Artikel “Tasten-Wirbel” [1] wurden die Verwendungsmöglichkeiten von xmodmap ausführlich beschrieben. Die Generierung von Umlauten und speziellen Zeichen wie ©, ® oder ½ auf Tastaturen, auf denen diese nicht vorgesehen sind, lässt sich ebenfalls mit xmodmap erreichen. In den folgenden Beispielen wird die [CapsLock]-Taste, ein Relikt aus den Zeiten der Schreibmaschine, zur Aktivierung von Sonderzeichen umfunktioniert.
Tasten, die man einfach braucht
In Tabelle 1 sind die Zeichen aufgeführt, die mit Hilfe der neu belegten [CapsLock]-Taste, der [Shift]-Taste und einer weiteren Taste erzeugt werden sollen.
Tabelle 1: Tastenkombination für Sonderzeichen
| Taste | [CapsLock] + Taste | [CapsLock] + [Shift] + Taste |
|---|---|---|
| a | ä | Ä |
| o | ö | Ö |
| u | ü | Ü |
| s | ß | ß |
| 1 | ¡ | ½ |
| 5 | ß | ° |
| 6 | ||
| 0 | ° | º |
| = | ± | ¬ |
| e | è | È |
| r | ê | Ê |
| w | é | É |
| i | ï | Ï |
| n | ñ | Ñ |
| c | ç | Ç |
| q | © | ® |
Dies funktioniert nicht nur bei XFree86 (z. B. unter Linux oder FreeBSD), sondern auch auf den Workstations von Silicon Graphics, die unter dem hauseigenen Unix-Derivat IRIX ebenfalls ein X11 mitbringen. Allerdings unterscheiden sich die keycodes der einzelnen Tasten erheblich von denen eines PCs, was getrennte Parameterdateien für beide Hardware-Plattformen notwendig macht.
Mit Linux, oder @L: *BSD
Für XFree86 wird die Zuweisung der Tasten in der ~/.Xmodmap festgelegt. Das Listing 1 zeigt die notwendigen Einträge.
Listing 1
für XFree86
keycode 66 = Mode_switch Multi_key keycode 117 = Mode_switch Multi_key keycode 39 = s S ssharp keycode 38 = a A adiaeresis Adiaeresis keycode 30 = u U udiaeresis Udiaeresis keycode 32 = o O odiaeresis Odiaeresis keycode 14 = 5 percent ssharp degree keycode 26 = e E egrave Egrave keycode 28 = t T EuroSign EuroSign keycode 27 = r R ecircumflex Ecircumflex keycode 25 = w W eacute Eacute keycode 31 = i I idiaeresis Idiaeresis keycode 21 = equal plus plusminus notsign keycode 57 = n N ntilde Ntilde keycode 58 = m M Multi_key keycode 15 = 6 asciicircum dead_acute dead_circumflex keycode 19 = 0 parenright degree masculine keycode 10 = 1 exclam exclamdown onehalf keycode 54 = c C ccedilla Ccedilla keycode 24 = q Q copyright registered
Eine automatische Umdefinition der Tasten wird bereits beim Login erreicht, wenn in der /etc/X11/xdm/Xsession ein entsprechender Befehl steht:
if [ -f "$HOME/.Xmodmap" ]; then xmodmap "$usermodmap" fi
Mit IRIX geht es ebenso
Unter IRIX funktioniert es ganz ähnlich; hier ist es die Datei ~/.sgisession, die automatisch ausgeführt wird. Diese enthält den xmodmap-Aufruf für eine Parameterdatei, z. B.:
xmodmap -v $HOME/.xmodmap.de
Dieser Parameterdatei sollte man unbedingt einen anderen Namen geben, sodass es zu keinen Kollisionen unter den verschiedenen Betriebssystemen kommt. In Listing 2 ist eine für IRIX passende Datei abgedruckt. Darin werden zur Sicherheit zuerst einige Einstellungen zurückgesetzt bevor neue Tastenbelegungen festgelegt werden.
Listing 2
für IRIX
! resets all modifiers clear shift add shift = Shift_L Shift_R clear control add control = Control_L Control_R ! use the left ALT key as the actual alt key keycode 33 = Alt_L Multi_key ! use the right ALT key as the actual alt key keycode 64 = Alt_R Multi_key ! use the CapsLock key to compose special characters keycode 28 = Mode_switch clear mod1 add mod1 = Alt_R add mod1 = Alt_L ! make the right ALT key usable… clear mod2 add mod2 = Mode_switch ! clear MODIFIERNAME ! This removes all entries in the modifier map for the ! given modifier, where valid name are: Shift, Lock, ! Control, Mod1, Mod2, Mod3, Mod4, and Mod5 (case does ! not matter in modifier names, although it does ! matter for all other names). For example, ``clear ! Lock'' will remove all any keys that were bound to ! the shift lock modifier. ! add MODIFIERNAME = KEYSYMNAME … ! This adds all keys containing the given keysyms to ! the indicated modifier map. The keysym names are ! evaluated after all input expressions are read to ! make it easy to write expressions to swap keys (see ! the EXAMPLES section). keycode 68 = u U udiaeresis Udiaeresis keycode 76 = o O odiaeresis Odiaeresis keycode 36 = a A adiaeresis Adiaeresis keycode 35 = s S ssharp ssharp keycode 54 = 5 percent ssharp degree keycode 44 = e E egrave Egrave keycode 53 = r R ecircumflex Ecircumflex keycode 37 = w W eacute Eacute keycode 75 = i I idiaeresis Idiaeresis keycode 93 = equal plus plusminus notsign keycode 57 = n N ntilde Ntilde keycode 66 = m M Multi_key keycode 22 = grave asciitilde dead_grave dead_tilde keycode 90 = apostrophe quotedbl dead_breve dead_diaeresis keycode 62 = 6 asciicircum dead_acute dead_circumflex keycode 77 = 0 parenright degree masculine keycode 30 = 1 exclam exclamdown onehalf keycode 41 = c C ccedilla Ccedilla keycode 29 = q Q copyright registered
Die Tastenbelegung sowie die erzeugten Sonderzeichen bleiben also jeweils gleich und ließen sich sogar bei Bedarf für weitere Plattformen, wie z. B. Solaris, übertragen. Das einheitliche Layout ist für jene wichtig, die mal unter Linux, mal unter IRIX oder FreeBSD arbeiten, doch überall dieselbe Tastaturbelegung und natürlich Umlaute sowie Sonderzeichen nutzen möchten.
Infos
[1] Patricia Jung: The Answer Girl – Tasten-Wirbel, LinuxUser 06 (2002), S. 74 – 80.




