Zusätzlichen Tasten einer Tastatur Funktionen zuweisen: Unterschied zwischen den Versionen
Tisyb (Diskussion | Beiträge) |
Tisyb (Diskussion | Beiträge) |
||
Zeile 14: | Zeile 14: | ||
== '''B. VORBEREITUNG:''' == | == '''B. 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: | |
<code>lineakd -l | less</code> | <code>lineakd -l | less</code> | ||
Zeile 25: | Zeile 25: | ||
Alle, die hier Glück haben, können direkt zum Abschnitt [[#E. KEYBOARD KONFIGURIEREN|E. KEYBOARD KONFIGURIEREN]] springen. | Alle, die hier Glück haben, können direkt zum Abschnitt [[#E. KEYBOARD KONFIGURIEREN|E. 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. | 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). | |
== '''C. KEYCODES BESTIMMEN''' == | == '''C. 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: | |
<code>tail -f /var/log/messages</code> | <code>tail -f /var/log/messages</code> | ||
Zeile 43: | Zeile 43: | ||
Damit ermitteln wir gleich die sogenannten "scancodes" für jede Taste, die zuvor keinen Keycode hatte. | 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: | |
<code>kernel: atkbd.c: Use 'setkeycodes e03b <keycode>' to make it known</code> | <code>kernel: atkbd.c: Use 'setkeycodes e03b <keycode>' to make it known</code> | ||
Zeile 50: | Zeile 50: | ||
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. | 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: | |
<code>grep '^keycode *[0-9]* =$' /etc/defkeymap.map > ~/.lineak/unusedKC.txt</code> | <code>grep '^keycode *[0-9]* =$' /etc/defkeymap.map > ~/.lineak/unusedKC.txt</code> | ||
Zeile 56: | Zeile 56: | ||
Mit einem Texteditor können wir in dieser Datei nun alle unbelegten Keycodes nachschauen. | 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): | |
<code>setkeycodes scancode1 keycode1 scancode2 keycode2 ... scancodeN keycodeN</code> | <code>setkeycodes scancode1 keycode1 scancode2 keycode2 ... scancodeN keycodeN</code> | ||
− | + | 7. Jetzt wechseln wir wieder zum normalen Benutzer und ermitteln mit ''xev'' (siehe Punkt C.1. und C.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. | Die Ergebnisse tragen wir in unsere 3.Spalte ein, die damit dann komplettiert wird. | ||
Zeile 67: | Zeile 67: | ||
== '''D. DEFINITION SCHREIBEN''' == | == '''D. DEFINITION SCHREIBEN''' == | ||
− | + | 1. Wir erstellen uns im linEAK-Verzeichnis eine Vorlage für unsere eigene Definition: | |
<code>sed '/^\[/,$ p' /etc/lineakkb.def | sed '/^\n*$/,$ d' > ~/.lineak/myKeyboard.def</code> | <code>sed '/^\[/,$ p' /etc/lineakkb.def | sed '/^\n*$/,$ d' > ~/.lineak/myKeyboard.def</code> | ||
− | + | 2. Diese Datei öffnen wir mit einem Texteditor. Sie ist nach folgendem Muster aufgebaut: | |
<code> | <code> | ||
[LTCDXX] | [LTCDXX] | ||
Zeile 86: | Zeile 86: | ||
</code> | </code> | ||
− | + | 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. | 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. | ||
Zeile 92: | Zeile 92: | ||
== '''E. KEYBOARD KONFIGURIEREN''' == | == '''E. KEYBOARD KONFIGURIEREN''' == | ||
− | + | 1. Zuerst müssen wir eine Konfigurationsdatei für unser Keyboard erstellen: | |
<code>lineakd -e ~/.lineak/myKeyboard.def -c ~/.lineak/lineakd.conf</code> | <code>lineakd -e ~/.lineak/myKeyboard.def -c ~/.lineak/lineakd.conf</code> | ||
− | + | 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: | |
<code>lineakd -L | less</code> | <code>lineakd -L | less</code> | ||
Zeile 106: | Zeile 106: | ||
http://lineak.sourceforge.net/index.php?nav=docs | 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. | ''ALT+F2'', gibt "klineakconfig" in den Dialog ein und bestätigt. | ||
Jetzt sollte ein Pinguin-Symbol mit Tastatur in der Taskleiste erscheinen. | 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. | 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. | 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. | ''ALT+F2'' und "kdcop" eingeben und bestätigen. | ||
Zeile 118: | Zeile 118: | ||
== '''F. STARTBEDINGUNGEN''' == | == '''F. STARTBEDINGUNGEN''' == | ||
− | + | 1. Wichtig ist erst einmal, dass die nötigen Scancodes auf Keycodes abgebildet werden. | |
Weil der Kernel sich das nicht merkt, müssen wir die Zurdnungen in ein Startskript einbauen. Der entsprechende Befehl ist der gleiche, wie unter C.6., nur dass er in ein Startskript geschrieben werden muss. | Weil der Kernel sich das nicht merkt, müssen wir die Zurdnungen in ein Startskript einbauen. Der entsprechende Befehl ist der gleiche, wie unter C.6., nur dass er in ein Startskript geschrieben werden muss. | ||
Es bietet sich an, dies in /etc/init.d/boot.local einzutragen. | 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. | 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. | 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. | ||
Zeile 129: | Zeile 129: | ||
== '''G. WEITERE INFOS''' == | == '''G. WEITERE INFOS''' == | ||
− | + | /usr/share/doc/packages/lineakd/<br> | |
− | + | /usr/share/doc/packages/lineak_defaultplugin/<br> | |
− | + | /usr/share/doc/packages/lineak_kde/<br> | |
− | + | http://lineak.sourceforge.net | |
Version vom 26. November 2006, 15:36 Uhr
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.
Inhaltsverzeichnis
A. 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.
B. 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, können direkt zum Abschnitt E. 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).
C. 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 C.1. und C.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.
D. DEFINITION SCHREIBEN
1. Wir erstellen uns im linEAK-Verzeichnis eine Vorlage für unsere eigene Definition:
sed '/^\[/,$ 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.
E. KEYBOARD KONFIGURIEREN
1. Zuerst müssen wir eine Konfigurationsdatei für unser Keyboard erstellen:
lineakd -e ~/.lineak/myKeyboard.def -c ~/.lineak/lineakd.conf
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.
F. STARTBEDINGUNGEN
1. Wichtig ist erst einmal, dass die nötigen Scancodes auf Keycodes abgebildet werden. Weil der Kernel sich das nicht merkt, müssen wir die Zurdnungen in ein Startskript einbauen. Der entsprechende Befehl ist der gleiche, wie unter C.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.
G. WEITERE INFOS
/usr/share/doc/packages/lineakd/
/usr/share/doc/packages/lineak_defaultplugin/
/usr/share/doc/packages/lineak_kde/
http://lineak.sourceforge.net
Viel Spaß tisyb