我正试图在我最喜欢的Boulderdash克隆版本"Epiphany“中自动化关键动作(通过Ubuntu软件中心提供)。
在下面的示例中,字符应该移动: 3x "Down Arrow“和1x "Right Arrow”。

编写脚本非常简单。一旦启动,它(1)将焦点设置到游戏窗口,(2)通过Xdotool发送击键命令。
#!/bin/bash
# set focus to epiphany
xdotool search --onlyvisible --class epiphany windowactivate
sleep 0.5
# move down one unit
xdotool keydown --delay 100 Down Arrow; xdotool keyup --delay 12 Down Arrow
# move down one unit
xdotool keydown --delay 100 Down Arrow; xdotool keyup --delay 12 Down Arrow
# move down one unit
xdotool keydown --delay 100 Down Arrow; xdotool keyup --delay 12 Down Arrow
# move right one unit
xdotool keydown --delay 100 Right Arrow; xdotool keyup --delay 12 Right Arrow但是,这个解决方案并不是一贯有效的。
有时角色只完成部分移动-例如,只有2倍的“向下箭”。有时,他动作太慢,被钻石压碎了。
对于如何更好地使用Xdotool来解决这个问题,有什么建议吗?
编辑:
像xdotool key Down Arrow这样简单的命令--就像建议的那样--不起作用。游戏中的角色一点也不动。
发布于 2013-11-25 14:27:10
减少延误似乎是显而易见的答案。默认情况是12 is,您已经将箭头按下的这个值提高到了100 is,但没有解释原因。
而不是使用keydown,然后使用keyup,而不得不担心延迟和所有的爵士乐,只需使用key。这样你就可以像老板一样把钥匙串在一起:
xdotool key Down Down Down Right如果您发现这太快了,请重新引入您的--delay,但是从12开始,直到它工作为止。
https://askubuntu.com/questions/382005
复制相似问题