2012-01-09 4 views
7

XCB을 사용하여 다른 프로그램의 창 (현재 활성 창)에 키 누르기 또는 키 릴리스 이벤트를 보내려면 어떻게합니까?XCB를 사용하여 응용 프로그램에 키 이벤트를 보내는 방법은 무엇입니까?

XLib을 사용하는 자습서를 찾았지만 XCB을 사용하고 싶습니다.

나는 xcb_send_event을 호출해야 할 것 같지만, 매개 변수로 무엇을 전달해야하는지 잘 모른다.

+0

대부분의 응용 프로그램은 완전한 보안이므로 send_events()를 차단한다는 점에 유의해야합니다. X11 초기에 다른 사용자에게 xterms를 입력하는 데 사용했습니다. :-) –

+0

키 누르기를 녹음 한 다음 다시 재생하려고합니다. 즉, 시간을 절약하기 위해 매크로를 기록하고 있습니다. – ar31

+0

X11을 사용하면 응용 프로그램 수준에서 낮은 수준보다 효과적입니다. –

답변

7

xcb_test_fake_input() 함수를 사용하여 활성 창에 입력을 위조하기 위해 XTEST 확장을 사용할 수 있어야합니다.

#include <xcb/xtest.h> 
... 
xcb_test_fake_input(c, XCB_KEY_PRESS, keycode, XCB_CURRENT_TIME, XCB_NONE, 0, 0, 0); 
xcb_test_fake_input(c, XCB_KEY_RELEASE, keycode, XCB_CURRENT_TIME, XCB_NONE, 0, 0, 0); 

작동 예제는 xte program in xcb/demos을 참조하십시오.

+0

공유해 주셔서 감사합니다. 대부분의 앱은'send_event'를 막고 있으며'test_fake_input'은 속임수처럼 들립니다. g ++로 컴파일하려면 포함시킬 부분이 있습니까? 현재'g ++ main.cc -o trigger -std = C++ 11 -lxcb'로 컴파일하고 있습니다. 감사! – Noitidart

관련 문제