如何将一个键映射到一系列键和组合(包括该键)?

如何将一个键映射到一系列键和组合(包括该键)?

我尝试使用dxhdwithxdotool在每个键前面加上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不支持多行命令。)

相关内容