首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在按键上运行程序,而不插入键事件。

在按键上运行程序,而不插入键事件。
EN

Unix & Linux用户
提问于 2015-05-09 07:55:53
回答 1查看 3.9K关注 0票数 7

是否有可能将(全局)键按绑定到某个命令,但仍然不中断键按的完成?我的意思是,如果我尝试绑定键解决方案张贴在这里的其他地方

代码语言:javascript
运行
AI代码解释
复制
# In file: ~/.xbindkeysrc
# Bind key 'q' to running 'some_command'
"some_command"
  q

然后按'q‘键永远不会像它那样完成:例如,不要在终端上打印字符'q’。

使用xdotool发送“Q”键,如下所示:

代码语言:javascript
运行
AI代码解释
复制
# In file: ~/.xbindkeysrc
# Bind key 'q' to running 'some_command'
"some_command && xdotool key q"
  q

循环中的结果,因为由xdotool执行的'q‘键按下将通过绑定执行另一个'some_command’。

更清楚一点的是,我希望按'q‘键像往常一样执行,另外执行一些外部命令。上面的解决方案将“q”键按下事件替换为执行某些外部命令。问题是,如果该外部命令也模拟'q‘键按下,那么绑定将重新启动外部命令,我将陷入无限循环。

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2015-05-09 18:15:28

好的,所以我会发布一个我已经找到的解决方案,但是也许其他人有一个更好的解决方案。在给出这里的答案之后,我可以看到所有按下的键

代码语言:javascript
运行
AI代码解释
复制
xinput test <keyboad_id>

在终点站。然后,这只是一个简单的情况,它将该命令的输出传输到一个程序中,该程序监视字符串,如“KeyRelease24”(在我的键盘上释放'q‘时的输出),然后当它与此字符串匹配时,它将执行您喜欢的任何操作。

例如,我们可以按下'q‘键并发出如下声音:

代码语言:javascript
运行
AI代码解释
复制
xinput test <keyboard_id> | while read in ; do
  [[ $in = "key press   24" ]] && aplay /usr/share/sounds/purple/alert.wav
done

显然,我们也可以观察其他输入,如果需要的话可以运行其他的输入。

票数 7
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/202436

复制
相关文章

相似问题

领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文