是否可以部署一个 C 代码来传递并覆盖键盘的击键?
Is it possible to have a C code deployed that passes through and overwrites keystrokes from the keyboard?
我使用一些“用户友好”程序,这些程序有时要求我输入一长串快捷方式和其他字符。我找到了一些像 cnee 这样的工具,但没有任何工具可以帮助我不费时费力地自动化这些序列。我只是将源代码添加到其中一个程序 (Qt) 中,但另一个程序有很多依赖项,因此构建它需要时间。
由于对 Linux 开发也很感兴趣,我想到了编写键盘驱动程序的修改版本,允许使用单个专用键定义和调用宏。除了自动化我的击键可能会或可能不会成为一个大的商业模式之外,这对于 Linux 驱动程序编程也是一个很好的自学项目。
在 Linux 下实现简单的键盘驱动程序有多难,以至于像 Gnome 这样的 GUI 环境能够理解它?重建内核或者在root权限下有一些命令在需要的时候加载这个驱动就可以了。
或者它可能是驱动程序上方某处的挂钩,但通常越低越好。
您不需要编写整个驱动程序。
你只需要 C,uinput
和一些时间来开发。
该怎么办:
0. 找到你的键盘设备节点。您可以使用 evtest 或动态检测它。如果您知道键盘的事件设备节点路径(如 /dev/input/event5),则可以跳过它。
open
键盘路径。
- 获取设备以防止泄漏给 Xorg/Wayland 合成器
- 创建
uinput
个具有相同规格的设备。
- 使用
poll
获取键盘的原始输入和挂钩键事件。
我使用一些“用户友好”程序,这些程序有时要求我输入一长串快捷方式和其他字符。我找到了一些像 cnee 这样的工具,但没有任何工具可以帮助我不费时费力地自动化这些序列。我只是将源代码添加到其中一个程序 (Qt) 中,但另一个程序有很多依赖项,因此构建它需要时间。
由于对 Linux 开发也很感兴趣,我想到了编写键盘驱动程序的修改版本,允许使用单个专用键定义和调用宏。除了自动化我的击键可能会或可能不会成为一个大的商业模式之外,这对于 Linux 驱动程序编程也是一个很好的自学项目。
在 Linux 下实现简单的键盘驱动程序有多难,以至于像 Gnome 这样的 GUI 环境能够理解它?重建内核或者在root权限下有一些命令在需要的时候加载这个驱动就可以了。
或者它可能是驱动程序上方某处的挂钩,但通常越低越好。
您不需要编写整个驱动程序。
你只需要 C,uinput
和一些时间来开发。
该怎么办:
0. 找到你的键盘设备节点。您可以使用 evtest 或动态检测它。如果您知道键盘的事件设备节点路径(如 /dev/input/event5),则可以跳过它。
open
键盘路径。- 获取设备以防止泄漏给 Xorg/Wayland 合成器
- 创建
uinput
个具有相同规格的设备。 - 使用
poll
获取键盘的原始输入和挂钩键事件。