Zusätzlichen Tasten einer Tastatur Funktionen zuweisen

Aus Linupedia
Wechseln zu: Navigation, Suche

Hi Leute

Nachdem ich bei der Konfiguration meines Keyboards per linEAK auf einige Probleme aber wenig Hilfe und Infos im Internet gestossen bin, habe ich die Prozedur mal als kleines Tutorial zusammengefasst. Über Korrekturen und Ergänzungen würde ich mich natürlich sehr freuen.


INSTALLATION

Hier hab' ich mich erstmal auf YaST verlassen, und einfach die Pakete "lineakd", "lineak_defaultplugin" und "lineak_kde" installiert. Man sollte darauf achten, dass man die Pakete alle aus der gleichen Quelle installiert, weil sonst evtl. das Zusammenspiel nicht so recht klappt. Das Paket "lineakconfig" hab' ich diesmal auch gleich weggelassen, weil das bei meinen früheren Versuchen ohnehin nicht funktionierte.


VORBEREITUNG

1. Um zu überprüfen, ob für mein Keyboard (Logitech Cordless Desktop S 510) bereits eine Definition vorhanden ist öffne ich (als normaler Benutzer) eine Konsole und lass mir alle bekannten Keyboards auflisten:

lineakd -l | less 

oder (weil die Liste sehr lang ist) nur die von Logitech:

lineakd -l | grep -i logitech

Ich hatte Pech, mein Keyboard war nicht dabei. Alle, die hier Glück haben, notieren sich das Kürzel, das vor dem Namen des entsprechenden Keyboard angezeigt wird und können direkt zum Abschnitt KEYBOARD KONFIGURIEREN springen.

2. Man könnte jetzt natürlich nachschauen, ob sich ein ähnliches Keyboard in der Liste befindet und die entsprechende Definition ausprobieren. Dabei kann ein Blick in /etc/lineakkb.def hilfreich sein, da man hier sieht, welche Tasten für welches Keyboard definiert sind. Das kann aber auch sehr langwierig werden, und es ist fraglich, ob das die schnellere / einfachere Methode ist. Ich hab' mich entschlossen eine eigene Definition zu schreiben.

3. Erstmal machen wir uns eine Liste mit den Bezeichnungen aller Sondertasten unseres Keyboards. Am besten legt man die gleich dreispaltig an und schreibt die Namen der Tasten in die erste Spalte. Die Bezeichnungen sind prinzipiell frei wählbar, aber es ist bestimmt nicht verkehrt, sich an den anderen Definitionen zu orientieren (siehe /etc/lineakkb.def).

KEYCODES BESTIMMEN

1. Wieder in der Konsole: xev eingeben. Damit werden für jedes Tastatur- bzw. Mouse-Ereignis diverse Informationen angezeigt. Uns interessiert davon nur der "keycode" unserer Sondertasten.

2. Systematisch drücken wir jetzt alle Sondertasten der Reihe nach, und tragen jeweils den Zahlenwert, der nach dem Wort "keycode" angezeigt wird zur entsprechenden Taste in der 3. Spalte unserer Liste ein. Bei manchen Tasten wird eventuell gar nix angezeigt; um die werden wir uns anschliessend kümmern.

3. Wir schließen xev, indem wir das kleine Fensterchen im Vordergrund schließen, und wechseln in der Konsole zu root (su) und machen uns ein "Überwachungsfenster" auf:

tail -f /var/log/messages

Damit ermitteln wir gleich die sogenannten "scancodes" für jede Taste, die zuvor keinen Keycode hatte.

4. Für jede Taste ohne Keycode, die wir jetzt drücken, zeigt unser Überwachungsfenster u.a. eine Zeile nach dem folgenden Muster an:

kernel: atkbd.c: Use 'setkeycodes e03b <keycode>' to make it known

Hier interessiert uns die hexadezimale Zahl vor "<keycode>", in unserem Beispiel "e03b". Das machen wir nun für alle nicht belegten Tasten und tragen die Werte in die 2.Spalte unserer Tabelle ein. Mit CTRL+C stoppen wir die Überwachung in unserer Konsole.

5. Jetzt brauchen wir unbenutzte Keycodes, die wir unseren eben ermittelten Scancodes zugordnen können. Die finden wir in /etc/defkeymap.map. Am Besten schreiben wir sie in eine Datei in unseren .lineak-Ordner im home-Verzeichnis:

grep '^keycode *[0-9]* =$' /etc/defkeymap.map > ~/.lineak/unusedKC.txt

Mit einem Texteditor können wir in dieser Datei nun alle unbelegten Keycodes nachschauen.

6. Wir ordnen unseren Scancodes (2. Spalte unserer Liste) beliebige freie Keycodes aus der eben erstellten Datei zu (als root):

setkeycodes scancode1 keycode1 scancode2 keycode2 ... scancodeN keycodeN


7. Jetzt wechseln wir wieder zum normalen Benutzer und ermitteln mit xev (siehe Punkt 1. und 2.) nun die Keycodes die unter X unseren "toten" Tasten zugeordnet wurden (Achtung, die unterscheiden sich von denen, die wir per setkeycodes zugewiesen haben!). Die Ergebnisse tragen wir in unsere 3.Spalte ein, die damit dann komplettiert wird.

