Seitenanfang

Linux (Ubuntu) Tastenbelegung pro Gerät

Neben meiner Tastatur habe ich einen zusätzlichen USB-Ziffernblock (als einfache Stream Deck Alternative), den ich gerne als programmierbare Tasten unter Ubuntu Linux verwenden möchte.

HP-Keyboard-2-icon.pngDie Konfiguration der Eingabegeräte bzw. deren Zuordnung von "Scancodes" (den von der Hardware gelieferten Werten) zu "Keycodes" (den vom Programm wahrgenommenen Zeichen erfolgt über die HWDB. Eine zusätzliche Datei in /etc/udev/hwdb.d enthält die neuen Zuordnungen.

evdev:input:b0003v046Ap0014*
 KEYBOARD_KEY_70062=calc

Die erste Zeile definiert das Gerät. Eine ausführliche Anleitung findet sich in /lib/udev/hwdb.d/60-keyboard.hwdb aber die Kurzform besagt:

evdev:input:bXXXXvYYYYpZZZZ*

Die Werte für XXXX, YYYY und ZZZZ liefert ein sudo evtest:

$ sudo evtest 
No device specified, trying to scan all of /dev/input/event*
Available devices:
[...]/dev/input/event22: HID 046a:0014
Select the device event number [0-22]: 22
Input driver version is 1.0.1
Input device ID: bus 0x3 vendor 0x46a product 0x14 version 0x111
Input device name: "HID 046a:0014"

XXXX steht für die Bus-ID: 0x3 wird vierstellig zu 0003.

YYYY steht für die Vendor-ID (Herstellerkennung): 0x46a wird vierstellig zu 046A.

ZZZZ steht für die Product-ID (Gerätekennung): 0x14 wird vierstellig zu 0014.

Hex-Buchstaben werden großgeschrieben.

Ab der zweiten Zeile werden, mit einem Leerzeichen eingerückt, die neu definierten Zuordnungen von "Scancode" zu "Keycode" angegeben. Den jeweiligen Scancode liefert auch wieder evtest, wenn nach dem Start eine Taste des entsprechenden Gerätes gedrückt wird:

Event: time 1603793436.380898, type 17 (EV_LED), code 0 (LED_NUML), value 0
Event: time 1603793436.380898, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70062
Event: time 1603793436.380898, type 1 (EV_KEY), code 82 (KEY_KP0), value 1
Event: time 1603793436.380898, -------------- SYN_REPORT ------------
Event: time 1603793436.460858, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70062
Event: time 1603793436.460858, type 1 (EV_KEY), code 82 (KEY_KP0), value 0
Event: time 1603793436.460858, -------------- SYN_REPORT ------------

Relevant sind hier die EV_MSC - Zeilen, nicht die EV_KEY - Zeilen! Die dortigen "value" - Werte werden auf die entsprechenden Tasten umgeschrieben.

 KEYBOARD_KEY_70062=calc

Mit diesem Beispiel wird aus der "0" auf dem zusätzlichen Nummernblock die "Calc" bzw. "Taschenrechner" - Taste.

Die möchten Zuordnungswerte finden sich in /usr/include/linux/input-event-codes.h als "KEY_" - Definitionen. Dort ist auch KEY_CALC entnommen. Nicht alle dort angegebenen Tasten lassen sich auch verwenden, bzw. in Ubuntu mit Befehlen versehen. Beispielsweise "search" wurde später im Tastaturkürzel - Bereich der Ubuntu-Einstellungen nicht erkannt.

Nach jeder Änderung der Datei muss diese kompiliert und die kompilierte Datei neu eingelesen werden. Beides passiert mit:

$ sudo systemd-hwdb update; sudo udevadm trigger

Einige Sekunden später hat die Taste die neue Funktion und auch evtest gibt diese in der EV_KEY - Zeile aus.

Als letzter Schritt kann der umdefinierten Taste in den Ubuntu - Einstellungen unter Tastaturkürzel eine neue Aktion zugewiesen werden.

Auf dem gleichen Weg lassen sich auch beliebige Multimedia-Tasten umbelegen.

Quelle: https://wiki.archlinux.org/index.php/Keyboard_input

 

Noch keine Kommentare. Schreib was dazu

Schreib was dazu

Die folgenden HTML-Tags sind erlaubt:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>