USB 마우스가 연결되면 터치패드를 자동으로 비활성화하는 Udev 규칙

USB 마우스가 연결되면 터치패드를 자동으로 비활성화하는 Udev 규칙

저는 이것에 익숙하지 않으며 udevUSB 마우스가 연결될 때 터치패드를 비활성화하는 규칙을 작성하고 싶습니다.

내가 생각해낸 내용은 다음과 같습니다(주로 귀로).

ACTION=="add", SUBSYSTEM=="input", ENV{ID_MODEL}=="USB_Mouse", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="/home/nikitautiu/.Xauthority", ENV{REMOVE_CMD}="/usr/bin/synclient TouchpadOff=0", RUN+="/usr/bin/synclient TouchpadOff=1"

그럼에도 불구하고 원하는 효과가 발생하지 않았습니다. 명령은 괜찮은 것 같지만 USB 마우스가 연결되어 있으면 규칙이 실행되지 않습니다.

답변1

당신의 규칙이 왜 그렇게 복잡한지 이해가 안 되나요? 특히 이 부분은

ENV{ID_MODEL}=="USB_Mouse",\
ENV{DISPLAY}=":0",\
ENV{XAUTHORITY}="/home/nikitautiu/.Xauthority",\   
ENV{REMOVE_CMD}="/usr/bin/synclient TouchpadOff=0"

첫 번째 줄에서는 ID_MODEL오직 반대만 볼 수 있는 환경 변수를 일치시킵니다. 다음 세 줄에서는 환경 변수에 값을 할당합니다. 마찬가지로 규칙이 적용되면 실행된 명령으로만 볼 수 있습니다.udevUSB_Mouseudevsynclient

이 규칙은 결코 적용되지 않을 것이라고 확신합니다(로그 파일을 구문 분석하여 이를 확인할 수 있습니다.). 왜냐하면 이전에 환경에서 설정하지 않는 한 변수에 액세스할 수 있는 내용이 udev없을 가능성이 높기 때문입니다.ID_MODELUSB_MouseID_MODELudev

대부분의 경우 충분한 마우스의 동작, 공급업체 ID, 제품 ID를 일치시키는 것이 좋습니다. 그러면 귀하의 규칙은 다음과 같습니다

ACTION=="add", ATTRS{idVendor}=="<idVendor>", ATTRS{idProduct}=="<idProduct>", RUN+="/usr/bin/synclient TouchpadOff=1"

출력을 구문 분석하여 합계를 <idVendor>얻을 수 있습니다.<idProduct>

lsusb -v

고전적인 형식이 주어진 16진수 값을 허용하는지 기억이 나지 않습니다 0xffff. 나는 항상 0x규칙의 뒷부분을 받아들입니다.

답변2

허용된 답변이 내 시스템에서 작동하지 않으므로 다음은 및 udev둘 다에 적용되는 규칙입니다 .gnome/gdm v. 3.16.2udev/systemd v. 226

ACTION=="add", ATTRS{bInterfaceProtocol}=="02", ATTRS{bInterfaceClass}=="03", \
ATTRS{bInterfaceSubClass}=="01", ENV{XAUTHORITY}="/run/user/1000/gdm/Xauthority", \
ENV{DISPLAY}=":0", ENV{REMOVE_CMD}="/usr/bin/xinput --enable 'SynPS/2 Synaptics TouchPad'", \
RUN+="/usr/bin/xinput --disable 'SynPS/2 Synaptics TouchPad'"

ENV{REMOVE_CMD}장치를 제거할 때 사용되는 명령입니다.
SynPS/2 Synaptics TouchPad보고된 터치패드 기기의 이름입니다 xinput. 내 규칙 등에서 사용된 항목은
사용자와 일치해야 합니다. 줄 끝에 백슬래시가 있어야 합니다. 그렇지 않으면 규칙이 여러 줄에 걸쳐 있을 수 없습니다. 라인이 마음에 든다면:UIDENV{XAUTHORITY}1000ID
udev

 ACTION=="add", ATTRS{bInterfaceProtocol}=="02", ATTRS{bInterfaceClass}=="03", ATTRS{bInterfaceSubClass}=="01", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="/run/user/1000/gdm/Xauthority", ENV{REMOVE_CMD}="/usr/bin/xinput --enable 'SynPS/2 Synaptics TouchPad'", RUN+="/usr/bin/xinput --disable 'SynPS/2 Synaptics TouchPad'"

답변3

KDE(플라즈마, sddm)에 적합한 다른 답변을 제공하십시오.

/etc/udev/rules.d/61-touchpadoff.rules다음 내용으로 규칙 파일 이름을 추가했습니다.

ACTION!="add", GOTO="touchpadoff_end"

KERNEL=="mouse[0-9]", SUBSYSTEM=="input", SUBSYSTEMS=="usb", ENV{DISPLAY}=":0", ENV{REMOVE_CMD}="/usr/bin/xinput --enable 'Elan TouchPad'", RUN+="/usr/bin/xinput --disable 'Elan TouchPad'"

LABEL="touchpadoff_end"

터치패드 하드웨어의 이름을 변경해야 합니다. 이를 보려면 다음 명령을 실행하십시오.% xinput --list

이것이 KDE 매니아들에게 도움이 되기를 바랍니다.

관련 정보