Aus LinuxUser 11/2002

xmodmap bringt Umlaute auf US-Tastaturen

Eingedeutscht

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

~/.Xmodmap

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

~/.xmodmap.de

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.

LinuxUser 11/2002 KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS
Deutschland

Hinterlasse einen Kommentar

  E-Mail Benachrichtigung  
Benachrichtige mich zu: