Normale Tastaturen sind heutzutage kaum noch zu finden, besonders wenn man sich einen neuen Komplett-PC kauft ist eigentlich immer eine sogenannte Multimedia-Tastatur dabei. Gemeint ist damit eine Tastatur mit zusätzlichen Tasten, um zum Beispiel einen Media-Player zu steuern oder bestimmte Programme auf Knopfdruck zu starten. Bei mir war es eine Chicony KBR0801, eine ziemlich billige Funk-Tastatur bei der schon nach kurzer Zeit die Leertaste nur noch funktionierte wenn man die Mitte traf.
Nun bin ich gross geworden mit normalen Tastaturen und zwar die mit 102-Tasten (als es noch keine Windows-Tasten gab), aber irgendwann juckte es mich die brachliegenden Tasten zum Leben zu erwecken. Mittlerweile gibt es auch schon ein paar Programme mit denen sich ohne grosse Probleme diese Tasten belegen lassen. Da wäre zum einen lineak, dann keyTouch und letztlich ese-keydaemon. Ich habe mich für lineak entschieden. Es unterstützt von Hause aus mit Abstand am meisten Tastaturen, die verfügbaren Plugins für KDE haben mir auch sehr gut gefallen und es ist in Ubuntu Breezy enthalten.
Nach der Installation (apt-get install lineakd lineak-kdeplugins) schaut man zuerst mit lineakd -l nach, ob die eigene Tastatur unterstützt wird. Bei meiner Chicony war das der Fall und auch mein neues Logitech Media Keyboard lässt sich dort finden. Wird die Tastatur unterstützt erstellt man mit lineak -l LOG-MK2 eine Konfiguration in ~/.lineak/lineak.conf . Dort sind schon ein paar Konfigurationen vorgegeben. Wer KDE einsetzt sollte unbedingt die man-page zu den KDE-Plugins lesen (man lineak_kdeplugins). Dort sind jede Menge Befehle vermerkt mit denen sich sehr einfach Amarok, Juk oder der Konqueror steuern lassen. Diese Befehle einfach in der erstellten Konfiguration den Tasten zuordnen und linead in einen X-Terminal starten. Wenn man andere Programme steuern will, finde z.B. in den Linux-Foren nützliche Hilfe. Sollte nun in Zukunft lineak beim Einloggen gestartet werden setzt man einfach einen Symlink im KDE-Autostart Ordner (cd ~/.kde/Autostart; ln -s /usr/bin/lineakd lineakd).
Etwas aufwändiger wird das Unterfangen wenn die Tastatur nicht unterstützt wird. Dann muss man für die einzelnen Zusatz-Tasten die sogenannten Keycodes ermitteln. Dazu nutzt man entweder xev oder evtest. Startet man xev und drück eine Taste erhält man je einen KeyPress- und einen KeyRelease-Event Hier im Beispiel für den Keycode 230:
KeyPress event, serial 31, synthetic NO, window 0x1a00001,
root 0x131, subw 0x0, time 25883876, (126,897), root:(135,958),
state 0x10, keycode 230 (keysym 0x0, NoSymbol), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 31, synthetic NO, window 0x1a00001,
root 0x131, subw 0x0, time 25883964, (126,897), root:(135,958),
state 0x10, keycode 230 (keysym 0x0, NoSymbol), same_screen YES,
XLookupString gives 0 bytes:
Man drück nun also alle Tasten und notiert sich den Keycode. Dabei kann es vorkommen, das man keinen Keycode erhält. Das kann passieren, aber dagegen tun kann man wenig. Es gibt leider Tastaturen die spezielle Treiber benutzen, daher sollte man sich über jede erkannten Keycode freuen. Hat man soweit alle Tasten zusammen trägt man die Ergebnisse anhand der dortigen Vorbilder in die /etc/lineakkb.def Datei. Dann startet man den lineakd wie oben beschrieben. Fertig.
das ganze geht auch ohne lineak mit bordmitteln. http://www.kubuntu.de/forum/forum.php?req=thread&id=1253
läuft zumindest beim mir absolut prima und ohne probleme.
Mein MS Natural Keyboard Pro ist auch von Hand eingerichtet – kein weiterer Daemon der im Hintergrund läuft.
Dazu einfach mit ‘showkey’ auf einer echten Konsole (also nicht xterm) die Scancodes der Tasten ermitteln.
Dann braucht man nur noch ein kleines Skript beim Booten auszuführen:
#!/bin/sh
# assign keycodes to some buttons which don’t have one
setkeycodes e064 129 # My Pictures
setkeycodes e03c 130 # My Music
setkeycodes e005 131 # Messenger
setkeycodes e016 132 # Log off
# assign keycodes to some mysteriously appearing events
setkeycodes e001 133
setkeycodes e002 133
setkeycodes e059 133
# map special F keys to F13 – F24
setkeycodes e03b 139 # F1
setkeycodes e008 140 # F2
setkeycodes e007 142 # F3
setkeycodes e03e 143 # F4
setkeycodes e03f 146 # F5
setkeycodes e040 147 # F6
setkeycodes e041 148 # F7
setkeycodes e042 149 # F8
setkeycodes e043 150 # F9
setkeycodes e023 152 # F10
setkeycodes e057 154 # F11
setkeycodes e058 155 # F12