paf*_*fcu 5 linux keyboard keyboard-layout
我有一个 USB 数字键盘,我想用它来控制在后台作为守护程序运行的特定应用程序。守护进程是用 Python 编写的,我目前正在使用python-evdev
它来读取输入,它工作得很好。
但是,我在键盘上输入的所有内容仍会正常处理,这意味着按键也会插入任何处理键盘输入的应用程序中(包括计算机启动时显示的登录提示)。这有点烦人。
有没有办法禁用键盘事件的“正常”处理,只允许手动读取键状态?希望一个不依赖于运行 X 的。
到目前为止,我发现的一切似乎都是在处理完全禁用键盘或使用 X。
我的一个想法是创建一个键映射,将所有键映射到死键,这可以防止任何输出,但仍然允许我读取实际的键码。但是,似乎应该有一个更简单的解决方案来解决这个问题。
如果我直接了解内核源代码,则无法将特定输入设备与全局处理程序断开连接(请参阅 参考资料/proc/bus/input/handlers
):kbd
处理程序将始终接收所有输入事件,并将按键事件转换为按键事件。
但是,您可以直接从您的程序中或使用诸如(用于测试)之类的工具来获取一个专门用于设备上的EVIOCGRAB
ioctrl的输入设备evtest --grab /dev/input/eventX
。只要抓取处于活动状态,事件就不应该被其他任何东西处理。
我不熟悉python-evdev
,但即使它不支持抓取模式,在 Python 中执行 ioctl 也不难。
(我很懒惰,只在 X 下测试,它可以工作,但我看不出为什么它不应该在没有 X 的情况下工作)。