拦截并删除键盘事件

拦截并删除键盘事件

我想将蓝牙键盘连接到无头 Raspberry Pi,并以某种方式拦截按键(包括 Ctrl+Shift+X 组合),然后将它们从系统中删除,以便它们不再与系统交互。

我从来没有在我的 Raspberry Pies 上连接键盘,只通过 SSH 与它们交互,而且我想继续这样做。仅当连接了硬件键盘时,我才想将该硬件的这些按键(和释放)重定向到 Python 脚本中,以便将键盘用作家庭自动化功能,作为控制界面。

这些设备也没有安装 X 服务器,并且应该保持这种状态。

我怎样才能做到这一点?

答案1

键盘最终应被识别为标准 HID(人机接口)设备,并显示为 下的设备/dev/input/。您可以使用以下命令从设备读取事件evtest,或通过库从 Python读取事件python-evdev。可能还有其他类似的库。我不知道是否有用于 raspian 的软件包,但肯定有一个用于 Fedora 的 rpm,名为python-evdev.

evtest如果不带参数,将列出设备并要求您选择一个来监视事件。您可能需要使用类似的工具inotifywait来查找 中出现的新设备/dev/input/。 Python 库同样可以列出和监视设备,但我认为它无法在不轮询的情况下检测新设备。如果您向grab一台设备请求,其他人将无法获得事件。

evtest按 时的典型输出enter

Event: time 1509452892.590022, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70028
Event: time 1509452892.590022, type 1 (EV_KEY), code 28 (KEY_ENTER), value 0
Event: time 1509452892.590022, -------------- SYN_REPORT ------------
Event: time 1509452894.005980, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70028
Event: time 1509452894.005980, type 1 (EV_KEY), code 28 (KEY_ENTER), value 1
Event: time 1509452894.005980, -------------- SYN_REPORT ------------

相关内容