私はいくつかの統計を表示するために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を見つけたら、xdotool
Inject 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では現在のタブが再読み込みされます。
答え2
上記で提案したソリューションは、次のようにxdotoolを使用します。
xdotool key --windowid <window> <keystroke>
これは私には効果がありません。いくつかの実験の終わりに到着しました。
xdotool windowactivate --sync <window> key <keystroke>
これがうまくいくように見えたとき、いくつかのスクリプトを定義し、次のように.lircrcファイルを更新しました。
答え3
Raspbian Wheezyを実行しているRaspberry Piでも同様のユースケースがあります。キオスクモードを使用してChromeでタブを回転させる必要があります(悲しいことに、以前のバージョンのChromeでこれを行うために拡張機能をインストールすることは合理的ではありません)。許可された回答の例にはタイプミスがありましたが、私のソフトウェアバージョンでは機能しませんでした。以下は私に役立つものです。
xdotool key --window "$(xdotool search --class Chromium | head -1)" Ctrl+Tab
答え4
過去にキーストロークを送信するなどの操作に自動ショートカットを使用していましたが、Linuxでは利用できませんでしたが、高速Google検索でIronAHK(http://www.ironahk.net/)まだ利用可能な文書はあまりありませんが、役に立ちます。