在类 Unix 操作系统上重新映射系统范围的密钥

Remapping keys system-wide on Unix-Like Operating Systems

最近我想做一个小工具,可以让我任意重新映射键盘上的键以对应不同的字符输入。

从系统编程的角度来看,这通常是如何完成的?为了学习如何做到这一点,我应该参考什么?

谢谢!

我可能错了,但我相信这完全取决于您的 运行(您的 window 经理是什么)。例如,如果你运行有openbox的东西(例如lubuntu),那么你可以参考以下内容:

http://openbox.org/wiki/Help:Bindings

Gnome 也有类似的概念。如果你想改变 Gnome,你可能想深入了解 gnome-tweak-tool 是如何改变事物的(特别是看看键绑定——tweak 做的更多!)。

在这两种情况下,我建议使用 Python(gnome-tweak-tool 将是如何执行此操作的一个很好的参考点)因为编写 GUI 非常方便并且允许您更改必要的文件很容易:)

如果您正在使用 Ubuntu,这个 post 可能对您有用:

https://askubuntu.com/questions/115333/how-do-i-disable-the-sleep-button-on-my-keyboard

他们的问题是针对一个特定的键,但前两个答案是相关的。 dconf-tools 的答案可能会帮助您更好地了解事物所在的位置。

所以最后,您最终需要以不同方式配置一些文件,但这些文件的位置以及如何更改它们取决于您的 window 经理。


上面的内容对于禁用 CAPS_LOCK 或交换 L_SHIFT 和 L_CTRL 之类的东西很有用。如果您询问有关一般更改任何键盘输入的问题,那么幕后还有很多事情要做。您可能想阅读这篇文章以更好地解释正在发生的事情:

http://www.linuxjournal.com/article/1080

所以如果你想重新映射,比如切换 'a' 和 'f' 键,你需要捕获 'a' 的键事件,然后发送 'f' 按键事件。有很多方法可以查看正在按下的键,这可能是一个很好的起点:

https://superuser.com/questions/248517/show-keys-pressed-in-linux

在这个级别改变东西要困难/危险得多,所以一定要小心!


希望对您有所帮助!如果这不是您想要做的,请在您的问题中包含更多关于您计划的实际目标的信息。