是否有可能将(全局)键按绑定到某个命令,但仍然不中断键按的完成?我的意思是,如果我尝试绑定键解决方案张贴在这里的其他地方:
# 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
循环中的结果,因为由xdotool
执行的'q‘键按下将通过绑定执行另一个'some_command’。
更清楚一点的是,我希望按'q‘键像往常一样执行,另外执行一些外部命令。上面的解决方案将“q”键按下事件替换为执行某些外部命令。问题是,如果该外部命令也模拟'q‘键按下,那么绑定将重新启动外部命令,我将陷入无限循环。
发布于 2015-05-09 18:15:28
好的,所以我会发布一个我已经找到的解决方案,但是也许其他人有一个更好的解决方案。在给出这里的答案之后,我可以看到所有按下的键
xinput test <keyboad_id>
在终点站。然后,这只是一个简单的情况,它将该命令的输出传输到一个程序中,该程序监视字符串,如“KeyRelease24”(在我的键盘上释放'q‘时的输出),然后当它与此字符串匹配时,它将执行您喜欢的任何操作。
例如,我们可以按下'q‘键并发出如下声音:
xinput test <keyboard_id> | while read in ; do
[[ $in = "key press 24" ]] && aplay /usr/share/sounds/purple/alert.wav
done
显然,我们也可以观察其他输入,如果需要的话可以运行其他的输入。
https://unix.stackexchange.com/questions/202436
复制