c++ - linux底层如何拦截键盘输入?

标签 c++ c linux keyboard

我有兴趣为 linux 编写一个程序,它将读取所有击键,处理它,然后输出到其余正在运行的进程。本质上,所有的键盘输入都必须进入这个程序,而且只有这个程序……然后这个程序将充当计算机其余部分的键盘。我基本上想在 Android 设备上做一些类似预测文本的事情,所以我的程序将充当过滤器。

我要问的基本上是如何将所有键盘事件定向到我的程序。虽然我不是在寻找代码,但我想知道我必须学习 linux 编程/linux 系统的哪一部分才能完成这项任务?这是因为我这样做是为了更好地学习 Linux。

最佳答案

您不应该修改键盘驱动程序,因为这将要求您为每个键盘制造商提供解决方案。(并且有很多......)

相反,在将输入进一步向上传递到堆栈之前,您应该修补一个由所有驱动程序调用的内核函数。

首先,您可以修补 input_event通常由所有输入驱动程序调用 see documentation here (不仅是键盘还有鼠标等设备)

在任何情况下,您都必须“解码”您可能会找到 this 的输入扫描码。有用的文档。

有关内核修补的更多信息,请阅读 herehere .

关于c++ - linux底层如何拦截键盘输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30966311/

相关文章:

c++ - 尝试使用 C++ 中的函数填充数组

c++ - 铿锵虫?命名空间模板类的 friend

任何人都可以使用 opengl 在 c 中给我一个简短的代码示例,其中单击两个不同的方 block 会改变它们的颜色?

linux - 无法将字符串转换为 bool 值 - 可以在 Linux 上转换为 powershell

c++ - 我的 vector 实现中的错误

c++ - 错误 LNK2019 : unresolved external symbol for class unordered_map

c - 删除堆的根没有任何效果

c - 如何使用dlsym在lua库中调用函数

C++ 设备的 ioctl 不合适

java - 找不到适合 jdbc :postgresql://192. 168.1.8:5432/NexentaSearch 的驱动程序