Dieser Post wurde aus meiner alten WordPress-Installation importiert. Sollte es Darstellungsprobleme, falsche Links oder fehlende Bilder geben, bitte einfach hier einen Kommentar hinterlassen. Danke.
Das Cherry Keypad G84-4700 ist ansich ein ganz normaler Ziffernblock, allerdings mit der kleinen Besonderheit, dass die Tasten programmierbar sind. Mit dem beiliegenden Cherry Windows-Treiber kann jede Taste beliebige Zeichenfolgen senden... Windows? Linux (in meinem Fall Ubuntu Desktop) wird von Cherry weder erwähnt, noch werden entsprechende Anfragen vom Support beantwortet. Doch die Verlockung auf zusätzliche Shortcuts war zu groß und so habe ich mir einfach das Keypad bestellt.
Wie erwartet meldet sich das Keypad als normale USB-Tastur an:
$ lsusbBus 001 Device 007: ID 046a:0014 Cherry GmbHMittels udev können individuelle Aktionen beim Hinzufügen eines neuen Gerätes (z.B. beim Systemstart) ausgeführt werden. Das "findkeyboards"-Script identifiziert dabei Tastaturen:
$ /lib/udev/findkeyboardsUSB keyboard: no device node foundGut, es sollte Tastaturen identifizieren, hat allerdings derzeit einen verbreiteten Bug welcher sich allerdings mittels dieses Patches beheben lässt. Dann sieht das Ergebnis nutzbarer aus:
$ /lib/udev/findkeyboardsUSB keyboard: input/event6USB keyboard: input/event7USB keyboard: input/event8AT keyboard: input/event4module: input/event11Die Laptop-Tastaur, die externe Tastatur und vermutlich noch irgend ein anderes Gerät melden sich anscheinend als USB-Tastaturen an. Nicht weiter schlimm, aber welches Gerät ist jetzt mein Keypad? Die gute alte Try-and-Error - Methode funktioniert manchmal immer noch am Besten, also einmal kurz das Keypad abgezogen, "findkeyboards" erneut ausgeführt und input/event7 war als Cherry-Keyboard identifiziert.
Der ebenfalls zum udev-Paket gehörende Befehl "keymap" hilft bei der weiteren Anpassung:
$ sudo /lib/udev/keymap -i input/event7Jetzt wird zu jeder gedrückten Taste der passende Scancode und Keycode ausgegeben, ersterer ist für die Umbelegung wichtig.
Mit folgendem Befehl kann testweise eine Taste (in diesem Fall Scancode "0x70059") mit einem anderen Keycode (in diesem Fall "phone") belegt werden:
$ sudo ./keymap input/event7 0x70059 phoneEine Liste aller gültigen Keycodes gibt es unter http://hal.freedesktop.org/quirk/quirk-keymap-list.txt. Für jede neu zu belegende Taste muss jetzt ein freier Keycode gefunden werden. "Frei" bedeutet in diesem Fall, dass diese Taste bisher nicht belegt/genutzt sein darf.
Jetzt sollte eine eigene "Übersetzungstabelle" angelegt werden. Meine liegt in /etc/udev/keymaps/cherry_g84-4700 und hat folgenden Inhalt (als Kommentar habe ich die jeweiligen Original-Keycodes belassen):
0x70062 f13 # key code: kp00x70059 f14 # key code: kp10x7005A f15 # key code: kp20x7005B f16 # key code: kp30x7005C f17 # key code: kp40x7005D f18 # key code: kp50x7005E calc # key code: kp60x7005F send # key code: kp70x70060 compose # key code: kp80x70061 f22 # key code: kp90x70063 f23 # key code: kpdot0x70058 camera # key code: kpenter0x70057 prog1 # key code: kpplus0x70054 prog2 # key code: kpslash0x70055 prog3 # key code: kpasterisk0x70056 prog4 # key code: kpminus0x70053 email # key code: numlock0x700E0 chat # key code: leftctrl0x700E2 finance # key code: leftalt0x7002A sport # key code: backspace0x70029 shop # key code: escDamit die neue Tabelle auch für das gewünschte udev-Gerät wirksam wird, muss sie wiederum mit "keymap" geladen werden:
$ sudo /lib/udev/keymap input/event7 /etc/udev/keymaps/cherry_g84-4700Wenn jetzt alles funktioniert, können in den Ubuntu-Einstellungen unter "Tastatur" -> "Tastenkürzel" neue, eigene Kombinationen angelegt und mit entsprechenden Programmen verknüpft werden, beispielsweise...
# Padre in den Vordergrund holen und Fenster anwählenxdotool search --onlyvisible --name '^Padre' windowactivate# Aktuelles Browser-Fenster neu ladenxdotool search --onlyvisible --name 'Opera$' windowactivate --sync key F5Damit diese Einstellungen bei jedem Neustart und Anstecken des Keypads übernommen werden, müssen sie entweder in "/lib/udev/rules.d/95-keymap.rules" oder einer eigenen Datei (z.B. "/lib/udev/rules.d/99-custom-cherry") geladen werden. Eine eigene Datei überlebt auch ein Betriebssystemupgrade und ist daher zu bevorzugen:
# Set special keys for Cherry keypadJetzt werden die neuen Einstellungen automatisch jedes Mal geladen, wenn das Keypad erkannt wird (also beim Booten oder Anschließen).ACTION=="remove", GOTO="keyboard_end"KERNEL!="event*", GOTO="keyboard_end"ENV{ID_INPUT_KEY}=="", GOTO="keyboard_end"
SUBSYSTEMS=="usb", ENV{ID_VENDOR}=="", IMPORT{program}="usb_id --export %p"
ENV{ID_VENDOR_ID}=="046a", ENV{ID_MODEL_ID}=="0014", RUN+="keymap $name /etc/udev/keymaps/cherry_g84-4700"
Noch keine Kommentare. Schreib was dazu