我尝试使用python来检测鼠标和键盘事件,并在检测期间容忍热插拔操作。我编写这个脚本来自动检测运行时的键盘和鼠标插件,并输出所有的键盘和鼠标事件。我使用evdev和pyudev包来实现这个功能。我的键盘和鼠标检测主要包括键盘和插件。然而,每当我拔掉鼠标,许多奇怪的事情发生,我的脚本无法正常工作。我有几个困惑。在
(1)每当鼠标插入系统时,/dev/input/文件夹中都会生成两个文件,包括./mouseX和./eventX。我试图通过cat查看这两个源代码的输出,它们确实存在差异,但我不明白为什么linux会有./mouseX,即使./eventX已经存在?在
(2)每当我拔下鼠标时,./mouseX plumble事件首先出现,我在evdev中没有使用这个事件,这导致脚本失败,因为./eventX(我在其中读取脚本中的数据)同时被拔出,但我只能在下一轮中检测到./eventX。我使用了一个技巧(脚本中的变量I)来绕过这个问题,但是即使我可以成功地删除鼠标设备,但是选择。选择()开始无休止的输入阅读,即使我没有在键盘上键入任何东西。在
脚本如下所示(根据previous post的答案修改),感谢您的关注!在#!/usr/bin/env python
import pyudev
from evdev import InputDevice, list_devices, categorize
from select import select
context = pyudev.Context()
monitor = pyudev.Monitor.from_netlink(context)
monitor.filter_by(subsys