C++ と wxWidgets を使用して Linux アプリケーションを作成しています。
アプリケーションから、現在フォーカスがあるウィンドウ (アプリケーションに属していない!) にキーボード イベントを送信する必要があります。
私の質問は次のとおりです。
- どのウィンドウにフォーカスがあるかを調べるにはどうすればよいですか?
- アプリケーションに属していないウィンドウにキーボード イベントを送信するにはどうすればよいですか?
ありがとう
ダニエレ
XGetInputFocus(3)
.Window
ウィンドウ ID (は Xlib データ型) があれば十分です。イベントを送信する任意の方法を使用してください。私が知っている 2 つの方法があります:XSendEvent(3)
とXTestFakeKeyEvent(3)
. 前者の方法は、 からのイベントを無視することを選択した一部のプログラムでは機能しませんXSendEvent
。後者にはXTest
拡張機能が必要です。これは、すべてではありませんがほとんどの最新のサーバーに存在します。InputFocus
は の有効なウィンドウ指定子でXSendEvent
あり、XTestFakeKeyEvent
とにかくフォーカスのあるウィンドウに配信されるため、おそらく呼び出す必要はまったくないことに注意してくださいXGetInputFocus
。2.9を使用する場合は、wxUIActionSimulatorを使用できます。同じ(wxWidgets)アプリケーションの他のウィンドウで動作することを目的としていますが、AFAICSは、X11を使用する場合にも、実際には他のアプリケーションのウィンドウで動作するはずです(ただし、自分でテストしていません)。