「Epiphany」(Ubuntu Software Centreから入手可能)と呼ばれる私のお気に入りのBoulderdashクローンで重要な動きを自動化しようとしています。
次の例では、文字が移動する必要があります: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
しかし、このソリューションは一貫して機能しません。
時々、キャラクターは動きの一部だけを完了する-e。 g。 「下矢印」は2つだけです。他の時には、彼は動きが遅すぎて、ダイヤモンドに押しつぶされます。
これを解決する方法についての提案はありますか?できればXdotoolを使用して?
編集:
xdotool key Down Arrow
のような簡単なコマンド-提案どおり-は機能しません。ゲーム内のキャラクターはまったく動きません。
遅延を減らすことは明らかな答えのようです。デフォルトは12ミリ秒で、理由を説明せずに、矢印を押すたびに100ミリ秒にブーストしました。
keydown
を使用してからkeyup
を使用し、遅延やジャズを心配する代わりに、key
を使用します。これにより、ボスのようにキーを連結することができます。
xdotool key Down Down Down Right
それが速すぎると思う場合は、--delay
を再導入しますが、12から始めて、それが機能するまで作業を続けます。