在按键时运行程序而不中断按键事件

在按键时运行程序而不中断按键事件

是否可以将(全局)按键绑定到某个命令,并且仍然不会中断按键完成?我的意思是,如果我尝试使用bindkey解决方案在这里发布在其他地方:

# In file: ~/.xbindkeysrc
# Bind key 'q' to running 'some_command'
"some_command"
  q

那么按键“q”永远不会像其他情况那样完成:例如,永远不会在终端上打印字符“q”。

用于xdotool发送“q”按键,如下所示:

# In file: ~/.xbindkeysrc
# Bind key 'q' to running 'some_command'
"some_command && xdotool key q"
  q

导致循环,因为执行的“q”键xdotool将通过绑定执行另一个“some_command”。

为了更清楚一点,我希望按“q”键像平常一样执行另外执行一些外部命令。上面的解决方案取代执行某些外部命令的“q”键按下事件。问题是,如果该外部命令也模拟“q”键按下,则绑定会重新启动外部命令,并且我会陷入无限循环。

答案1

好的,所以我将发布我找到的解决方案,但也许其他人有更好的解决方案。给出答案后这里,我可以看到运行时按下的所有键

xinput test <keyboad_id>

在终端中。然后,这只是一个简单的情况,将该命令的输出传输到一个程序中,该程序监视诸如“key release 24”之类的字符串(在我的键盘上释放“q”时的输出),然后该程序将在执行时执行您喜欢的任何操作匹配这个字符串。

例如,我们可以捕捉到按下“q”键并发出如下声音:

xinput test <keyboard_id> | while read in ; do
  [[ $in = "key press   24" ]] && aplay /usr/share/sounds/purple/alert.wav
done

显然,我们还可以观察其他输入,并根据需要运行其他内容。

相关内容