2

我想编写一个程序来重新映射用户输入,例如更改键盘布局,以及更复杂的事情,例如制作速记程序(即“t qk fx jmps ovr t lzy dg”输出为“快速狐狸跳过懒狗”)。我更愿意在 X 级别或更低级别执行此操作。

我可以根据实际用户输出制作某种虚拟键盘吗?理想情况下,我想要某种简单的界面(即程序的标准输入是一系列真实的用户输入事件,输出是虚拟键盘的用户输入事件),但如果这不可能,我仍然会感兴趣指向如何做到这一点的指针。我现在对 Linux 硬件设备、低级 X 东西或内核一无所知。事实上,我对 Linux 还很陌生。“基础”教程的链接不会不受欢迎。

4

1 回答 1

2

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

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

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

  • 使用uinput接口创建一个具有您需要的任何功能的新虚拟键盘。另请参阅uinput.h头文件以获取有关uinputAPI 的更多信息,并查看文件以获得可读的演练。

有一些应用程序可以作为示例,例如 EvRouterESE Key Daemon和我自己的evmapd

于 2011-04-27T01:10:02.693 回答