是否可以部署通过并覆盖键盘击键的 C 代码?

问题描述

我使用一些“用户友好”的程序,这些程序有时要求我输入一长串快捷方式和其他字符。我找到了一些像 cnee 这样的工具,但没有任何工具可以帮助我轻松地自动化这些序列。我只是将源代码添加到其中一个程序 (Qt) 中,但另一个程序有很多依赖项,因此构建它需要时间。

由于对 Linux 开发也很感兴趣,我想出了编写键盘驱动程序的修改版本的想法,该版本允许使用单个专用键来定义和调用宏。除了自动化我可能会或可能不会成为大商业模式的击键之外,这也是 Linux 驱动程序编程的一个很好的自学项目。

在 Linux 下实现简单的键盘驱动程序有多困难,以至于 Gnome 这样的 GUI 环境会理解它?可以重建内核或在root权限下使用一些命令在需要时加载此驱动程序。

或者,它可以是位于驱动器上方某处的挂钩,但通常越低越好。

解决方法

您不需要编写整个驱动程序。 您只需要 C、uinput 和一些时间来开发。 该怎么办: 0. 查找您的键盘设备节点。您可以使用 evtest 或动态检测它。如果您知道键盘的事件设备节点路径(例如 /dev/input/event5),则可以跳过它。

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