Udev: 장치를 연결할 때 cmd를 실행하지만 아무것도 하지 않습니다.

Udev: 장치를 연결할 때 cmd를 실행하지만 아무것도 하지 않습니다.

터치패드와 포인팅 스틱을 비활성화하기 위해 USB 마우스를 연결할 때 다음 명령을 실행해야 한다는 규칙을 만들었습니다.

machine ~ # cat /etc/udev/rules.d/61-touchpad.rules 
# 61-touchpad.rules
# disable PS/2 touchpad on DISPLAY :0 if a mouse is added to the system
ACTION=="add", SUBSYSTEM=="input", ENV{ID_INPUT_MOUSE}=="1", ENV{ID_BUS}=="usb", ENV{DISPLAY}=":0.0", ENV{XAUTHORITY}="/home/user/.Xauthority", RUN+="/usr/bin/xinput --disable 'AlpsPS/2 ALPS GlidePoint'"

# enable PS/2 touchpad on DISPLAY :0 if a mouse is removed from the system
ACTION=="remove", SUBSYSTEM=="input", ENV{ID_INPUT_MOUSE}=="1", ENV{ID_BUS}=="usb", ENV{DISPLAY}=":0.0", ENV{XAUTHORITY}="/home/user/.Xauthority", RUN+="/usr/bin/xinput --enable 'AlpsPS/2 ALPS GlidePoint'"

# disable Point Stick on DISPLAY :0 if a mouse is added to the system
ACTION=="add", SUBSYSTEM=="input", ENV{ID_INPUT_MOUSE}=="1", ENV{ID_BUS}=="usb", ENV{DISPLAY}=":0.0", ENV{XAUTHORITY}="/home/user/.Xauthority", RUN+="/usr/bin/xinput --disable 'DualPoint Stick'"

# enable Point Stick on DISPLAY :0 if a mouse is removed from the system
ACTION=="remove", SUBSYSTEM=="input", ENV{ID_INPUT_MOUSE}=="1", ENV{ID_BUS}=="usb", ENV{DISPLAY}=":0.0", ENV{XAUTHORITY}="/home/user/.Xauthority", RUN+="/usr/bin/xinput --enable 'DualPoint Stick'"

machine ~ #

루트로 셸에서 명령을 실행하면 DISPLAY 및 XAUTHORITY가 이전에 설정된 다음 USB 마우스를 제거/다시 연결하면 그에 따라 터치패드와 트랙 스틱이 활성화/비활성화됩니다.

규칙을 테스트 하기 위해 이를 사용할 때 udevadm test --action=add /sys/class/input/mouse0udev는 올바른 환경에서 명령을 실행한다는 많은 정보를 기록합니다.

LINK 'input/by-path/pci-0000:00:14.0-usb-0:6:1.0-mouse' /lib/udev/rules.d/60-persistent-input.rules:32
RUN '/usr/bin/xinput --disable 'AlpsPS/2 ALPS GlidePoint'' /etc/udev/rules.d/61-touchpad.rules:20
RUN '/usr/bin/xinput --disable 'DualPoint Stick'' /etc/udev/rules.d/61-touchpad.rules:26
device 0x7f0315c20320 filled with db file data
...
ACTION=add
DEVLINKS=/dev/input/by-id/usb-Logitech_USB_Optical_Mouse-mouse /dev/input/by-path/pci-0000:00:14.0-usb-0:6:1.0-mouse
DEVNAME=/dev/input/mouse0
DEVPATH=/devices/pci0000:00/0000:00:14.0/usb3/3-6/3-6:1.0/0003:046D:C077.002A/input/input63/mouse0
DISPLAY=:0.0
ID_BUS=usb
ID_INPUT=1
ID_INPUT_MOUSE=1
ID_MODEL=USB_Optical_Mouse
...
MAJOR=13
MINOR=32
SUBSYSTEM=input
UDEV_LOG=7
USEC_INITIALIZED=8190049649
XAUTHORITY=/home/user/.Xauthority
run: '/usr/bin/xinput --disable 'AlpsPS/2 ALPS GlidePoint''
run: '/usr/bin/xinput --disable 'DualPoint Stick''
...

USB 마우스를 실행 udevd --debug하고 제거/다시 연결하면 무슨 일이 일어나고 있는지에 대한 많은 정보를 얻을 수 있습니다.

starting '/usr/bin/xinput --disable 'AlpsPS/2 ALPS GlidePoint''
starting '/usr/bin/xinput --disable 'AlpsPS/2 ALPS GlidePoint''
'/usr/bin/xinput --disable 'AlpsPS/2 ALPS GlidePoint'' [27714] exit with return code 0
'/usr/bin/xinput --disable 'AlpsPS/2 ALPS GlidePoint'' [27715] exit with return code 0
starting '/usr/bin/xinput --disable 'DualPoint Stick''
starting '/usr/bin/xinput --disable 'DualPoint Stick''
'/usr/bin/xinput --disable 'DualPoint Stick'' [27719] exit with return code 0

모든 것이 좋아 보입니다. 유일한 문제는 USB 마우스를 연결할 때 터치패드와 트랙 스틱이 비활성화되지 않는다는 것입니다.

내가 놓친 게 무엇입니까?

관련 정보