web-dev-qa-db-ja.com

Epiphanyの動きを自動化するXdotool(Boulderdash Clone)

「Epiphany」(Ubuntu Software Centreから入手可能)と呼ばれる私のお気に入りのBoulderdashクローンで重要な動きを自動化しようとしています。

次の例では、文字が移動する必要があります:3x "下矢印"および1x "右矢印"

enter image description here

スクリプトの作成は非常に簡単です。起動すると、(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

しかし、このソリューションは一貫して機能しません。

時々、キャラクターは動きの一部だけを完了する-e。 g。 「下矢印」は2つだけです。他の時には、彼は動きが遅すぎて、ダイヤモンドに押しつぶされます。

これを解決する方法についての提案はありますか?できればXdotoolを使用して?


編集:

xdotool key Down Arrowのような簡単なコマンド-提案どおり-は機能しません。ゲーム内のキャラクターはまったく動きません。

3
somethis

遅延を減らすことは明らかな答えのようです。デフォルトは12ミリ秒で、理由を説明せずに、矢印を押すたびに100ミリ秒にブーストしました。

keydownを使用してからkeyupを使用し、遅延やジャズを心配する代わりに、keyを使用します。これにより、ボスのようにキーを連結することができます。

xdotool key Down Down Down Right

それが速すぎると思う場合は、--delayを再導入しますが、12から始めて、それが機能するまで作業を続けます。

1
Oli