这不适用于Wayland;如果您使用的是Ubuntu 17.10,并且在登录时未更改为使用Xorg,则此解决方案不适合您。
您可以使用xdotool
它。如果两次击键之间的延迟应该一致,就这么简单:
xdotool type --delay 100 something
这种类型something
与延迟100
每个按键之间的毫秒。
如果两次击键之间的延迟应该是随机的,比如说从100到300毫秒,则情况会变得更加复杂:
$ text="some text"
for ((i=0;i<${#text};i++));
do
if [[ "${text:i:1}" == " " ]];
then
echo -n "key space";
else
echo -n "key ${text:i:1}";
fi;
[[ $i < $((${#text}-1)) ]] && echo -n " sleep 0.$(((RANDOM%3)+1)) ";
done | xdotool -
这个for
循环经过保存在变量字符串的每一个字母text
,或者印刷key <letter>
或key space
在一个空格,接着的情况下,sleep 0.
和(1和3之间的随机数xdotool
的sleep
作为秒数解释)。然后,将循环的整个输出传递给xdotool
,以打印字母,并且字母之间具有随机延迟。如果要更改延迟,只需更改部分,即上限和下限-为0.2到0.5秒即可。(RANDOM%x)+y
y
x-1+y
(RANDOM%4)+2
请注意,这种方法不会打印文本,而是完全像用户那样键入文本,从而合成单个按键。结果,文本被输入到当前聚焦的窗口中。如果更改焦点,则文本的部分将在新聚焦的窗口中键入,这可能是您想要的,也可能不是。无论哪种情况,都请看这里的其他答案,所有这些都很棒!