udev가 특정 장치 이벤트 번호를 생성하도록 강제하거나 장치 이벤트 번호를 변경할 수 있습니다.

udev가 특정 장치 이벤트 번호를 생성하도록 강제하거나 장치 이벤트 번호를 변경할 수 있습니다.

/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를 사용하는 대신 특정 파일을 열어 이벤트를 읽는 커널 모듈은 가볍게 말하면 특이합니다.

이 문제를 해결한 방법은 dd16진수 편집기를 사용하여 커널 모듈을 패치하여 심볼릭 링크로 생성되는 다른 경로를 사용하는 것이었습니다 udev.

관련 정보