Linux守护进程更改用户输入流



我想写一个程序来重新映射用户输入的东西,比如改变键盘布局,但也有更复杂的事情,比如做一个速记程序(即。"t qk fx JMPS over t lzy dg"输出为"快速的狐狸跳过懒惰的狗")。我更喜欢在X级或更低的级别做这件事。

我可以根据实际用户输出制作某种虚拟键盘吗?理想情况下,我想要某种简单的界面(即程序的标准输入是一系列真实用户输入事件,输出是虚拟键盘的用户输入事件),但如果这是不可能的,我仍然对如何做到这一点感兴趣。我现在对Linux硬件设备、底层X或者内核一无所知;事实上,我对Linux还是个新手。

您可以使用Linux事件子系统来完成此操作:

  • 使用Linux输入事件接口(evdev)接收来自任何输入设备的事件。有关实际API的更多信息,请参见input.h头文件。

  • 使用EVIOCGRAB ioctl来抓取键盘设备,这样除了您的守护进程之外,没有其他用户空间应用程序将接收到任何输入事件。

  • 使用uinput接口创建一个具有您需要的任何功能的新虚拟键盘。关于uinput API的更多信息,请参见uinput.h头文件,这是可读的演练。

有几个应用程序可以作为一个例子,如EvRouter, ESE Key Daemon和我自己的evmapd。

最新更新