连接蓝牙键盘时我需要执行命令。我如何“收听”此事件?
答案1
当插入一个硬件时,乌德夫框架决定如何处理它。典型的操作是在 下创建设备节点/dev
,但您可以运行任何 shell 命令。
首先,您需要弄清楚如何识别您的设备。连接键盘并运行,udevadm info -a -n /dev/input/event9
其中最后一个参数是与您的设备对应的设备文件的路径/dev/
。您可以省略前缀/dev/
。您可以使用 syspath(位于 下的路径/sys
)代替设备节点名称,方法是将 替换-n …
为-p class/input/event9
。在所有情况下,请替换input/event9
为适合您设备的路径。这会打印您设备的各种特征。收集表格中的一行或多行SETTING=="VALUE"
,足以唯一地识别您的设备。
/etc/udev/rules.d
在名为vemv-keyboard.rules
或类似的文件下创建一个文件。在此文件中放置一行,其中包含要匹配的设置和要运行的操作。请注意使用正确的运算符:用于==
匹配属性、=
设置属性以及+=
指定其他操作。就像是:
# Run a program when my wireless keyboard is connected
SUBSYSTEMS=="input", ATTRS{vendor}=="Yoyodene", ATTRS{model}=="Bluetooth keyboard 9000", RUN+="/path/to/script $root/$name"
该程序将在您下次插入设备时运行(添加文件对已连接的设备没有影响)。您可以通过运行udevadm test class/input/event9
(其中参数是上面的 syspath)来检查您的规则是否具有所需的效果。如果您想手动应用规则,请运行udevadm trigger --sysname=class/input/event9
。
答案2
看来跑步udevadm monitor
是解决我的问题的良好基础。可以让守护进程解析其输出、过滤所需的条目并对这些事件做出反应。