是否可以部署一个 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),则可以跳过它。

  1. open 键盘路径。
  2. 获取设备以防止泄漏给 Xorg/Wayland 合成器
  3. 创建 uinput 个具有相同规格的设备。
  4. 使用poll获取键盘的原始输入和挂钩键事件。