xmodmap, Tastaturbelegung

In diesem Text sollen einige Möglichkeiten beschrieben werden, mit denen man mittels einer US-Tastatur an einer SGI-Workstation z.B. deutsche Umlaute erzeugen kann. Die hier beschriebenen Verfahren eignen sich z.T. auch für Anwendungsprogramme wie showcase; sie ermöglichen ggf. auch das Einfügen spezieller Symbole aus dem Symbol-Font.

0. Mittels Mausmarkierung

Eine Übertragung von deutschen Umlauten in einen Text, der mit einem Texteditor wie pico ("pine"), vi oder emacs bearbeitet wird, ist (etwas abseits vom Thema) ggf. mit Hilfe der Maus möglich.

Man stellt in einem Textfenster einen Text dar, der die deutschen Umlaute und ggf. weitere ISO-Latin1-Zeichen enthält. Die Umlaute (bzw. die zu kopierende Textpassage) wird durch Überstreichen mit gedrückter linker Maustaste markiert. Nach Drücken der mittleren Maustaste erscheint dann der Umlaut (bzw. die markierte Passage) im Text. (Bei manchen X-basierten Editoren wie z.B. "point" ist es erforderlich, einen Menüpunkt wie "Insert X selection" anzuwählen.)

1. Mittels "SGI Long Compose"

In der Standardeinstellung erreicht man die "SGI_Long_Compose"-Funktion durch Drücken der folgenden Tastenkombination:

  Shift-ScrollLock

Anschließend gibt man den (langen) Symbolnamen ein und drückt dann die Enter-Taste. Die langen Symbolnamen findet man z.B. in folgender Datei:

  /usr/include/X11/keysymdef.h

wobei das vorangestellte "XK_" wegzulassen ist. Beispiel:

  Adiaeresis          Ä     (*)
  Odiaeresis          Ö
  Udiaeresis          Ü
  adiaeresis          ä
  odiaeresis          ö
  udiaeresis          ü
  ssharp              ß
  
(*) Fehler in Irix-6.2: Adiaresis (!) liefert Ä.

Beispiel:

  1. Shift-ScrollLock
  2. adiaeresis ("blind" eintippen!)
  3. Enter

2. "keyboards" und "Compose Key"

Die US-Tastatur an SGI-Workstations bietet direkt keinen "Compose Key" (Multi Key), wie man ihn z.B. an Tastaturen von SUN oder DEC findet, und mit dessen Hilfe man z.B. deutsche Umlaute zusammensetzen kann. Man kann aber u.a. mit Hilfe des Kommandos keyboards die Tastatur auf INTL (international) umschalten und erhält dann eine Emulation der "Multi_key"-Funktion durch folgende Tastenkombination:

  Shift-Alt(rechts)

Anschließend sind nacheinander zwei sinnfällige Tasten zu drücken, z.B.:

  A "          Ä
  O "          Ö
  U "          Ü
  a "          ä
  o "          ö
  u "          ü
  s s          ß

Beispiel:

  1. Shift-Alt(rechts)
  2. A
  3. "

Alternativ könnte man auch auf die deutsche Tastaturbelegung umschalten:

  1. keyboards &
  2. DE selektieren
  3. Apply drücken

Man findet jetzt die deutschen Umlaute auf den folgenden Tasten:

  '" ;: [{ -
  äÄ öÖ üÜ ß

Diese Aktion hat sehr unangenehme Seiteneffekte: "y" und "z" sind vertauscht, und die meisten Sonderzeichen liegen nun woanders! Man kann das selbstverständlich dadurch wieder rückgängig machen, daß man "US"/Apply wählt.

3. xmodmap

Die aktuelle Tastaturbelegung kann man sich mittels xmodmap wie folgt anzeigen lassen:

  xmodmap -pm
  xmodmap -pke

und ggf. auch in eine für "xmodmap" verwendbare Datei umlenken:

  xmodmap -pke > ~/.xmodmaprc

Diese Datei (z.B. ~/.xmodmaprc) kann man dann editieren und deutsche Umlaute z.B. auf Funktionstasten oder alternative Tastenfunktionen legen, z.B. (gezeigt sind nur Ausschnitte aus der Datei):

