我尝试使用dxhd
withxdotool
在每个键前面加上Ctrl+ G,然后键入该键,然后按另一个键,如下所示
#!/bin/sh
# @{a-z}
xdotool key ctrl+g
xdotool type {a-z}
sleep 1
xdotool key Tab
我想要完成的是,a
例如,当我输入任何字符时,它会表现得好像我点击Ctrl+ G,然后输入 an a
,等待 1 秒,然后点击Tab。
问题是当我尝试输入 时a
,它实际上会发送Ctrl+ G,然后发送一个a
,这会递归地触发另一个序列(另一个Ctrl+ G-> a
-> Ctrl+ G-> a
-> ...)。
有正确的方法吗?
答案1
似乎没有一种本地方法可以避免使用递归dxhd
,但可以通过sxhkd
使用以下配置:
@{a-z}
pkill -USR2 -x sxhkd; xdotool key ctrl+g key {a-z} sleep 1 key Tab; pkill -USR2 -x sxhkd
第一个和最后一个命令发送sxhkd
信号SIGUSR2
,该信号切换其所有绑定的抓取状态。这允许我们在两者之间使用绑定键而不会导致递归。
(该xdotool
命令也已使用其内置的压缩为一行命令链,只是为了让线路更短;用 分隔的原始命令;
也可以工作。不幸的是,sxhkd
不支持多行命令。)