如何在Linux上使用input子系统来获取键盘事件

我正在用C写一个Linux程序,我需要截取某些键盘笔划。

使用input子系统(读/写/ dev /input/事件X),我可以接收键盘笔画(使用“读取”function)或模拟键盘笔画(使用“写入”function)。

当使用“读”function时,我可以捕捉用户的键盘笔画,但这个事件是传播的,我不知道如何使用它。

Solutions Collecting From Web of "如何在Linux上使用input子系统来获取键盘事件"

默认情况下,输入事件被传输到所有的监听应用程序和驱动程序 但是,有可能通过evdev接口让应用程序抓取设备 – 查看EVIOCGRAB ioctl() 。 这只会允许特定的应用程序接收来自特定设备的事件。

这种方法的问题在于,您无法实际阻止特定事件收到后被传播 – 您只能事先抓取设备,然后捕获所有事件。 因此,如果要过滤输入事件,则必须使用解决方法。

我在自己的evmapd守护进程中使用的解决方法涉及到抓取原始设备并使用uinput子系统为其他设备提供所需的所有修改,包括重新映射的键和各种其他更改…