clear Shift
clear Lock
clear Control
clear Mod1
clear Mod2
clear Mod3
clear Mod4
clear Mod5
keycode  15 = F1 Adiaeresis
...
keycode  23 = F2 Odiaeresis
...
keycode  31 = F3 Udiaeresis
...
keycode  35 = s S ssharp
keycode  36 = a A adiaeresis Adiaeresis
...
keycode  65 = Mode_switch Multi_key
...
keycode  68 = u U udiaeresis Udiaeresis
...
keycode  76 = o O odiaeresis Odiaeresis
...
add Control = Control_L
add Shift = Shift_L
add Lock = Caps_Lock
add Mod1 = Alt_L
add Mod3 = Mode_switch
add Control = Control_R
add Shift = Shift_R
add Mod3 = Scroll_Lock
add Mod2 = Num_Lock

Die neue Tastaturbelegung wird durch das folgende Kommando aktiviert:

  xmodmap ~/.xmodmaprc

das man z.B. in sein ".loginrc" aufnehmen kann.

Im Beispiel erreicht man die deutschen Umlaute nun durch die folgenden Tastenkombinationen:

  Alt(rechts)-a      -> ä
  Alt(rechts)-o      -> ö
  Alt(rechts)-u      -> ü
  Alt(rechts)-s      -> ß
  Shift-F1           -> Ä
  Shift-F2           -> Ö
  Shift-F3           -> Ü
[ Alt(rechts)-Shift-a funktioniert in der Shell leider nicht! ]

Siehe auch setxkeymap und die Dateien in /var/X11/input/ .

Achtung: Die Änderung der Tastaturbelegung kann in manchen Programmen zu unerwünschten Seiteneffekten führen!

4. Texteditoren und "key mapping"

Einige Texteditoren wie vi bzw. vim, emacs oder point erlauben ein "key mapping", mit dessen Hilfe man die Tastaturbelegung während des Arbeitens mit dem Editor weitgehend individuell gestalten kann. Bei vi/vim dient hierzu z.B. die Datei ~/.exrc bzw. ~/.vimrc, und man verwendet das Kommando map! bzw. map; auf weitere Einzelheiten soll hier nicht eingegangen werden.

Anhang: ISO-Latin1-Zeichen

Zeichen Nr.   Zeichen   keysym        Compose   PostScript    HTML-Code

