当设备连接但规则从未匹配时,会发生此事件:
$udevadm monitor -u -p
...
UDEV [2452.171028] add /devices/pci0000:00/0000:00:1e.0/dw-apb-uart.0/serial0/serial0-0/bluetooth/hci0/hci0:13/0005:004C:0269.0012/input/input30 (input)
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:1e.0/dw-apb-uart.0/serial0/serial0-0/bluetooth/hci0/hci0:13/0005:004C:0269.0012/input/input30
SUBSYSTEM=input
PRODUCT=5/4c/269/192
NAME="Magic Mouse"
PHYS="14:7d:da:4d:ff:d9"
UNIQ="bc:d0:74:c7:69:ab"
PROP=0
EV=1f
KEY=70001 0 0 0 0
REL=1943
ABS=273800000000000
MSC=10
MODALIAS=input:b0005v004Cp0269e0192-e0,1,2,3,4,k100,110,111,112,r0,1,6,8,B,C,a2F,30,31,34,35,36,39,m4,lsfw
SEQNUM=9683
USEC_INITIALIZED=2452170577
ID_INPUT=1
ID_INPUT_MOUSE=1
ID_BUS=bluetooth
ID_PATH=pci-0000:00:1e.0-platform-dw-apb-uart.0
ID_PATH_TAG=pci-0000_00_1e_0-platform-dw-apb-uart_0
ID_FOR_SEAT=input-pci-0000_00_1e_0-platform-dw-apb-uart_0
TAGS=:seat:
CURRENT_TAGS=:seat:
udev 规则
ACTION=="add", SUBSYSTEM=="input", ENV{NAME}=="Magic Mouse", RUN+="/bin/sh -c 'echo Y >> /sys/module/hid_magicmouse/parameters/scroll_acceleration'"
ACTION=="add", SUBSYSTEM=="input", ENV{NAME}=="Magic Mouse", RUN+="/bin/sh -c 'echo 50 >> /sys/module/hid_magicmouse/parameters/scroll_speed'"
我用测试过
udevadm test --action=add /devices/pci0000:00/0000:00:1e.0/dw-apb-uart.0/serial0/serial0-0/bluetooth/hci0/hci0:13/0005:004C:0269.0012/input/input30
我甚至应用了这些更改并尝试看看它是否有效:
udevadm control --reload-rules && udevadm trigger
我还将服务日志设置为 DEBUG ( udevadm control --log-priority=debug
),但它没有运行。我尝试将 NAME 更改为 UNIQ 并使用蓝牙设备,但没有任何变化。事件发生了,但规则不匹配。
有任何想法吗?
在 Fedora 36 上运行。
答案1
我终于让它发挥作用了:
$ cat /etc/udev/rules.d/62-magicmouse.rules
ACTION=="add", SUBSYSTEM=="input", ATTRS{name}=="Magic Mouse", RUN+="/bin/sh -c 'echo Y >> /sys/module/hid_magicmouse/parameters/scroll_acceleration'"
ACTION=="add", SUBSYSTEM=="input", ATTRS{name}=="Magic Mouse", RUN+="/bin/sh -c 'echo 50 >> /sys/module/hid_magicmouse/parameters/scroll_speed'"
我升级到了 Fedora 37,我不知道这是否改变了什么,但升级后我决定再次尝试使用 ATTRS 而不是 ENV。我还注意到与我之前的尝试相比,“name”是小写的。它工作正常。我终于可以在插入 magicmouse 时自动更改其功能了。