端末からGUIプログラムにキーストローク(F5)を送信するにはどうすればよいですか?

端末からGUIプログラムにキーストローク(F5)を送信するにはどうすればよいですか?

私はいくつかの統計を表示するためにChromium(キオスクモード)を含むRaspberry Piを使用しています。 Piにはキーボードが接続されていないので検索してみました。端末から Chromium(タブ)プロセスにキーストロークを送信するソリューション。一般的な入力は機能しますが、F5このソリューションを使用して(特殊キー:ブラウザを更新する)ようなものをどのように送信しますか?

# pidof chromium
20809 20790 20788 20786 20783
# echo 'some text' > /proc/20809/fd/0

ベストアンサー1

GUIプログラムは標準入力からデータを読み取らない。Xサーバー。ウィンドウにキーストロークを挿入するためのツールがあります。xdoツールかなり一般的で便利です。

キーストロークを送信するウィンドウIDを見つける必要があります。 xdotoolを使用してこれを行うことができます。xdotool search --class ChromeすべてのChromeウィンドウのウィンドウIDのリストを返します。複数が返される場合は、必要な項目を選択する必要があります。xdotool search --nameカテゴリの代わりにタイトルを一致させるために使用できます。次の出力を解析することもできます。コントロールパネル必要なウィンドウIDを抽出します。

正しいウィンドウIDを見つけたら、xdotoolInject KeyStrokesを呼び出すことができます。残念ながら、多くのアプリケーションは、合成イベント、つまり他のアプリケーションから送信されたキーストロークとマウスイベントを拒否します。現在Chromeバージョンの場合です。キーストロークは他のメカニズムを介して他のアプリケーションから挿入できますが、そのためにはウィンドウに焦点を合わせる必要があります。 xdotoolを使ってこれを行うことはできますが、これはフォーカスがChromeウィンドウに点滅して非常に迅速に戻ります。次のコードは、F5ランダムな順序で最初のChromeウィンドウに送信されます。

xdotool search --class Chrome windowactivate --sync %1 key F5 windowactivate $(xdotool getactivewindow)

または、以前のバージョンのxdotoolを使用してください。

xdotool windowactivate $(xdotool search --class Chrome) &&
xdotool key F5 &&
xdotool windowactivate $(xdotool getactivewindow)

F5この情報はウィンドウに送信され、どのように処理するかを決定するのはプログラムによって異なります。 Chromeでは現在のタブが再読み込みされます。

おすすめ記事