저는 C++과 wxWidgets를 사용하여 리눅스 애플리케이션을 작성하고 있습니다.
내 응용 프로그램에서 키보드 이벤트를 현재 포커스가있는 창 (내 응용 프로그램에 속하지 않음)에 보내야합니다.키보드 이벤트를 리눅스의 wxwidget 앱에서 다른 창으로 보냅니다.
내 질문은 :
- 어떻게 창에 포커스가 무엇인지 찾을 수 있습니까?
- 내 응용 프로그램에 속하지 않은 창에 키보드 이벤트를 보내려면 어떻게해야합니까?
감사
다니엘
저는 C++과 wxWidgets를 사용하여 리눅스 애플리케이션을 작성하고 있습니다.
내 응용 프로그램에서 키보드 이벤트를 현재 포커스가있는 창 (내 응용 프로그램에 속하지 않음)에 보내야합니다.키보드 이벤트를 리눅스의 wxwidget 앱에서 다른 창으로 보냅니다.
내 질문은 :
감사
다니엘
XGetInputFocus(3)
.Window
은 Xlib 데이터 유형 임)가 있으면 충분합니다. 어떤 이벤트 전송 방법을 사용하십시오. 내가 아는 두 가지 방법이 있습니다 : XSendEvent(3)
및 XTestFakeKeyEvent(3)
. 이전 방법은 XSendEvent
에서 오는 이벤트를 무시하도록 선택한 일부 프로그램에서는 작동하지 않습니다. 후자의 경우에는 XTest
확장자가 필요합니다.이 확장자는 모든 최신 서버가 아닌 대부분의 서버에 있습니다.InputFocus
은 XSendEvent
의 유효한 창 지정자이며 XTestFakeKeyEvent
은 초점이있는 창으로 전달되므로 XGetInputFocus
을 전혀 호출 할 필요가 없을 수 있습니다.2.9를 사용하는 경우 wxUIActionSimulator을 사용할 수 있습니다. 이것은 동일한 (wxWidgets) 응용 프로그램의 다른 창과 작업하기위한 것이지만 AFAICS는 X11을 사용할 때 다른 응용 프로그램의 창과 실제로 작동해야합니다 (그러나 직접 테스트하지는 않았습니다).
WX에서 그렇게 할 수 없다고 제안하고 싶지만 Xlib를 사용해야합니까? –
WX는 이러한 함수를 사용자가 액세스 할 수있는 래퍼를 제공하지 않는 것 같습니다. 그렇습니다. 직접 사용할 필요가 있습니다. –