2012-01-09 20 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

関連する問題