为什么这些xte命令在终端中工作,但在与xbindkeys绑定时却不起作用?

Modified on: Thu, 14 Jun 2018 05:48:53 +0800

当我在终端中运行时,xte命令触发了Expo模式:

xte 'keydown Super_L' 'key S' 'keyup Super_L'

但是,当我把它放在我的.xbindkeysrc文件中时:

"xte 'keydown Super_L' 'key S' 'keyup Super_L'"
  b:11

单击按钮时没有任何反应。当我按下按钮11时,以下绑定使字母X出现在我的控制台中:

"xte 'key X'"
  b:11

那为什么世博会没有约束力?


单击按钮11时,这是xbindkeys -n -v的详细输出:

Button press !
e.xbutton.button=11
e.xbutton.state=16
"xte 'keydown Super_L' 'key W' 'keyup Super_L'"
    m:0x0 + b:11   (mouse)
got screen 0 for window 2bb
Start program with fork+exec call
Button release !
e.xbutton.button=11
e.xbutton.state=16

没有任何反应。这与xbindkeys执行命令的方式有什么关系吗? (fork + exec调用)


尝试排名第二。

expo.sh:

#!/usr/bin/env bash
export DISPLAY=:0
xte 'keydown Super_L' 'key S' 'keyup Super_L'

从命令行执行此脚本可激活Expo。将它绑定在xbindkeys中:

"sh ~/expo.sh"
  b:11

单击鼠标按钮11:

Button press !
e.xbutton.button=11
e.xbutton.state=16
"sh ~/expo.sh"
    m:0x0 + b:11   (mouse)
got screen 0 for window 2bb
Start program with fork+exec call

什么都没发生!

作者:,Hubro

最佳答案

这很奇怪。事实证明,如果在模拟Super+W击键时我的鼠标按钮仍被按下(尚未释放),则不会发生任何事情。我不知道该为谁负责(也许是肉桂?)。我通过在xte命令中添加一个短暂的延迟来解决它:

xte 'usleep 100000' 'keydown Super_L' 'key S' 'keyup Super_L'

现在等待0.1秒才能模拟Super+S。如果我按住鼠标按钮更多超过0.1秒,则没有任何反应。

这是一个解决方法。我更喜欢正确的答案。

作者:Hubro

相关问答

添加新评论