Raspberry PiをChromium(kioskモード)と組み合わせて使用して、いくつかの統計情報を表示しています。 Piにはキーボードが接続されていないため、ターミナルからChromium(タブ)プロセスにキーストロークを送信するための解決策を探しました。通常の入力は機能しますが、F5
のようなものを送信するにはどうすればよいですか (特別なキー:ブラウザの更新)このソリューションを介して?
# pidof chromium
20809 20790 20788 20786 20783
# echo 'some text' > /proc/20809/fd/0
承認された回答:
GUIプログラムは、標準の入力から読み取るのではなく、Xサーバーから入力を取得します。ウィンドウにキーストロークを挿入するためのツールがあります。 xdotoolはかなり一般的で便利です。
キーストロークを送信するウィンドウIDを見つける必要があります。 xdotoolでそれを行うことができます。 xdotool search --class Chrome
すべてのChromeウィンドウのウィンドウIDのリストを返します。これが複数を返す場合は、必要なものを選択する必要があります。 xdotool search --name
を使用できます クラスの代わりにタイトルに一致します。 wmctrlの出力を解析して、目的のウィンドウIDを抽出することもできます。
適切なウィンドウIDを見つけたら、xdotool
を呼び出すことができます キーストロークを注入します。残念ながら、多くのアプリケーションは合成イベント、つまり別のアプリケーションから送信されたキーストロークやマウスイベントを拒否します。これは、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では、これにより現在のタブが再読み込みされます。