160 0xa0                nobreakspace  spc spc                      
161 0xa1               exclamdown      ! !
162 0xa2               cent            C /
163 0xa3               sterling        L -
164 0xa4               currency        o x     /currency
165 0xa5               yen             Y -
166 0xa6               brokenbar       | |     /brokenbar
167 0xa7               section         S O     /section
168 0xa8               diaeresis       " "     /dieresis
169 0xa9               copyright       C O     /copyright     ©   ©
170 0xaa               ordfeminine     - A     /ordfeminine
171 0xab               guillemotleft   < <     /guillemotleft
172 0xac               notsign         - |     /logicalnot
173 0xad               hyphen          - -     /hyphen
174 0xae               registered      R O     /registered    &reg;    ®
175 0xaf               macron          ^ -     /macron
176 0xb0               degree          ^ *     /degree        &deg;    °
177 0xb1               plusminus       + -     /plusminus
178 0xb2               twosuperior     ^ 2     /twosuperior
179 0xb3               threesuperior   ^ 3     /threesuperior
180 0xb4               acute           \ \     /acute
181 0xb5               mu              / u     /mu
182 0xb6               paragraph       P !     /paragraph
183 0xb7               periodcentered  ^ .     /periodcentered
184 0xb8               cedilla         , ,     /cedilla
185 0xb9               onesuperior     ^ 1     /onesuperior
186 0xba               masculine       _ O     /ordmasculine
187 0xbb               guillemotright  > >     /guillemotright
188 0xbc               onequarter      1 4     /onequarter
189 0xbd               onehalf         1 2     /onehalf
190 0xbe               threequarters   3 4     /threequarters
191 0xbf               questiondown    ? ?     /questiondown
192 0xc0               Agrave          A `     /Agrave        &Agrave; À
193 0xc1               Aacute          A '     /Aacute        &Aacute; Á
194 0xc2               Acircumflex     A ^     /Acircumflex   &Acirc;  Â
195 0xc3               Atilde          A ~     /Atilde        &Atilde; Ã
196 0xc4               Adiaeresis      A "     /Adieresis     &Auml;   Ä
197 0xc5               Aring           A *     /Aring         &Aring;  Å
198 0xc6               AE              A E     /AE            &AElig;  Æ
199 0xc7               Ccedilla        C ,     /Ccedilla      &Ccedil; Ç
200 0xc8               Egrave          E `     /Egrave        &Egrave; È
201 0xc9               Eacute          E '     /Eacute        &Eacute; É
202 0xca               Ecircumflex     E ^     /Ecircumflex   &Ecirc;  Ê
203 0xcb               Ediaeresis      E "     /Edieresis     &Euml;   Ë
204 0xcc               Igrave          I `     /Igrave        &Igrave; Ì
205 0xcd               Iacute          I '     /Iacute        &Iacute; Í
206 0xce               Icircumflex     I ^     /Icircumflex   &Icirc;  Î
207 0xcf               Idiaeresis      I "     /Idieresis     &Iuml;   Ï
208 0xd0               ETH             D -     /Eth
209 0xd1               Ntilde          N ~     /Ntilde        &Ntilde; Ñ
210 0xd2               Ograve          O `     /Ograve        &Ograve; Ò
211 0xd3               Oacute          O '     /Oacute        &Oacute; Ó
212 0xd4               Ocircumflex     O ^     /Ocircumflex   &Ocirc;  Ô
213 0xd5               Otilde          O ~     /Otilde        &Otilde; Õ
214 0xd6               Odiaeresis      O "     /Odieresis     &Ouml;   Ö
215 0xd7               multiply        x x     /multiply
216 0xd8               Ooblique        O /     /Oslash        &Oslash; Ø
217 0xd9               Ugrave          U `     /Ugrave        &Ugrave; Ù
218 0xda               Uacute          U '     /Uacute        &Uacute; Ú
219 0xdb               Ucircumflex     U ^     /Ucircumflex   &Ucirc;  Û
220 0xdc               Udiaeresis      U "     /Udieresis     &Uuml;   Ü
221 0xdd               Yacute          Y '     /Yacute        &Yacute; Ý
222 0xde               THORN           P |     /Thorn
223 0xdf               ssharp          s s     /germandbls    &szlig;  ß
224 0xe0               agrave          a `     /agrave        &agrave; à
225 0xe1               aacute          a '     /aacute        &aacute; á
226 0xe2               acircumflex     a ^     /acircumflex   &acirc;  â
227 0xe3               atilde          a ~     /atilde        &atilde; ã
228 0xe4               adiaeresis      a "     /adieresis     &auml;   ä
229 0xe5               aring           a *     /aring         &aring;  å
230 0xe6               ae              a e     /ae            &aelig;  æ
231 0xe7               ccedilla        c ,     /ccedilla      &ccedil; ç
232 0xe8               egrave          e `     /egrave        &egrave; è
233 0xe9               eacute          e '     /eacute        &eacute; é
234 0xea               ecircumflex     e ^     /ecircumflex   &ecirc;  ê
235 0xeb               ediaeresis      e "     /edieresis     &euml;   ë
236 0xec               igrave          i `     /igrave        &igrave; ì
237 0xed               iacute          i '     /iacute        &iacute; í
238 0xee               icircumflex     i ^     /icircumflex   &icirc;  î
239 0xef               idiaeresis      i "     /idieresis     &iuml;   ï
240 0xf0               eth             d -     /eth
241 0xf1               ntilde          n ~     /ntilde        &ntilde; ñ
242 0xf2               ograve          o `     /ograve        &ograve; ò
243 0xf3               oacute          o '     /oacute        &oacute; ó
244 0xf4               ocircumflex     o ^     /ocircumflex   &ocirc;  ô
245 0xf5               otilde          o ~     /otilde        &otilde; õ
246 0xf6               odiaeresis      o "     /odieresis     &ouml;   ö
247 0xf7               division        - :     /divide
248 0xf8               oslash          o /     /oslash        &oslash; ø
249 0xf9               ugrave          u `     /ugrave        &ugrave; ù
250 0xfa               uacute          u '     /uacute        &uacute; ú
251 0xfb               ucircumflex     u ^     /ucircumflex   &ucirc;  û
252 0xfc               udiaeresis      u "     /udieresis     &uuml;   ü
253 0xfd               yacute          y '     /yacute        &yacute; ý
254 0xfe               thorn           p |     /thorn
255 0xff               ydiaeresis      y "     /ydieresis     &yuml;   ÿ


Burkhard Kirste, 1997-02-14