Keyboard
udev規則中的驚嘆號是什麼意思?
我正在嘗試讓亮度控制鍵(fn + 箭頭)在 Arch Linux x64 上工作。
因此,我使用以下方法查看了集成 ps/2 筆記型電腦鍵盤的 udev 規則
udevadm info
:P: /devices/platform/i8042/serio0/input/input4/event4 N: input/event4 L: 0 S: input/by-path/platform-i8042-serio-0-event-kbd E: DEVPATH=/devices/platform/i8042/serio0/input/input4/event4 E: DEVNAME=/dev/input/event4 E: MAJOR=13 E: MINOR=68 E: SUBSYSTEM=input E: USEC_INITIALIZED=26133209 E: KEYBOARD_KEY_74=prog1 E: KEYBOARD_KEY_75=www E: KEYBOARD_KEY_78=mail E: KEYBOARD_KEY_82=!switchvideomode E: KEYBOARD_KEY_83=!battery E: KEYBOARD_KEY_84=!prog1 E: KEYBOARD_KEY_86=!wlan E: KEYBOARD_KEY_88=!brightnessup E: KEYBOARD_KEY_89=!brightnessdown E: KEYBOARD_KEY_b1=!prog2 E: KEYBOARD_KEY_b3=!prog3 E: KEYBOARD_KEY_b4=!wlan E: KEYBOARD_KEY_c5=!prog3 E: KEYBOARD_KEY_d5=!wlan E: KEYBOARD_KEY_f7=!f22 E: KEYBOARD_KEY_f9=!f23 E: ID_INPUT=1 E: ID_INPUT_KEY=1 E: ID_INPUT_KEYBOARD=1 E: ID_BUS=i8042 E: ID_SERIAL=noserial E: ID_PATH=platform-i8042-serio-0 E: ID_PATH_TAG=platform-i8042-serio-0 E: LIBINPUT_DEVICE_GROUP=11/1/1:isa0060/serio0 E: DEVLINKS=/dev/input/by-path/platform-i8042-serio-0-event-kbd E: TAGS=:power-switch:
https://wiki.archlinux.org/index.php/Map_scancodes_to_keycodes>說語法構造將`KEYBOARD_KEY_<scancode>=<keycode`鍵碼綁定到掃描碼。可在此處找到可用鍵碼列表。
正如我們所見,88 和 89 掃描碼綁定(或不綁定)到亮度鍵碼。這是絕對正確的 - 我試圖在執行時按下亮度鍵
evtest
- 這會生成 88 和 89 掃描碼(但缺少鍵碼資訊)。在執行時按下此鍵將journactl -f
列印下一個:atkbd serio0: Unknown key pressed (translated set 2, code 0x88 on isa0060/serio0).
所以,問題是,我只是不明白,那是“!” 鍵碼之前的符號是什麼意思?我在 udev 文件中找不到這種語法案例。
我猜這個結構將密鑰與掃描碼解綁 - 然後我不知所措:為什麼編寫此規則的開發人員會解開這個絕對正確的密鑰?
從
/lib/udev/hwdb.d/60-keyboard.hwdb
# An '!' as the first character of the key identifier string # will add the scan code to the AT keyboard's list of scan codes # where the driver will synthesize a release event and not expect # it to be generated by the hardware.
systemd
除了原始碼之外,似乎沒有其他“文件” 。hwdb(7)
沒有說什麼。