如何使自定义快捷键在释放按键而不是按下按键时起作用?

如何使自定义快捷键在释放按键而不是按下按键时起作用?

我正在使用 Ubuntu 14.04 和 Unity DE。

如何让键盘快捷键在键上起作用发布, 不开按键

例如,如果我想使用 Windows 键作为多个快捷方式,它只对由 Win 键单独触发的快捷方式有效,因为该快捷方式在注册下一个按键之前有效。

答案1

这不完全是一个答案,但可能是一个解决方案。

据我所知,您提到的键是修饰键,用于修改同时按下另一个(非修饰键)键的效果。

我不太熟悉硬件,但我相信一些修改器处理实际上可能发生在键盘硬件或驱动程序中 - 因此它们不是容易地可在应用程序级别访问。我知道我多年前使用的一些键盘会输出 8 位 ASCII 字符,当你按下 Ctrl 或 Shift 键时,它们实际上会修改其中的一些位。

话虽如此,运行xev表明“更高级别”的软件可以访问来自键盘“设备”的实际扫描码,所以我希望可以编写自己的替换键盘驱动程序,它可以做任何你有足够技能编写的代码,但这样做可能涉及大量有关内核和 Linux 其他内部知识的知识。

您不必费尽心机去学习所有这些东西,而是先考虑一些可能满足您部分或全部需求的替代方案:

xmodmap命令允许您通过更改各个键的功能来更改键盘布局。此操作在任何应用程序看到按键之前发生,因此它应该透明地工作。

AutoKey是一个键盘宏处理器,它允许您定义文本短语和热键,触发短语替换或运行用 Python 编写的整个宏。

它设计用于 GTK 或 QT 支持的 GUI 环境,但也能在终端窗口中正常工作。

每个宏或短语还可以有一个关联的窗口过滤器,以便它只在通过过滤器的窗口中工作(并且如果在非设计工作的窗口中调用它,则不会做不适当的事情。)

一旦调用宏,您实际上就是在运行一个 Python 程序,它几乎可以完成 Python 能够完成的所有任务(主要受限于您的编程技能),因为几乎所有您想要完成的任务都有 Python 模块。

由于AutoKey设计用于发出与您输入的完全相同的击键,因此它应该可以与几乎任何程序配合使用。程序只会认为您输入了AutoKey发出的任何击键,甚至不知道您没有输入它们。(这有一些优点,但它基本上可以正常工作。)

相关内容