![如何让 xbindkeys 将其修饰符与 xte 的修饰符分开?](https://linux22.com/image/127692/%E5%A6%82%E4%BD%95%E8%AE%A9%20xbindkeys%20%E5%B0%86%E5%85%B6%E4%BF%AE%E9%A5%B0%E7%AC%A6%E4%B8%8E%20xte%20%E7%9A%84%E4%BF%AE%E9%A5%B0%E7%AC%A6%E5%88%86%E5%BC%80%EF%BC%9F.png)
当我这样做时.xbindkeysrc
"xte 'keydown Control_L' 'key W' 'keyup Control_L'"
Shift + b:9
它执行 ctrl+shift+w 的操作,而不仅仅是我预期的 ctrl+w 。知道如何解决这个问题吗?添加+ Release
到第二行没有帮助。
答案1
xte
使用 XTest 扩展,只需将您的请求添加到当前修改器状态,而不是尝试从某个基本状态开始。例如,其他工具xdotool
提供了一个--clearmodifiers
选项,以确保您得到您想要的东西。
由于xbindkeys
当修改器状态为“with”Shift_L
或“ Shift_R
pressed”时会注意到您的请求,因此这就是状态的xte
工作原理。您应该能够xte
通过以keyup Shift_L
, 或许也可以 开始来模拟升档以取消此操作Shift_R
。稍后真正的上移将被忽略,或者您可以将换档状态恢复到操作结束时的状态xte
,以避免需要再次按换档键,但这由您选择。