1

C++ と wxWidgets を使用して Linux アプリケーションを作成しています。
アプリケーションから、現在フォーカスがあるウィンドウ (アプリケーションに属していない!) にキーボード イベントを送信する必要があります。

私の質問は次のとおりです。

  1. どのウィンドウにフォーカスがあるかを調べるにはどうすればよいですか?
  2. アプリケーションに属していないウィンドウにキーボード イベントを送信するにはどうすればよいですか?

ありがとう
ダニエレ

4

2 に答える 2

2
  1. XGetInputFocus(3).
  2. X11 は「アプリケーション」を気にしません。窓しかありません。Windowウィンドウ ID (は Xlib データ型) があれば十分です。イベントを送信する任意の方法を使用してください。私が知っている 2 つの方法があります:XSendEvent(3)XTestFakeKeyEvent(3). 前者の方法は、 からのイベントを無視することを選択した一部のプログラムでは機能しませんXSendEvent。後者にはXTest拡張機能が必要です。これは、すべてではありませんがほとんどの最新のサーバーに存在します。
  3. InputFocusは の有効なウィンドウ指定子でXSendEventあり、XTestFakeKeyEventとにかくフォーカスのあるウィンドウに配信されるため、おそらく呼び出す必要はまったくないことに注意してくださいXGetInputFocus
于 2012-09-07T12:07:28.173 に答える
1

2.9を使用する場合は、wxUIActionSimulatorを使用できます。同じ(wxWidgets)アプリケーションの他のウィンドウで動作することを目的としていますが、AFAICSは、X11を使用する場合にも、実際には他のアプリケーションのウィンドウで動作するはずです(ただし、自分でテストしていません)。

于 2012-09-08T13:47:38.030 に答える