hwdb NumLock 0을 사용하여 udev 키보드를 다시 매핑합니다.

hwdb NumLock 0을 사용하여 udev 키보드를 다시 매핑합니다.

숫자 키보드와 운영 체제 ubuntu 16.04 및 udev 229가 내장된 Samsung np870z5e 노트북이 있습니다.

"Fn-lock" 버튼이 있는데, 이 버튼을 누르면 숫자 패드 0 버튼(KP_0)이 "메뉴" 버튼(xev가 보고함) 또는 "KEY_COMPOSE"(evtest가 보고함) 버튼이 됩니다.

그래서 KEY_COMPOSE를 KP_0에 영구적으로 다시 쓰고 싶습니다. 그래서 키보드의 FN 잠금 버튼을 눌러도 숫자 패드의 0 키는 0 키로 남아 있어야 합니다. (다른 키는 교체되지 않으며 0 키만 문제가 있습니다.)

키보드의 위치는 다음과 같습니다.

/dev/input/event3
/dev/input/by-path/platform-i8042-serio-0-event-kbd

$ udevadm info /dev/input/by-path/plat*
P: /devices/platform/i8042/serio0/input/input3/event3
N: input/event3
S: input/by-path/platform-i8042-serio-0-event-kbd
E: BACKSPACE=guess
E: DEVLINKS=/dev/input/by-path/platform-i8042-serio-0-event-kbd
E: DEVNAME=/dev/input/event3
E: DEVPATH=/devices/platform/i8042/serio0/input/input3/event3
E: ID_INPUT=1
E: ID_INPUT_KEY=1
E: ID_INPUT_KEYBOARD=1
E: ID_PATH=platform-i8042-serio-0
E: ID_PATH_TAG=platform-i8042-serio-0
E: ID_SERIAL=noserial
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_96=!kbdillumup
E: KEYBOARD_KEY_97=!kbdillumdown
E: KEYBOARD_KEY_b1=!prog2
E: KEYBOARD_KEY_b3=!prog3
E: KEYBOARD_KEY_b4=!wlan
E: KEYBOARD_KEY_c5=!prog3
E: KEYBOARD_KEY_ce=!prog1
E: KEYBOARD_KEY_d5=!wlan
E: KEYBOARD_KEY_f7=!f22
E: KEYBOARD_KEY_f9=!f23
E: MAJOR=13
E: MINOR=67
E: SUBSYSTEM=input
E: USEC_INITIALIZED=1876095
E: XKBLAYOUT=hu
E: XKBMODEL=pc105

ev 테스트 출력:

 sudo evtest
No device specified, trying to scan all of /dev/input/event*
Available devices:
/dev/input/event0:  Lid Switch
/dev/input/event1:  Power Button
/dev/input/event2:  Power Button
/dev/input/event3:  AT Translated Set 2 keyboard
/dev/input/event4:  Video Bus
/dev/input/event5:  Video Bus
/dev/input/event6:  ETPS/2 Elantech Touchpad
/dev/input/event7:  WebCam SC-10HDP12631N
/dev/input/event8:  HDA Intel PCH Mic
/dev/input/event9:  HDA Intel PCH Headphone
/dev/input/event10: HDA Intel PCH HDMI/DP,pcm=3
Select the device event number [0-10]: 3
Input driver version is 1.0.1
Input device ID: bus 0x11 vendor 0x1 product 0x1 version 0xab41
Input device name: "AT Translated Set 2 keyboard"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 1 (KEY_ESC)
    Event code 2 (KEY_1)
    Event code 3 (KEY_2)
    ... (truncated for brevity)

따라서 bus0011, vendor0x0001이어야 합니다.

hwdb 파일은 다음과 같습니다.

$ cat /etc/udev/hwdb.d/10-my-modifiers.hw 
evdev:input:b0011v0001*
 KEYBOARD_KEY_3a=leftalt     # bind capslock to leftalt
 KEYBOARD_KEY_38=leftctrl    # bind leftalt to leftctrl
 KEYBOARD_KEY_1a=a
 KEYBOARD_KEY_1b=b

업데이트 방법:

$ sudo udevadm hwdb --update && sudo udevadm trigger

그러나 이것은 작동하지 않습니다. 나는 또한 그것을 시도했지만 evdev:name:여전히 evdev:atkbd:운이 없습니다.

evdev:input:b0011v0001*어떤 줄이 올바른지 어떻게 결정합니까 ?

비슷한 질문(그 중 어느 것도 나에게 도움이 되지 않았습니다): udev 키보드 및 hwdb가 보조 키보드로 다시 매핑됨 Udev hwdb 규칙이 작동하지 않습니다

답변1

다음과 같이 시도해 보세요.

evdev:atkbd:dmi:bvn*:bvr*:bd*:svn*:pn*:pvr*

Ubuntu 16.04의 Thinkpad x240에서는 정상적으로 작동합니다.

cat /etc/udev/hwdb.d/61-ThinkPad-X240-keyboard.hwdb
# ThinkPad X240: switch End and Insert keys (so that when Fn-Lock is enabled, End works without Fn).
#keyboard:dmi:bvn*:bvr*:bd*:svnLENOVO:pn*:pvrThinkPadX240:*
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnLENOVO:pn*:pvrThinkPadX240:*
 KEYBOARD_KEY_d2=end
 KEYBOARD_KEY_cf=insert

관련 정보