如何捕获键盘快捷键

如何捕获键盘快捷键

我需要一个脚本,它将在终端(在 X11 下)中运行,并等待键盘快捷键(在桌面环境中的任何位置发生),一旦该快捷键(或按键序列)发生,它将终止并返回代码 = 0。

PS:我需要这个来告诉 byzanz 何时停止记录我的桌面。

该脚本中可能使用的候选者是xevxinput但我不知道如何将它们组合在一起。 IE。xinput看起来很有希望,但它让我指定设备,我希望自动发生,并且我不知道如何在脚本中使用它,一旦找到输出上的序列,该脚本就会终止。

答案1

xinput test-xi2 --root捕获来自所有来源的事件。您将收到 4 个事件 - RawKeyPressKeyPress和,所有RawKeyRelease事件KeyRelease都包含部分中的键码detail:。我不确定您是否应该使用原始事件,但是当您侦听鼠标事件时,需要依赖原始事件,以防其他程序使用owner_events = 1(X抓取指针或者XIGrab设备),所以除非您需要 Xserver 来为您跟踪修饰符,否则我建议使用原始事件。

我曾经写过一个捕获键盘和鼠标事件的程序 -https://github.com/pzmarzly/x11-input-mirror

编辑:根据我的测试,原始事件的行为与键盘事件相反。因此,为了获得最高的成功率,请捕获原始鼠标事件,但不要捕获非原始键盘事件。

相关内容