목적
나는 읽었다이 아치 위키 기사Chakra 201710 + MacBook Pro 2015(터치바 및 USB-C 없음)에서 스캔코드 및 키코드를 다시 매핑하려고 합니다.
다시 매핑내장 키보드이와 같이:
| ORIGINAL || capslock | control | option(alt) | command(meta?) | | MAP TO || ctrl | ctrl | super | alt |
다른 외부 USB 키보드를 다시 매핑하지 마십시오.(저는 Apple 외부 키보드를 사용하지 않습니다.)
시도해 보았지만 실패했습니다. 작동하지 않습니다.
1. 내장 키보드의 공급업체 ID/제품 ID/버전 찾기
https://github.com/systemd/systemd/blob/master/hwdb/60-keyboard.hwdb
# - Generic input devices match:
# evdev:input:bZZZZvYYYYpXXXXeWWWW-VVVV
# This matches on the kernel modalias of the input-device, mainly:
# ZZZZ is the bus-id (see /usr/include/linux/input.h BUS_*), YYYY, XXXX and
# WWW are the 4-digit hex uppercase vendor, product and version ID and VVVV
# is an arbitrary length input-modalias describing the device capabilities.
# The vendor, product and version ID for a device node "eventX" is listed
# in /sys/class/input/eventX/device/id.
주문하다:
less /proc/bus/input/devices
받다:
I: Bus=0003 Vendor=05ac Product=0274 Version=0110
N: Name="Apple Inc. Apple Internal Keyboard / Trackpad"
P: Phys=usb-0000:00:14.0-12/input1
S: Sysfs=/devices/pci0000:00/0000:00:14.0/usb1/1-12/1-12:1.1/0003:05AC:0274.0004/input/input7
U: Uniq=D3H624316K1FTV4A63PS
H: Handlers=sysrq kbd leds event7
B: PROP=0
B: EV=120013
B: KEY=10000 0 0 0 1007b00011007 ff9f217ac14057ff ffbeffdfffefffff fffffffffffffffe
B: MSC=10
B: LED=1f
그래서 애플의 내장 키보드는evdev:input:b0003v05acp0274e0110*
2. 스캔 코드 받기
저는 showkey --scancodes
TTY에서 다음과 같은 기본 지도를 사용하고 있습니다.
| | scancode (hex) | keycode |
|-----------+----------------+---------|
| capslock | 3a ba | 58 |
|-----------+----------------+---------|
| fn | -- -- | 464 |
| leftctrl | 1d 9d | 29 |
| leftalt | 38 b8 | 56 |
| leftmeta | e0 5b e0 db | 125 |
|-----------+----------------+---------|
| rightctrl | e0 5c e0 dc | 126 |
| rightalt | e0 38 e0 b8 | 100 |
scancode
위에서 언급한 키가 왜 모두 1바이트보다 큰지 모르겠네요 ...
3. 구성 파일 생성/etc/udev/hwdb.d/
/etc/udev/hwdb.d/10-apple-kb.hwdb
다음 내용으로 파일을 만듭니다 .
evdev:input:b0003v05acp0274e0110*
KEYBOARD_KEY_3aba=leftctrl
KEYBOARD_KEY_1d9d=leftctrl
KEYBOARD_KEY_38b8=leftmeta
KEYBOARD_KEY_e05be0db=leftalt
KEYBOARD_KEY_e05ce0dc=rightctrl
KEYBOARD_KEY_e038e0b8=rightalt
그러면 다시 시작해도 작동하지 않습니다.
업데이트:
evtest
스캔 코드 캡처용.예를 들어
Caps Lock
:Event: time 1514827961.426158, -------------- SYN_REPORT ------------ Event: time 1514827961.538086, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70039 Event: time 1514827961.538086, type 1 (EV_KEY), code 58 (KEY_CAPSLOCK), value 0 Event: time 1514827961.538086, -------------- SYN_REPORT ------------
이제
/etc/udev/hwdb.d/10-apple-kb.hwdb
다음과 같이 보입니다.evdev:input:b0003v05acp0274e0110* KEYBOARD_KEY_70039=leftctrl KEYBOARD_KEY_700e0=leftctrl KEYBOARD_KEY_700e2=leftmeta KEYBOARD_KEY_700e3=leftalt KEYBOARD_KEY_700e7=rightctrl KEYBOARD_KEY_700e6=rightalt
불행히도 그것도 작동하지 않습니다 ...
또한 setkeycodes
이와 같이 사용해 보았더니 오류가 발생했습니다.
$ sudo setkeycodes 3aba 29
setkeycodes: failed to set scancode 3aba to keycode 29: ioctl KDSETKEYCODE: Invalid argument