2012-01-09 29 views
7

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 ++ main.cc -o trigger -std = C++ 11 -lxcb' के साथ संकलित करता हूं। धन्यवाद! – Noitidart

संबंधित मुद्दे