Die Freiheit, Akzente zu setzen
The Answer Girl: Das Geheimnis der Compose-Taste
Ereignis im X-Server
Diese Vermutung bestätigt der X-Event-Tester xev (Abbildung 1). Im X-Terminal, aus dem heraus er mit dem Kommando xev aufgerufen wurde, registriert er alle den X-Server betreffenden Ereignisse (Mausbewegungen, Tastendrücke, Fokuswechsel bei Fenstern u. ä.), die passieren, während der Mauszeiger im quadratischen xev-Fenster verweilt.
Abbildung 1 zeigt rot umrandet die beiden Ereignisse "Drücken" (KeyPress event) und "Loslassen" (KeyRelease event) der [AltGr]-Taste. Aus beiden Einträgen geht hervor, dass [AltGr] tatsächlich den Keycode 113 trägt.
Auch dass die linke Umschalttaste (Keycode 50) tatsächlich die Funktion einer [Shift]-Taste übernimmt, lässt sich so nachvollziehen. Dennoch sind wir auf der Suche nach der Taste, die die Compose-Funktionalität übernimmt, noch nicht besonders weit gekommen, denn xmodmap -pkgrep Compose gibt überhaupt keinen Treffer aus.
Zum Glück hilft hier man xmodmap aus der Patsche: Sucht man darin mit /Compose nach dem Stichwort Compose, gelangt man unweigerlich zur Zeile Multi-language key (sometimes labeled Compose Character). Das Compose-"Zeichen" ("character") heißt also auch "vielsprachige Taste", "multi-language key", abgekürzt Multi_key, wie die Manpage etwas später mitteilt.
Mit dieser Kurzbezeichnung bewaffnet macht es wenig Mühe, xmodmap -pk zu entlocken, dass die Taste mit dem Keycode 113 – also [AltGr] – mit [Shift] kombiniert werden will, um ihr die Compose-Funktion zu entlocken (Listing 2). Die Probe auf's Exempel – [Umschalt-AltGr][´][e] – resultiert tatsächlich in einem é, [Umschalt-AltGr][Umschalt-´][e] in è (in der Shell allerdings nur dann, wenn sie auch Umlaute ausgibt [2]).
Was aber ist die in Listing 2 aufgeführte Taste mit dem Keycode 116, die selbst – also als einzelner Tastendruck – als [Compose] wirken soll? Wer keine Lust hat, mit xev auf die langwierige Suche zu gehen, greift auf das (bei den meisten Distributionen nicht standardmäßig installierte) Programm xkeycaps [3] aus dem meist gleichnamigen Paket zurück.
Kasten 1: Caps_Lock zu Compose
Wenn der Distributor nicht freiwillig dafür sorgt, dass eine Einzeltaste (statt oder neben der fingerbrecherischen Kombination [Umschalt-AltGr]) die Aufgabe des [Compose]-Keys übernimmt, lässt sich das auf eigene Faust ändern. Im Idealfall überträgt man sie einer Taste, bei der es nicht auffällt, wenn sie ihre angestammte Funktion verliert – zum Beispiel dem ewigen Ärgernis [CapsLock].
Die nötigen Funktionsänderungen trägt man in eine Datei im Home-Verzeichnis (etwa .xmodmaprc) ein, die xmodmap als Argument mit auf den Weg bekommt. Damit sie beim Start von X oder beim grafischen Login wirksam werden, fügt man den Befehl xmodmap .xmodmaprc vor dem Aufruf des Window-Managers oder KDE/GNOME-Startskripts in die persönliche Startdatei für das X-Window-System (traditionell ~/.xinitrc bei Verwendung der startx-Methode, ~/.xsession bei grafischem Login) ein. Wenn die Distribution von sich aus für den passenden xmodmap-Aufruf sorgt, braucht man sich um Letzteres nicht kümmern: SuSE pflegt automatisch alle Änderungen an der Tastaturbelegung ein, die die Benutzerin in ~/.Xmodmap ablegt. Als da wären:
remove Lock = Caps_Lock keysym Caps_Lock = Multi_key
Die zweite Zeile weist der [CapsLock]-Taste die [Compose]-Funktion zu. Alternativ ermittelt man ihren Keycode (66) und schreibt
keycode 66 = Multi_key
(Vorteil der keysym-Methode: Sie funktioniert nicht nur auf PCs, sondern auch auf anderen Plattformen, auf denen der [CapsLock]-Key einen anderen Keycode hat.) Belässt man es bei einer dieser beiden Zeilen, fungiert die Taste zwar als [Compose], behält aber weiterhin ihre störende Funktion des Toggelns zwischen Groß- und Kleinschreibung bei. Das erkennt man nicht nur am praktischen Ausprobieren, sondern auch daran, dass der Befehl xmodmap ohne weitere Argumente die neue [Multi_key]-Taste weiterhin als
lock Multi_key (0x42)
…, also als Sperrtaste ("to lock" – sperren) listet. (0x42 ist deren Keycode in Hexadezimalschreibweise: 4*16^1+2*16^0=66.) Deshalb sorgt remove Lock = Caps_Lock am Anfang der von xmodmap zu lesenden Datei dafür, dass die (dann noch mit der Caps_Lock-Funktion behaftete) Taste aus dem Pool der Sperrtasten entfernt wird.
Mit grafischer Unterstützung
Per xkeycaps & gestartet, ist dieses grafische Tool zwar alles andere als ein Musterbeispiel benutzerfreundlicher GUI-Programmierung (Abbildung 2), hat aber den Vorteil, dass man einfach nur mit der Maus über die stilisierte Taste fahren muss, um im oberen Teil des Fensters den Keycode und die Belegung (KeySym) zu erfahren.
Dazu gilt es zunächst, die eigene Tastatur im Select Keyboard-Dialog korrekt auszuwählen: Auf gängige, "schnörkellose" Tastaturen mit Windows-Tasten passt etwa die Beschreibung als PC-Tastatur 105 key, wide Delete, tall Enter (105 Tasten, breite [Backspace]- und hohe [Enter]-Taste), deutsches Tastatur-Layout (XFree86; German); die mittlere Maustaste erlaubt das Scrollen mit Hilfe der grauen "Rollbalken". Abbildung 2 verrät dann, dass der ominöse Keycode 116 auf die rechte [Windows]-Taste passt. [Windows (rechts)][´][e] ergibt bei vielen Distributionen daher ebenfalls ein é (nicht jedoch zum Beispiel unter Red Hat, wo der Keycode 116 einem anderen Zeichen zugeordnet ist).



