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