我想将蓝牙键盘连接到无头 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 ------------