2012-09-07 1 views
0

저는 C++과 wxWidgets를 사용하여 리눅스 애플리케이션을 작성하고 있습니다.
내 응용 프로그램에서 키보드 이벤트를 현재 포커스가있는 창 (내 응용 프로그램에 속하지 않음)에 보내야합니다.키보드 이벤트를 리눅스의 wxwidget 앱에서 다른 창으로 보냅니다.

내 질문은 :

  1. 어떻게 창에 포커스가 무엇인지 찾을 수 있습니까?
  2. 내 응용 프로그램에 속하지 않은 창에 키보드 이벤트를 보내려면 어떻게해야합니까?

감사
다니엘

답변

2
  1. XGetInputFocus(3).
  2. X11은 "응용 프로그램"에 대해 신경 쓰지 않습니다. 창문 만 있습니다. 창 ID (Window은 Xlib 데이터 유형 임)가 있으면 충분합니다. 어떤 이벤트 전송 방법을 사용하십시오. 내가 아는 두 가지 방법이 있습니다 : XSendEvent(3)XTestFakeKeyEvent(3). 이전 방법은 XSendEvent에서 오는 이벤트를 무시하도록 선택한 일부 프로그램에서는 작동하지 않습니다. 후자의 경우에는 XTest 확장자가 필요합니다.이 확장자는 모든 최신 서버가 아닌 대부분의 서버에 있습니다.
  3. InputFocusXSendEvent의 유효한 창 지정자이며 XTestFakeKeyEvent은 초점이있는 창으로 전달되므로 XGetInputFocus을 전혀 호출 할 필요가 없을 수 있습니다.
+0

WX에서 그렇게 할 수 없다고 제안하고 싶지만 Xlib를 사용해야합니까? –

+0

WX는 이러한 함수를 사용자가 액세스 할 수있는 래퍼를 제공하지 않는 것 같습니다. 그렇습니다. 직접 사용할 필요가 있습니다. –

1

2.9를 사용하는 경우 wxUIActionSimulator을 사용할 수 있습니다. 이것은 동일한 (wxWidgets) 응용 프로그램의 다른 창과 작업하기위한 것이지만 AFAICS는 X11을 사용할 때 다른 응용 프로그램의 창과 실제로 작동해야합니다 (그러나 직접 테스트하지는 않았습니다).

관련 문제