Falls du eine Taste in Linux ändern willst, musst du dich etwas mit der Theorie
auseiandersetzen.
Was Passiert wenn wir eine Taste Drücken?
Scancode, der das Drücken, oder
Loslassen der Taste beschreibt.
evdev) Interpretiert
Druck erzeugt den Scancode(value) b7
scancode in einen ceycode, dieser ist hardwareunabhängig)
In der Kernel-Ebene werden deine Tasteneingaben erfasst übersetzt und es wird ein Tastencode ausgegeben!
Schauen wir uns mal ein Event am beispiel "a" an:
sudo pacman evtest evtest > evtest_00.txt a
mit Strg+c oder Ctrl+c beenden.
nvim evtest.txt
| Zeitstempel | Typ (type) | Code | Value |
|---|---|---|---|
| time 1732534251.711735 | type 4 (EV_MSC) | code 4 (MSC_SCAN) | value 1e |
| time 1732534251.711735 | type 1 (EV_KEY) | code 30 (KEY_A) | value 0 |
| time 1732534251.711735 | ---- | ~SYN_REPORT~ | ----- |
udev kannst du die übersetzung von scancode zu keycode ändern.
xev
xev | awk -F'[ )]+' '/^KeyPress/ { a[NR+2] } NR in a { printf "%-3s %s\n", \(5, \)8 }'
showkey --keycodes (tty ohne Display-Server)
dmesg (erkennt unbekannte Tasten)
https://wiki.archlinux.org/title/Keyboard_input
hwdb-mapping:
udev-regeln:
evtest
nvim evtest.txt
darin befinden sich:
Input device ID: bus 0x3 vendor 0x17ef product 0x6047 version 0x100
Input device name: "Lenovo ThinkPad Compact USB Keyboard with TrackPoint"
sudo nvim /etc/udev/hwdb.d/99-Mein-keyboard.hwdb evdev:atkbd:dmi:* # Sollte alle eingebauten Tastaturen abdecken KEYBOARD_KEY_b7=rightmeta # T480-DE Drucktaste --> Mod-R KEYBOARD_KEY_3e=leftmeta # T480-de CapsLock -> esc
speichern und vim verlassen
sudo nvim /etc/udev/hwdb.d/99-USB-keyboard.hwdb endev:input:* # Thinkpad USB Tastatur eigenschaften über ID_VENTOR_ID=17ef # entspricht ventor0x17ef ID_VENTOR_ID=6047 # entspricht product 0x6047 KEYBOARD_KEY_70046=rightmeta # Thinkpad USB Tastatur PrtSc -> Mod-R KEYBOARD_KEY_70039=leftmeta # Thinkpad USB Tastatur PrtSc -> Mod-R
speichern und vim verlassen
sudo systemd-hwdb update sudo udevadm trigger
einstellungen mit evtest überprüfen
Weitere Infos
weitere Filter in man hwdb beschrieben.
Arch-Linux manpages online
setxkbmap
setxkbmap -print -verbose 10
xkblayout-state-git
xkb-switch-git
hardwareebene
kernel-ebene