DEFINITION SCHREIBEN

1. Wir erstellen uns im linEAK-Verzeichnis eine Vorlage für unsere eigene Definition:

sed -n '/^\[/,$ p' /etc/lineakkb.def | sed '/^\n*$/,$ d' > ~/.lineak/myKeyboard.def


2. Diese Datei öffnen wir mit einem Texteditor. Sie ist nach folgendem Muster aufgebaut:

 [LTCDXX]
     brandname = "Logitech"
     modelname = "Cordless Desktop XX"
     [KEYS]
        Taste1 = 123
        Taste2 = 345
        Taste3 = 567
        Taste4 = 789
     [END KEYS]
 [END LTCDXX]


3. Jetzt ändern wir diese Datei so, dass sie unser Keyboard repräsentiert. Dazu tragen wir anstelle von "LTCDXX" ein passendes Kürzel ein (aber keines, das schon in /etc/lineakkb.def vorkommt. Am besten mit lineakd -l überprüfen), ändern die Einträge für "brandname" und "modelname" entsprechend unserem Keyboard. Anschließend ersetzen wir Taste1-Taste4 mit unseren Tasten-Keycode-Paaren (1. und 3.Spalte unserer Liste). Speichern nicht vergessen.

KEYBOARD KONFIGURIEREN

1. Zuerst müssen wir eine Konfigurationsdatei für unser Keyboard erstellen.

Wenn unser Keyboard unter VORBEREITUNG gefunden wurde, gab es in der Ausgabe ein Kürzel für unser Keyboard. Dieses setzen wir statt "LTCXX" in folgendem Befehl ein:

lineakd -e /etc/lineakkb.def -f ~/.lineak/lineakd.conf -c LTCXX

Wenn wir, wie oben beschrieben, eine eigene Definitionsdatei erstellt haben, setzen wir das Kürzel, welches wir darin für unser Keyboard vergeben haben, statt "LTCXX" in folgendem Befehl ein:

lineakd -e ~/.lineak/myKeyboard.def -f ~/.lineak/lineakd.conf -c LTCXX 

Somit haben wir die Datei /home/ausführender_Benutzer/.lineak/lineakd.conf erstellt.


2. In die Datei lineakd.conf wird nun für jede Taste eingetragen, was diesselbe auslösen soll. Hierfür gibt es vordefinierte Makros, aber auch die Möglichkeit beliebige Kommandos auszuführen. Man kann die Einträge manuell per Texteditor vornehmen, oder die grafische Oberfläche von Klineakconfig benutzen.

3. Eine Liste der Makros erhält man mit:

lineakd -L | less 

Teilweise haben diese selbsterklärende Namen, wer detaillierte Informationen benötigt sei auf die Dokumentation auf der Projekthomepage von linEAK verwiesen: http://lineak.sourceforge.net/index.php?nav=docs

4. Wenn man Klineakconfig benutzen möchte, startet man diesen am besten mit: ALT+F2, gibt "klineakconfig" in den Dialog ein und bestätigt. Jetzt sollte ein Pinguin-Symbol mit Tastatur in der Taskleiste erscheinen. So wird linEAK zukünftig auch automatisch mit dem System gestartet und die Sondertasten stehen immer zur Verfügung.

5. Neben den Makros können für eine Taste beliebige Befehle angegeben werden, zu dem der jeweilige Benutzer berechtigt ist. Hierfür lohnt es auch, sich mit dem dcop-System auseinandersetzen. Ein guter Einstiegspunkt dafür mit grafischer Oberfläche ist kdcop. ALT+F2 und "kdcop" eingeben und bestätigen.

STARTBEDINGUNGEN

1. Wenn wir zuvor den "setkeycodes"-Befehl benötigten, um Scancodes auf Keycodes abzubilden, ist es wichtig diese Zuordnungen in ein Startskript einzubauen. Sonst würden wir diese Einstellungen beim Booten wieder verlieren. Der entsprechende Befehl ist der gleiche, wie unter KEYCODES BESTIMMEN Punkt 6., nur dass er in ein Startskript geschrieben werden muss. Es bietet sich an, dies in /etc/init.d/boot.local einzutragen. Ich habe es am Ende von /etc/init.d/kbd eingetragen, so wird die Zuordnung immer vorgenommen, nachdem die Grundeinstellungen des Keyboards geladen wurden.

2. Wenn man KlinEAK benutzt, sollte es das schon gewesen sein. Will man das aus irgendeinem Grund nicht, kann man ein eigenes Startskript schreiben. Infos dazu findet man unter /etc/init.d/skeleton und /usr/share/doc/packages/lineakd.rc.

WEITERE INFOS

/usr/share/doc/packages/lineakd/
/usr/share/doc/packages/lineak_defaultplugin/
/usr/share/doc/packages/lineak_kde/


Viel Spaß tisyb


Zurück zu Hardware