Xdotool 用于自动执行 Epiphany 中的移动(Boulderdash Clone)

Xdotool 用于自动执行 Epiphany 中的移动(Boulderdash Clone)

我正在尝试自动执行我最喜欢的 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

但是,这种解决方案并不总是有效。

有时角色只能完成部分动作 - 例如,只有 2 次“向下箭头”。有时,他的移动速度太慢,被钻石压垮。

关于如何解决这个问题有什么建议吗——最好使用 Xdotool?


编辑:

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

答案1

减少延迟似乎是显而易见的答案。默认值为 12 毫秒,而您却将箭头按下的延迟提升至 100 毫秒,却没有解释原因。

无需使用keydownthenkeyup并担心延迟和所有那些麻烦事,只需使用 即可key。这允许您像老板一样将键链接在一起:

xdotool key Down Down Down Right

如果您发现这太快,请重新引入,--delay但从 12 开始,直到有效为止。

相关内容