连接无线键盘时执行操作

dep*_*ted 5 linux keyboard devices bluetooth

连接蓝牙键盘时需要执行命令。我怎样才能“听”这个事件?

Gil*_*il' 8

当插入一个硬件时,udev框架会决定如何处理它。典型的操作是在 下创建设备节点/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"
Run Code Online (Sandbox Code Playgroud)

该程序将在您下次插入设备时运行(添加文件对已连接的设备没有影响)。您可以通过运行来检查您的规则是否具有预期的效果udevadm test class/input/event9(其中参数是上面的 syspath)。如果要手动应用规则,请运行udevadm trigger --sysname=class/input/event9


dep*_*ted 3

看来跑步udevadm monitor是解决我的问题的良好基础。可以让守护进程解析其输出、过滤所需的条目并对这些事件做出反应。

  • 有这样一个守护进程。它称为 udevd。您可以使用“规则”对其进行配置,这些规则存储在“/etc/udev/”中。它还带有一个手册页。 (3认同)