Moderne Tastaturen und vor allem Laptop-Tastaturen verfügen über zusätzliche Tasten, die unter Windows mit Funktionen zu Multimediasteuerung belegt sind.
Um das unter Linux hinzubekommen, ist ein bisschen Handarbeit notwendig.
Zunächst muss der Keycode unbelegter Tasten ermittelt werden. Das kann man mit xev durchführen. Dazu startet man xev in einem Terminalfenster. In das sich öffenende Fenster setzt man den Mauscurser und drückt jetzt die zu analysierenden Tasten. Wenn die Taste nicht tot ist, dann sie man im Terminalfenster folgende Meldungen
KeyPress event, serial 31, synthetic NO, window 0x2200001,
root 0x85, subw 0x2200002, time 3254282586, (53,28), root:(1151,600),
state 0x0, keycode 231 (keysym 0x20ac, EuroSign), same_screen YES,
XLookupString gives 3 bytes: (e2 82 ac) "€"
XmbLookupString gives 3 bytes: (e2 82 ac) "€"
XFilterEvent returns: False
KeyRelease event, serial 31, synthetic NO, window 0x2200001,
root 0x85, subw 0x2200002, time 3254282709, (53,28), root:(1151,600),
state 0x0, keycode 231 (keysym 0x20ac, EuroSign), same_screen YES,
XLookupString gives 3 bytes: (e2 82 ac) "€"
XFilterEvent returns: False
KeyPress event, serial 31, synthetic NO, window 0x2200001,
root 0x85, subw 0x2200002, time 3254286925, (53,28), root:(1151,600),
state 0x0, keycode 151 (keysym 0x1008ff5b, XF86Documents), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
Wie man sieht, gibt es bei den zwei Tasten mit den Keycodes 231 und 151 unterschiedliche Zuordnungen. Bei der ersten Taste ist das €-Zeichen mit EuroSign definiert und die zweite Taste ist mit der Funktion XF86Documents belegt.
Diese Funktionen für Xorg findet man in den beiden Dateien
/usr/share/X11/XKeysymDB
/usr/include/X11/keysymdef.h
Wenn jetzt aber die Taste nicht unter xev reagiert, also keinen Output generiert, dann hilft uns der Kernel mit seinen Informationen weiter. Dazu gibt man im Terminalfenster folgenden Befehl ein
multitail /var/log/messages
oder
less /var/log/messages
Bei dem Betätigen der toten Tasten wird man folgende Kernelmeldungen sehen, die alle "atkbd.c" enthalten.
kernel: atkbd.c: Unknown key pressed (translated set 2, code 0xd5 on isa0060/serio0).
kernel: atkbd.c: Use 'setkeycodes e055 <keycode>' to it known.
kernel: atkbd.c: Unknown key released (translated set 2, code 0xd5 on isa0060/serio0).
kernel: atkbd.c: Use 'setkeycodes e055 <keycode>' to it known.
Hier sieht man auch bereits wie die jeweilige Taste aktiviert werden kann, nämlich mit
setkeycodes e055 <keycode>
Damit die Keycodes automatisch mit dem Bootvorgang bekanntgemacht werden können, verwendet man hierfür bei Debian die Datei /etc/rc.local und trägt hier den setkeycodes-Befehl mit den passenden Keycodes ein.
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
setkeycodes e033 231 # '€' character
setkeycodes e034 253 # '@' character instead of '$'
setkeycodes e055 $KEY_ # Orange Wireless On (hardware, led, informational only)
setkeycodes e056 $KEY_ # Orange Wireless Off (hardware, led, informational only)
exit 0
Die einfachste Methode, herauszufinden welche Keycodes noch frei sind, erreicht man mit
xmodmap -pke
Der Befehl liefert alle belegten und unbelegten Keycodes, von denen man Letztere für setkeycodes verwenden kann. Nur muss man die Keycodes auch mit Zeichen oder Funktionen belegen. Dazu generiert man sich ein Abbild der momentanen Tastaturbelegung, indem den obigen Befehl in die Datei ~/.Xmodmap im HOME-Verzeichnis umleitet
xmodmap -pke > .Xmodmap
Diese Datei kann jetzt mit dem Lieblings-Editor ergänzt werden, z.B.
keycode 223 = XF86Sleep
keycode 224 =
keycode 225 =
keycode 226 =
keycode 227 =
keycode 228 =
keycode 229 =
keycode 230 =
keycode 231 = EuroSign
keycode 232 =
keycode 233 =
keycode 234 =
keycode 235 =
keycode 236 = XF86Mail
keycode 237 =
Anschliessend lädt man die neue Xmodmap mit
xmodmap .Xmodmap
Soll die Datei mit dem Starten des KDE geladen werden, so hilft ein kleines Script in ~/.kde/Autostart/
#! /bin/sh
/usr/bin/xmodmap $HOME/.Xmodmap
Ausführbar gemacht, wird das Script bei der KDE-Anmeldung die Xmodmap laden
chmod a+x .kde/Autostart/xmodmap.sh