触发设备的特定事件

触发设备的特定事件

我想知道是否可以在动态插入和/或从系统拔出时为设备设置特殊的触发事件,而无需每次插入或移除设备时都进行配置。一个监视的触发器

/dev/input/event

因此它知道设备何时连接或未连接,并且在使用时启动或终止该设备的守护进程。

这就是我使用触发事件的目的;

我有一个我喜欢用来玩游戏的游戏手柄控制器,每次我要使用它时,每次插入它时我总是必须修改它的配置以使其适用于控制器的特定配置。但在某些情况下,控制器随机断开连接并重新连接的事件会重置并忽略我为其设置的配置,这意味着我必须再次重新配置它。因此,我的目标是当它检测到设备已插入时,通过从脚本调用它来重新运行我的配置,以为其预先设置配置文件。里面会不会有什么东西

/etc/udev/rules.d

我可以创建让它按照规则这样做吗?我的游戏手柄的配置文件存储在

~/.config/ds4drv.conf

也可以调用

/etc/ds4drv.conf

我希望能够在每次检测到游戏手柄插入或拔出时检查并应用该配置文件。配置有运行守护进程的选项,该守护进程可以锁定 PID 文件。

/tmp/ds4drv.pid

当它运行时。让它预先检查守护进程当前是否正在运行,如果没有,则启动它并在检测到游戏手柄设备时应用配置文件中的配置。它有时会在玩 Steam 游戏时造成混乱,让我必须重新选中该框才能启用控制器,当您只想在控制器暂时失去连接时继续从中断处继续时,这可能会很麻烦在重新连接之前并且不读取配置文件。

答案1

udev 是你的朋友。你可以添加一个文件called 99-gamepad.rules/etc/udev/rules.d/

该文件应包含类似于以下内容的行

DRIVER=="usb",ATTRS{idProduct}=="c52b",RUN+="/path/to/your_script.sh"

您可以找到ATTRS使用udevadm

udevadm info -a -p /sys/bus/usb/devices/3-1.5

替换/sys/bus/usb/devices/3-1.5为 sys 中 USB 设备的路径,或者,您可以使用/dev/.我通常只是尝试一些路径,直到找到与我的设备匹配的路径。

如果您知道设备的路径,/dev则可以使用以下行:

udevadm info -a -p $(udevadm info -q path -n /dev/input/js0)

这是 udev 的手册页,解释如何编写规则。

还可以看看ArchWiki 的 udev 页面。

相关内容