जीयूआई कार्यक्रम अपने मानक इनपुट से नहीं पढ़ते हैं, वे एक्स सर्वर से अपना इनपुट प्राप्त करते हैं । वहाँ एक खिड़की के लिए एक कीस्ट्रोक इंजेक्षन करने के लिए उपकरण हैं। xdotool काफी सामान्य और सुविधाजनक है।
आपको उस विंडो आईडी को ढूंढना होगा जिसे आप कीस्ट्रोक भेजना चाहते हैं। आप xdotool के साथ ऐसा कर सकते हैं। xdotool search --class Chrome
सभी Chrome विंडो की विंडो ID की सूची लौटाता है। यदि यह एक से अधिक रिटर्न देता है, तो आपको अपने इच्छित को चुनना होगा। आप xdotool search --name
वर्ग के बजाय शीर्षक पर मिलान करने के लिए उपयोग कर सकते हैं । आप wmctrl के आउटपुट को पार्स कर सकते हैं और वांछित विंडो आईडी निकाल सकते हैं।
एक बार जब आपको सही विंडो आईडी मिल जाती है, तो आप xdotool
एक कीस्ट्रोक को इंजेक्ट करने के लिए कॉल कर सकते हैं । दुर्भाग्य से, कई एप्लिकेशन सिंथेटिक घटनाओं को अस्वीकार कर देते हैं, यानी किस्ट्रोक्स और एक अन्य एप्लिकेशन द्वारा भेजे गए माउस इवेंट। यह क्रोम के वर्तमान संस्करणों के मामले में है। एक अलग तंत्र द्वारा किसी अन्य एप्लिकेशन से कीस्ट्रोके को इंजेक्ट करना संभव है, लेकिन इसके लिए विंडो को फोकस करने की आवश्यकता होती है। आप यह सब xdotool के साथ कर सकते हैं, लेकिन यह क्रोम विंडो और बैक पर तेज़ी से फ़्लिकर करने का कारण बनेगा। निम्नलिखित स्निपेट F5पहली क्रोम विंडो (कुछ हद तक अनियंत्रित क्रम) में भेजता है।
xdotool search --class Chrome windowactivate --sync %1 key F5 windowactivate $(xdotool getactivewindow)
या xdotool के पुराने संस्करणों के साथ:
xdotool windowactivate $(xdotool search --class Chrome) &&
xdotool key F5 &&
xdotool windowactivate $(xdotool getactivewindow)
याद रखें कि यह F5उस विंडो पर भेजता है और यह तय करना है कि इसके साथ क्या करना है। क्रोम में, यह वर्तमान टैब को पुनः लोड करता है।