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 и работайте до тех пор, пока это не сработает.