0

バックグラウンドで同じプロセスをX回開始するbashスクリプトがあります。これらの各プロセスは、ほとんどが OpenGL を使用する GUI です。

実行中の各バックグラウンド プロセスにキーストローク (Ctrl + Shift + A など) を送信して、バックグラウンド プロセスのコードがそのキーの組み合わせをキャプチャして実行するようにしたいと考えています (GUI でユーザーが押したかのように) )。

私はそれを行う方法を見つけていません。私がそれに近づくことができたのは、パイプなどのプロセス間通信を使用することだけでしたが、それにはバックグラウンド プロセスを変更する必要があります。キーストロークが実行されるものにパイプを接続することしかできません。

ほとんどのソリューションは、フォーカスされたウィンドウへの挿入を伴いますが、ここで X GUI アプリが起動され、PID はありますが、それらすべてに同じキーストロークを送信する必要があります。私のシェルスクリプトから複数のGUIが同時に実行されていますが、キーストロークをシミュレートする方法はありますか?

4

1 に答える 1

1

Xlibの関数XSendEventを使用して、他の Windows 合成入力イベントを送信できます。同じ目的でXcb ライブラリのxcb_send_eventを使用することもできます。

ただし、簡単にスクリプトを作成したいと思うので、おそらく Xlib を使用するでしょう。たとえば、Python Xlib バインディングを使用します。

できる人たちと

  • すべてのウィンドウを列挙する
  • OpenGL ウィンドウを選択します
  • それらに合成キープレスイベントを送信します

X11 ではカスタム イベントを登録できるので、同様に登録できます。

于 2013-04-27T00:38:03.353 に答える