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
那么,为什么 Expo 绑定不起作用?
这是xbindkeys -n -v
单击按钮 11 时的详细输出:
按下按钮! e.xbutton.button=11 e.xbutton.state=16 “xte 'keydown Super_L' 'key W' 'keyup Super_L'” m:0x0 + b:11(鼠标) 得到窗口 2bb 的屏幕 0 使用 fork+exec 调用启动程序 按钮释放! e.xbutton.button=11 e.xbutton.state=16
什么也没有发生。xbindkeys
这与执行命令的方式有什么关系吗?(fork+exec 调用)
第二次尝试。
世博会:
#!/usr/bin/env bash
export DISPLAY=:0
xte 'keydown Super_L' 'key S' 'keyup Super_L'
从命令行执行此脚本会激活 Expo。在 xbindkeys 中绑定它:
"sh ~/expo.sh"
b:11
单击鼠标按钮 11:
按下按钮! e.xbutton.button=11 e.xbutton.state=16 “sh ~/expo.sh” m:0x0 + b:11(鼠标) 得到窗口 2bb 的屏幕 0 使用 fork+exec 调用启动程序
什么都没发生!
另一个更简单的解决方案:不要在 xbindkeys 定义中只使用“b:11”,而是使用“b:11 + release”。它将等到您释放按钮以触发命令。
例子:
这很奇怪。
Super+W
事实证明,如果在模拟击键时我的鼠标按钮仍处于按下状态(尚未释放) ,则什么也不会发生。我不知道该怪谁(也许是 Cinnamon?)。不过,我已经解决了这个问题,方法是在xte
命令中添加一个短暂的延迟:它现在在模拟之前等待 0.1 秒
Super+S
。如果我按住鼠标按钮超过 0.1 秒,则什么也不会发生。这是一个解决方法的答案。我更喜欢一个正确的答案。
我遇到了同样的问题。
在控制台中工作,但不在 xbindkeys 参数文件中工作。我通过他的keysym代码更改了b,使用“xev”命令获取它:
它对我有用
尝试 +Release
这可能会有所帮助。
使用 sxhkcd keymapper 时遇到类似问题。事实证明,您的实际快捷键被检测为仍在按下。
有一些半解决方法:
sleep 0.2
在你的命令前 添加但是,您无法通过它获得实时操作 =)