添加 USB 设备时执行命令

添加 USB 设备时执行命令

我的 ubuntu 15.10 笔记本电脑上连接了 razer deathadder 鼠标。此鼠标默认使用 3500 DPI,速度太快了。使用时razercfg我可以将其设置为 1800 DPI,所以这里没有问题。不幸的是,此选项在重新启动或挂起到内存/磁盘(笔记本电脑关闭)后不会保留。我的第一个想法是razercfg在登录时调用,但正如我所说,如果使用挂起到内存/磁盘,则此方法不起作用。因此,我考虑使用 udev 规则:

lsusb告诉我:

Bus 003 Device 003: ID 058f:9540 Alcor Micro Corp. AU9540 Smartcard Reader
Bus 003 Device 002: ID 8087:8000 Intel Corp. 
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 002: ID 17ef:1010 Lenovo 
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 007: ID 04f2:b39a Chicony Electronics Co., Ltd 
Bus 001 Device 003: ID 138a:0017 Validity Sensors, Inc. Fingerprint Reader
Bus 001 Device 011: ID 1532:0016 Razer USA, Ltd DeathAdder Mouse
Bus 001 Device 008: ID 17ef:100f Lenovo 
Bus 001 Device 006: ID 1a40:0101 Terminus Technology Inc. Hub
Bus 001 Device 004: ID 04b4:0101 Cypress Semiconductor Corp. Keyboard/Hub
Bus 001 Device 002: ID 17ef:1010 Lenovo 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

使用供应商和产品 ID,我创建了一个文件,/etc/udev/rules.d/100-razer-deathadder.rules其中包含:

ACTION=="add", ATTRS{idVendor}=="1532", ATTRS{idProduct}=="0016", RUN+="razercfg -p 1 -r 1:1800"

当鼠标添加到系统时,它将设置适当的 DPI。该命令razercfg -p 1 -r 1:1800已经过测试,可以正常工作。我用 重新加载了规则sudo udevadm control --reload-rules && udevadm trigger

然而,它不起作用。事实上,udevadm monitor这证实了这条规则似乎没有起作用。

知道这里有什么错误吗?

答案1

1)使用终端 cmd进入/dev/input/并查询最有可能与您的鼠标对应的输入设备:

 $ udevadm info --query=all --name=/dev/input/yr-device-file-name

您将能够使用两个环境变量 (env-var) 来识别它

  • ID_VENDOR_ID=1532

  • 模型 ID=0016

根据您的问题(取决于您的设备,第二个环境变量可能不会显示)。

2)识别环境变量的值SUBSYSTEM并将其添加到您的 udev 规则中。

3)添加可执行文件的绝对路径razercfg

因此你的 udev 规则应该是这样的:

SUBSYSTEM=="___", ACTION=="add", ATTRS{idVendor}=="1532", ATTRS{idProduct}=="0016", RUN+="/path/to/razercfg -p 1 -r 1:1800"

请记住,udev 不在 shell 环境中执行,因此它可能不知道(大多数情况下不知道)PATHS 和您作为登录用户可能依赖的其他环境设置。这包括打印到 stdout (FD1),除非您通过正确设置并DISPLAY从 udev 规则中(即从执行的包装器脚本中)导出它来为此做好准备razercfg...(请参阅请 AU 回答关于该特定方面的删节版摘要,并阅读有关 udevadm 的信息(man udevadm如果您还没有这样做的话)。

高血压

相关内容