Xdotool を使用して Linux でマウスのクリックとキーストロークを刺激する方法
Xdotool は、マウス クリックとキーストロークをシミュレートするための無料のオープン ソース コマンド ライン ツールです。この記事では、xdotool を使用してキーボードとマウスの入力を自動化するための簡単なガイドについて説明します。 Xdotool は X ディスプレイ サーバーでのみ動作し、Wayland はサポートされていません (この記事の執筆時点では)。
Xdotool のインストール
Ubuntu に xdotool をインストールするには、以下のコマンドを実行します。
他の Linux ディストリビューションに xdotool をインストールするには、パッケージ マネージャーで「xdotool」という用語を検索します。 Xdotool は、ほとんどの Linux ディストリビューションのリポジトリに含まれています。
キーストロークをシミュレートする
以下のコマンドを実行すると、xdotool を使用してキーストロークをシミュレートできます。 「n」をキーボード レイアウトの有効なキーまたは文字に置き換えます。
上記のコマンドは、キーを押すこととキーを離すことの両方を次々にシミュレートし、これらのイベント間の遅延に気付かないことに注意してください。それらを個別にシミュレートする場合は、次のコマンドを使用します。
$ xdotool keyup n
修飾キーを使用してキーストロークをシミュレートする
修飾キーは、2 つ以上のキーが同時に押されたときのキー押下の動作を変更します。例えば。
次のコマンドを使用すると、キーボードのキーの正しい名前を見つけることができます。
小さな窓が開きます。フォーカスを維持したまま、いずれかのキーを押します。ターミナル出力にキーの名前が表示されます。
リピートキー/ターボ/ラピッドファイアをシミュレート
一定期間にわたって複数のキー押下をシミュレートするには、キー押下をシミュレートする回数と、各キー押下間の遅延を指定する必要があります。これを行うには、次の形式でコマンドを実行します。
要件に応じて、「 –repeat 」および「 –lay 」スイッチの値 (ミリ秒単位) を置き換えます。遅延を 500 ミリ秒以上に設定すると、繰り返しの問題が発生することに注意してください。これはバグまたは意図された動作である可能性があります。同様の問題に直面している場合は、高い遅延値を設定しないでください。 「for 」および「while 」ループ ステートメントを使用すると、この制限を克服できます。
以下に示すコマンドは、「n」キーを 2 秒の間隔をあけて 3 回入力します。
また、while ループを使用して、
キーシーケンスをシミュレートする
複数のキーを次々にシミュレートするには、次の形式のコマンドを使用します。
マウスクリックをシミュレートする
ポインタの現在の位置での右クリックをシミュレートするには、以下のコマンドを実行します。
「3 」を以下の参照の任意の数字に置き換えます。
-
1 – 左クリック
2 – 中クリック
3 – 右クリック
4 – ホイールを上にスクロールします
5 – ホイールを下にスクロールします
別の座標セットを使用する場合は、次の形式のコマンドを使用します。
「100 」を、画面の左上隅からの「X 」および「Y 」として希望の座標に置き換えます。
なお、これまでキーストロークで説明してきたさまざまな例は、マウスクリックでも使用できます。
アクティブなウィンドウを取得して最小化する
次のコマンドは、現在フォーカスされているウィンドウの ID を取得し、それを最小化します。
マニュアルページを参照してください
Xdotool には多数のオプションが含まれており、無数の異なる組み合わせを使用してキーストロークやマウス クリックの動作をカスタマイズできます。ここですべてのユースケースをカバーすることはできません。以下のコマンドを実行してマニュアル ページを参照できます。
オンラインでマニュアルページにアクセスすることもできます。
Xdotool コマンドとスクリプトをキーボード ショートカットにマップする
ディストリビューションのシステム設定で利用可能なキーボード ショートカット構成 GUI を使用して、単純な xdotool コマンドをカスタム キーボード ショートカットに割り当てることができます。複雑な複数のステートメントの場合は、コマンドをスクリプトに保存し、そのスクリプトをキーボード ショートカットにマップします。
結論
Xdotool は、Linux でキーボードとマウスの入力を自動化するために利用できる最高のユーティリティの 1 つです。複数のシミュレートされた入力を連鎖させることで、単純なマクロだけでなく複雑なコマンドも実行できます。