/dev/input/event2
나는 USB 키보드 입력을 읽고 쓰는 것을 전문으로 하는 커널 모듈을 가지고 있습니다 /dev/input/event3
.
일부 장치에서는 event2 및 event3이 키보드에 할당되지 않았지만 키보드가 할당되어 /dev/input/event3
모듈 /dev/input/event4
의 입력이 손실됩니다.
udev 규칙과 예제를 살펴봤지만 udev가 특정 event# 문자 장치를 할당하도록 강제하는 방법을 찾을 수 없는 것 같습니다. 등과 같은 다른 추가 항목을 할당하도록 할 수 있지만 /dev/input/mydevice
이 경우에는 도움이 되지 않습니다. 가능합니까?
설상가상으로 연결된 장치는 실제 키보드가 아닌 무선 프리젠터이고 여기에 마우스가 할당되어 있다는 점입니다.이벤트 2, 볼륨 높이기/줄이기 버튼이벤트 3및 앞으로 및 뒤로 버튼이벤트 4. 이와 같이:
drwxr-xr-x 160 Apr 1 00:05 .
drwxr-xr-x 240 Apr 1 00:05 ..
*lrwxrwxrwxroot 9 Apr 1 00:05 platform-fsl-ehci.0-usb-0:1:1.0-event-mouse -> ../event2
lrwxrwxrwx 9 Apr 1 00:05 platform-fsl-ehci.0-usb-0:1:1.0-mouse -> ../mouse0
*lrwxrwxrwx 9 Apr 1 00:05 platform-fsl-ehci.0-usb-0:1:1.1-event-kbd -> ../event3
*lrwxrwxrwx 9 Apr 1 00:05 platform-fsl-ehci.0-usb-0:1:1.2-event-kbd -> ../event4
lrwxrwxrwx 9 Apr 1 00:00 platform-imx-i2c.0-platform-max77696-onkey.0-event -> ../event0
lrwxrwxrwx 9 Apr 1 00:00 platform-imx-i2c.1-event -> ../event1
다음과 같이 표시되어야 합니다.
drwxr-xr-x 160 Apr 1 00:05 .
drwxr-xr-x 240 Apr 1 00:05 ..
*lrwxrwxrwxroot 9 Apr 1 00:05 platform-fsl-ehci.0-usb-0:1:1.0-event-mouse -> ../event4
lrwxrwxrwx 9 Apr 1 00:05 platform-fsl-ehci.0-usb-0:1:1.0-mouse -> ../mouse0
*lrwxrwxrwx 9 Apr 1 00:05 platform-fsl-ehci.0-usb-0:1:1.1-event-kbd -> ../event3
*lrwxrwxrwx 9 Apr 1 00:05 platform-fsl-ehci.0-usb-0:1:1.2-event-kbd -> ../event2
lrwxrwxrwx 9 Apr 1 00:00 platform-imx-i2c.0-platform-max77696-onkey.0-event -> ../event0
lrwxrwxrwx 9 Apr 1 00:00 platform-imx-i2c.1-event -> ../event1
나에게 가치가있다생각하다변경해야 할 것은 "KERNEL" 값입니다. 마우스 장치에서 udevadm 정보를 사용하면 다음과 같은 결과를 얻습니다.
[root@kin input]# udevadm info -a -p $(udevadm info -q path -n /dev/input/by-path/platform-fsl-ehci.0-usb-0\:1\:1.0-event-mouse)
looking at device '/devices/platform/fsl-ehci.0/usb1/1-1/1-1:1.0/input/input26/event2':
KERNEL=="event2"
SUBSYSTEM=="input"
DRIVER==""
looking at parent device '/devices/platform/fsl-ehci.0/usb1/1-1/1-1:1.0/input/input26':
KERNELS=="input26"
SUBSYSTEMS=="input"
DRIVERS==""
ATTRS{name}=="Genius Wireless Mouse"
ATTRS{phys}=="usb-fsl-ehci.0-1/input0"
ATTRS{uniq}==""
ATTRS{modalias}=="input:b0003v0458p0189e0101-e0,1,2,4,k110,111,112,113,114,r0,1,6,8,am4,lsfw"
ATTRS{properties}=="0"
답변1
이벤트를 가져오기 위해 커널 API를 사용하는 대신 특정 파일을 열어 이벤트를 읽는 커널 모듈은 가볍게 말하면 특이합니다.
이 문제를 해결한 방법은 dd
16진수 편집기를 사용하여 커널 모듈을 패치하여 심볼릭 링크로 생성되는 다른 경로를 사용하는 것이었습니다 udev
.