![udev 규칙의 느낌표는 무엇을 의미합니까?](https://linux55.com/image/168160/udev%20%EA%B7%9C%EC%B9%99%EC%9D%98%20%EB%8A%90%EB%82%8C%ED%91%9C%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9D%84%20%EC%9D%98%EB%AF%B8%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
Arch Linux x64에서 밝기 제어 키(fn + 화살표)가 작동하도록 하려고 합니다.
그래서 다음 명령을 사용하여 통합 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 문서에서 이 구문 예제를 찾을 수 없습니다.
나는 이 구조가 스캔 코드에서 키의 바인딩을 해제한다고 생각합니다. 그러면 저는 당황하게 됩니다. 이 규칙을 작성한 개발자가 왜 이 절대적으로 올바른 키를 바인딩 해제하겠습니까?
답변1
~에서/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)
관련된 언급은 없습니다.