我正在使用 Linux Mint,想尝试将我的键盘变成和弦键盘我能想到的一个方法是编写一个守护进程来拦截和替换键盘事件。
我也考虑过编写自己的设备驱动程序的可能性,但我认为这会非常困难(不过,掌握这项技能是件好事)。我还听说过“键盘钩子”这个术语,我不确定它是什么,但它可能是我需要的。
实现这一目标的最佳方法是什么?我该怎么做?例如,如果编写守护进程是最好的方法,那么我该如何拦截和替换键盘事件?或者,如果我可以通过全局宏/组合键来实现,那么我该如何创建它们并禁用按键的正常操作?
答案1
编写一个守护进程来拦截和替换按键事件是我发现的最佳解决方案。我认为可以通过 X 来实现这一点(xcape 项目不进行和弦,但其源代码可能是在 X 级别捕获和修改输入的良好参考),但如果您想要在 Wayland(以及普通终端)上运行的东西,我发现最好的选择是使用libevdev它比 X 的级别低。evdev 的优点在于它在 Linux 系统中非常通用,而 Wayland 中的更高级别因桌面(GNOME、KDE Plasma、Sway)而异,并且没有用于修改输入的插件系统。
有多个项目支持使用 libevdev 修改输入。以下是其中一些:
这些来自关于 Wayland 支持的 xcape 问题。它们并非全部都直接支持和弦,但它们演示了如何使用 libevdev。如果您想从头开始编写某些内容,还有 libevdev 的语言绑定(快速搜索会找到 Python、Ruby、Rust、Go、NodeJS 等的绑定)。
具体关于和弦,你可以看看拦截工具的 Chorded Keymap 插件(免责声明:这是我写的。)虽然很粗糙,但演示了一些和弦功能。
另请参阅这些相关问题:
答案2
一种方法:你可以尝试使用 autokeyhttp://code.google.com/p/autokey/或 IronAHKhttps://github.com/polyethene/IronAHK创建热键、覆盖普通键的功能并更新包含当前按下的键集的数据结构。然后您可以监视数据结构,并在按下某个组合键的时间达到最低限度时触发事件。