Udev

連接 USB 滑鼠時自動禁用觸摸板的 Udev 規則

  • May 3, 2020

我很新,udev想寫一個規則,在連接 USB 滑鼠時禁用我的觸摸板。

這就是我想出的(主要是通過耳朵):

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 滑鼠時該規則沒有觸發。

我不明白你的規則為什麼這麼複雜?尤其是這一段

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

在第一行中,您匹配只有反對ID_MODEL才能看到的環境變數。在以下三行中,您將值分配給環境變數。再次僅在應用規則時才被執行的命令看到。udev``USB_Mouse``udev``synclient

我很確定永遠不會應用此規則(您可以通過解析 的日誌文件來檢查這一點。)因為除非您之前在環境中設置,否則udev很可能沒有可訪問ID_MODEL內容的變數。USB_Mouse``ID_MODEL``udev

我建議您匹配滑鼠的操作、供應商 ID 和產品 ID,這在大多數情況下就足夠了。然後你的規則看起來像

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

您可以<idVendor>通過<idProduct>解析輸出

lsusb -v

我不記得在經典形式中是否允許給定的十六進制值0xffff。我總是只參與0x我的規則背後的部分。

引用自:https://unix.stackexchange.com/questions/47868