Xdotool для автоматизации движений в Богоявлении (Boulderdash Clone)

Я пытаюсь автоматизировать критические ходы в своем любимом клоне Boulderdash под названием "Крещение" (доступен через Ubuntu Software Center).

В следующем примере персонаж должен двигаться: 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 мс для ваших нажатий стрелок, не объясняя, почему.

И вместо того, чтобы использовать keydown затем keyup и приходится беспокоиться о задержках и всем этом джазе, просто используйте key, Это позволяет вам просто соединять ключи, как босс:

xdotool key Down Down Down Right

Если вы обнаружите, что это слишком быстро, введите ваш --delay но начните с 12 и работайте до тех пор, пока это не сработает.

Другие вопросы по тегам