Xdotool 可自动执行 Epiphany 中的移动(Boulderdash 克隆)

som*_*his 5 scripts games epiphany xdotool

我正在尝试自动化我最喜欢的 Boulderdash 克隆“Epiphany”(可通过​​ Ubuntu 软件中心获得)中的关键操作。

在以下示例中,角色应移动:3x“向下箭头”和 1x“向右箭头”

在此输入图像描述

编写脚本非常简单。启动后,它 (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
Run Code Online (Sandbox Code Playgroud)

但是,这个解决方案并不能始终如一地发挥作用。

有时角色仅完成部分移动 - 例如仅 2x“向下箭头”。有时他移动得太慢而被钻石压碎。

有没有关于如何解决这个问题的建议 - 最好使用 Xdotool?


编辑:

像建议的那样简单的命令xdotool key Down Arrow不起作用。游戏中的角色根本不动。

Oli*_*Oli 2

减少延误似乎是显而易见的答案。默认值为 12 毫秒,您已将按下箭头时的时间提高到 100 毫秒,但没有解释原因。

不必使用keydownthenkeyup并不必担心延迟和所有爵士乐,只需使用key. 这使您可以像老板一样将密钥链接在一起:

xdotool key Down Down Down Right
Run Code Online (Sandbox Code Playgroud)

如果你发现这太快了,请重新引入你的--delaybut,从12开始,直到它起作用为止。