Compose Key mittels Xmodmap
Unter einem unixoidem Betriebssystem kann man Capslock für den X-Server entweder mittels xmodmap umbiegen oder mittels der XKBD-Extensions des X-Servers.
Mittels xmodmap kann man so z.B. aus einer Caps-Lock Taste eine Compose-Key Taste machen:
~$ cat <<EOF >>~/.xmodmap
clear Lock
! keycode über xset ablesen
keycode 115 = Multi_key
EOF
~$ xmode ~/.xmodmap
Nun kann man mittels Compose_key o c das allseits beliebte Copyright Zeichen © erzeugen. Den Keycode erfährt man dabei mit xset.
Compose Key mittels xkb-Extension
Selbiges kann man auch mittels der xkb-Extensions des X-Servers einstellen. Der Compose Key wird dabei in der Konfigurationsdatei des X-Servers /etc/X11/xorg.conf in der Section InputDevice definiert:
~$ cat /etc/X11/xorg.conf
[...]
Section "InputDevice"
Identifier "Keyboard1"
Driver "kbd"
Option "XkbRules" "xorg"
Option "XkbModel" "pc105"
Option "XkbLayout" "de"
Option "XkbVariant" "nodeadkeys"
Option "XkbOptions" "compose:caps"
EndSection
[...]
Nach einem Neustart des X-Servers sollte dabei Compose auf der CapsLock Taste liegen.
Compose Key auf der Konsole
Für die reine Textkonsole muß man mit den keycodes rumhantieren. Showkey zeigt einem dabei freundlicherweise den Keycode der Taste an. Hier ist keycode 125 = Caps Lock.
Nun kann man eine eigene Map erzeugen, in dem man zum Beispiel die vorhandene unter /usr/share/keymaps/i386/de-latin1.kmap.gz die Zeile keycode 125 = Compose hinzufügt (Backup vorher nicht vergessen!).
Man kann sich auch die Mechanismen von console-tools bzw. kbd zu Nutze machen. Beide Tools ermöglichen es einem, Keys zu remappen. Dies geschieht über /etc/kbd/remap bzw. /etc/console-tools/remap. Dabei handelt es sich um ein simples Sed-Script, dass die Ausgabe von dumpkeys ausgewertet wird und dann wieder an loadkeys übergeben wird. So kann man z.B. Caps Lock folgendermaßen auf Control umbiegen:
s/keycode 58 = Caps_Lock/keycode 58 = Control/;
Möchte man etwas hinzufügen (z.B. ein die Belegung der Compose-Taste) so fügt man die folgende Zeile hinzu:
$a\
keycode 125 = Compose
Das heißt, dass am Ende der Ausgabe der Ausdruck "keycode 125 = Compose" hinzugefügt wird. Sed ist aber ein anderes Thema. Dazu mehr ein anderes Mal.
Danach das entsprechende Script in /etc/init.d restarten (der Name hängt davon ab, ob kbd oder console-tools genutzt wurde, wahrscheinlich irgendwas wie *console*) und man kann mit compose ae æ erzeugen.
Windows
Unter Windows wollte ich CapsLock zu einer Windows-Taste mappen, da ich keine Windows Taste besitze und ich die Windowstaste als Shortcut Taste für QuickOpen benutzen will.
Über die Windows Registry kann man unter Windows so ziemlich jeden Key remappen, den man möchte, ohne irgendwelche absonderlichen Programme zu installieren. Die folgenden Zeilen remappen in Windows Capslock zur Windows Taste um:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,5B,E0,3A,00,00,00,00,00
(hier zu downloaden)
Einen Rechtsklick auf die Datei und Installieren anklicken und die neue Keymap ist installiert. Aktiv wird sie erst, wenn man das System rebootet hat oder An- bzw. abgemeldet ist. Das hängt davon ab, ob man den Schlüssel in HKEY_LOCAL_MACHINE erstellt (global gültig, erfordert einen Restart) oder in HKEY_CURRENT_USER (gültig nur für den aktuell angemeldeten Benutzer, ein- und ausloggen sollte reichen).
Der Scancode sieht abenteuerlich aus und definiert sich folgendermaßen:
- zunächst kommen 8 zweistellige Paare von Nullen. Die müssen immer vorhanden sein.
- die folgenden 4 zweistelligen Zahlen geben an, wieviele Keys gemapped werden sollen (02 für einen Key, 03 für 2 zu mappende Keys, und so weiter...)
- die nächsten 2 zweistelligen Zahlen definieren, die neue Funktion der Taste (hier (5B E0 für die linke Windows Taste).
- danach folgen 2 zweistellige Zahlen, die angeben, welche Taste umdefiniert wird (3A,00 für CapsLock)
- (evtl. folgende Tastendefinitionen, je nach dem wieviele Tasten definiert werden sollen (siehe Punkt 2)
- es folgen 4 zweistellige Nullen, die das Ende definieren
Die Codes der einzelnen Tasten lassen sich hier und hier ablesen.
