Viele von euch haben bestimmt so eine Tastatur mit vielen zusätzlichen Tasten, die unter Linux zunächst mal gar nichts tun. Das kann man aber in den Griff kriegen.
Die einfachste mir bekannte Lösung ist das Programm
keytouch, das euer Paketmanager möglicherweise kennt, sonst aber auf der Seite heruntergeladen und selbst installiert werden kann. Keytouch ist ein grafisches Programm, welches bereits eine ganze Reihe von Tastaturen kennt und deren Tasten recht frei konfigurierbar macht. Der einzige Wermutstropfen, sofern die Tastatur wirklich bekannt ist, ist m.E., dass man Tasten keine Tastenkombinationen zuweisen kann. Man kann lediglich einer Taste z.B. die gleiche Bedeutung wie F12 geben, so dass diese Taste genau so funktioniert wie F12, aber man kann ihr nicht z.B. Strg+Alt+F12 zuweisen.
Dies kann aber, wenn es gewünscht wird, umgangen werden, indem xvkbd verwendet wird. Dieses Programm simuliert normalerweise eine Tastatur, die in einem Fenster eingeblendet wird, aber mit dem Parameter -text kann auch eine Texteingabe simuliert werden.
Praktisches Beispiel: ich verwende die Cherry CyMotion Master Linux Tastatur; die unterscheidet sich von der Windows-Version durch einen Pinguin statt des Windows-Zeichens auf der linken Win-Taste und ein @ auf der rechten und hat außerdem drei Tasten, die für einen Desktop-Wechsel gedacht sind. Leider setzt der Cherry-Treiber (keyman) auf alten Bibliotheken auf und ist zudem auf SuSE Linux ausgerichtet, so dass eine Installation unter Gentoo bei mir bisher erfolglos blieb. Enter keytouch.
Keytouch kennt diese Tastatur und konfiguriert die meisten Tasten (außer der @-Taste) gleich richtig, aber es benutzt eine KDE-Funktion für den Desktopwechsel. Ich verwende aber XFce, daher funktioniert das bei mir nicht. Stattdessen konfiguriere ich die drei Tasten, denen jeweils ein Desktop zugeordnet ist und die XPress 1 - 3 heißen, so, dass sie xvkbd mit dem geeigneten Parameter und der Tastenkombination für den Desktopwechsel aufrufen:
xvkbd -text '\C\[F1]'
Das bedeutet 'sende die Taste Ctrl (also Strg) und dann F1'. Für die beiden anderen Desktops gilt entsprechend F2 und F3. Screenshot unter:
http://www.nyboria.de/images/keytouch.jpgEin anderes Programm, das ebenfalls schon viele Tastaturlayouts als Voreinstellung kennt, ist
LinEAK.
Wer aber nur eine einzelne Taste verändern will, eine Tastenkombination aus Standardtasten mit einer Bedeutung versehen will oder keine Unterstützung für seine Tastatur findet, kann auch selbst Hand anlegen, denn der X Server hat eigene Tools für die Konfiguration von Tasten.
Benötigt werden die Programme xev und xbindkeys und ggfs. weitere Programme, die von Tastatureingaben gestartet werden sollen. Ob diese Programme installiert sind, könnt ihr wie folgt herausfinden:
which xev
which xbindkeys
Dies gibt voraussichtlich jeweils den Pfad /usr/bin plus Programmname zurück. Erfolgt keine Pfadangabe, ist das Programm nicht installiert und muss noch installiert werden.
xev dient dazu, die Tasten zu identifizieren. Dazu öffnet ihr ein Terminal und startet darin xev.
Dies gibt zunächst einmal eine Menge Gekröse aus, dann bleibt da ein Cursor (ein weiteres kleines weißes Fenster mit einem Rechteck öffnet sich, das ist das Fenster, das die Eingaben entgegennimmt, auch Mausereignisse, die über oder in dem Fenster stattfinden).
Drückt jetzt einfach mal eine Taste, z.B. die Leertaste. Es erfolgen zwei Ausgaben in dem Terminal, nämlich eine für das Runterdrücken und eine für das Loslassen. Diese Ausgaben sehen zunächst einmal recht wild aus:
KeyPress event, serial 26, synthetic NO, window 0x2400001,
root 0x187, subw 0x0, time 2697569853, (47,416), root:(1061,524),
state 0x0, keycode 65 (keysym 0x20, space), same_screen YES,
XLookupString gives 1 bytes: (20) " "
XFilterEvent returns: False
KeyRelease event, serial 26, synthetic NO, window 0x2400001,
root 0x187, subw 0x0, time 2697569981, (47,416), root:(1061,524),
state 0x0, keycode 65 (keysym 0x20, space), same_screen YES,
XLookupString gives 1 bytes: (20) " "
XFilterEvent returns: False
Interessant ist für uns der Ausdruck
keycode 65 (keysym 0x20, space), denn er gibt uns einen Keycode (kann nützlich sein) und vor allem in der Klammer einen Namen für die Taste, nämlich hier 'space'. Strg ergibt Control_L bzw. Control_R usw. Wenn da 'NoSymbol' steht, muss der Keycode für die Zuweisung benutzt werden, ansonsten der Name der Taste.
Mit xbindkeys können nun die vorhandenen und so ermittelten Tasten mit Funktionen belegt werden. Dazu wird eine versteckte Datei im Home-Verzeichnis angelegt, die den Namen .xbindkeysrc trägt (den Punkt nicht vergessen!). In diese Datei kann man nun die gewünschten Tastaturkürzel eintragen. Das Format für den Eintrag ist recht simpel:
"firefox"
Shift+Alt + Up
Dieser Eintrag bewirkt, dass der Firefox Browser gestartet wird, wenn Shift und Alt zusammen mit der Pfeiltaste nach oben gedrückt werden.
Weitere Einträge und Hinweise findet ihr in den manpages zu xbindkeys. Auch Kombinationen aus Tastatur und Mausbuttons sind z.B. möglich, ebenso Ereignisse, die nicht beim Druck, sondern beim Lösen der Taste ausgeführt werden usw. Xbindkeys hat eigene Parameter, mit denen die Tastenbezeichnung im Zweifelsfall herausgefunden werden kann, siehe dazu auch die manpage.
Ein interessantes weiteres Programm, das benutzt werden kann, um den Fenstermanager über Tastatureingaben zu steuern, ist wmctrl. Der .xbindkeysrc-Eintrag
"wmctrl -a 'Mozilla Firefox'"
Shift+Alt + Scroll_Lock
zum Beispiel würde in einem dem Standard entsprechenden Fenstermanager dazu führen, dass bei Druck der Tasten Shift, Alt und Scroll Lock auf den Desktop gewechselt wird, auf dem sich gerade das Fenster des Browsers befindet (Angabe des Fensternamens, nicht des Programms), und diesem den Fokus geben.
Damit die xbindkeys-Einstellungen immer zur Verfügung stehen, sollte der Befehl xbindkeys in den Autostart des Fenstermanagers übernommen werden, z.B. durch Anhängen an die Datei .xsession oder .xinitrc im Homeverzeichnis oder durch den bevorzugten Mechanismus eures Fenstermanagers; häufig reicht ein Symlink auf xbindkeys im Verzeichnis Desktop/Autostart in eurem Home-Verzeichnis.
Robin