एक शॉर्टकट बनाने के लिए कैसे एक कुंजी प्रेस का अनुकरण करने के लिए एक xdotool कमांड निष्पादित करता है?


11

मैं एक कस्टम शॉर्टकट का उपयोग करके मीडिया कुंजी प्रेस का अनुकरण करने की कोशिश कर रहा हूं।

अब तक, मैं कमांड का उपयोग करके मेरे द्वारा आवश्यक सिमुलेशन प्राप्त करने में सक्षम हूं:

xdotool key XF86AudioPlay

यह पूरी तरह से काम करता है, यह हर बार चलने पर संगीत खिलाड़ी को रोक देता है या शुरू कर देता है।

समस्या तब आती है जब इसे शॉर्टकट के रूप में चलाने की कोशिश की जाती है।

पहले मैंने एक कस्टम शॉर्टकट के साथ एक उपनाम चलाने की कोशिश की, लेकिन यह काम नहीं किया।

जैसा कि इस सवाल पर बताया गया है :

कुंजीपटल बाइंडिंग द्वारा चलाए गए आदेशों को शेल के माध्यम से पार्स नहीं किया जाता है। आपकी सबसे अच्छी शर्त यह है कि आप अपने होमडायर में एक डायरेक्टरी बिन तैयार करें।

आगे मैंने सुझाई गई स्क्रिप्ट बनाई और उसे नाम दिया simplay:

#!/bin/sh
xdotool key XF86AudioPlay

यह एक बिन फ़ोल्डर के अंदर स्थित है, जिसका हिस्सा है PATH, यह ठीक काम करता है और इसे किसी भी स्थान से चलाया जा सकता है।

कस्टम शॉर्टकट बनाने की कोशिश करते समय, मैं इसे निष्पादित करने में असमर्थ था, कॉन्फ़िगरेशन निम्न है:

Name: test
Command: simplay

Shortcut: Ctrl+Alt+R

थोड़ा और खोज करने के बाद मैंने शॉर्टकट को निष्पादित करने का एक और तरीका पाया:

gnome-terminal -e simplay

मैंने इसे एक टर्मिनल पर आज़माया और देखा कि इसे निष्पादित करते समय यह तेजी से एक नई टर्मिनल विंडो खोलेगा, बाल प्रक्रिया को निष्पादित करेगा, संगीत को रोक देगा और तुरंत विंडो को बंद कर देगा।

मैंने शॉर्टकट पर कमांड को बदल दिया है और इसे मारते समय मैंने एक ही व्यवहार को टर्मिनल खोलने पर ध्यान दिया और तुरंत बंद किया जा रहा था लेकिन इस बार बच्चे की प्रक्रिया ने संगीत को विराम नहीं दिया, जिससे मुझे लगता है कि स्क्रिप्ट को मेरे पिछले सभी प्रयासों पर बुलाया गया है लेकिन यह किसी भी तरह से निष्पादित करने में सक्षम नहीं है।

मैं आपकी जानकारी के अनुसार इस समस्या को कैसे हल कर सकता हूं?

जवाबों:


12

समस्या

आपका शॉर्टकट उसी समय पर किया जाता है जब आपका नकली कुंजी दबाया जाता है

यदि आप एक कमांड चलाते हैं, तो एक कुंजी प्रेस का अनुकरण करते हुए, एक और कुंजी प्रेस के साथ, आप वास्तव में एक तीसरी कुंजी प्रेस का अनुकरण करेंगे , जो दोनों का संयोजन है :)

समाधान करना

आपको अपने शॉर्टकट को उसी समय चलाने के लिए रोकने की जरूरत है जब नकली कुंजी प्रेस, दूसरे शब्दों में, देरी जोड़ें:

/bin/bash -c "sleep 1 && xdotool key XF86AudioPlay"

इस कमांड को शॉर्टकट में जोड़ें, और यह काम करना चाहिए।

ध्यान दें

बेशक, आप मूल्य के साथ थोड़ा खेल सकते हैं sleep 1, इसे सबसे अच्छे मूल्य पर सेट करने के लिए जो आरामदायक महसूस करता है, यह इस बात पर निर्भर करता है कि संयोजन को "चिपचिपा" कैसे दबाया जाता है। sleep 0.5बहुत अच्छी तरह से कर सकते हैं, और शॉर्टकट को और अधिक शीघ्रता से बना सकते हैं।


8

आप शॉर्टकट की परिभाषा में सीधे कमांड का उपयोग भी कर सकते हैं, इसलिए आपको इसके लिए एक स्टैंडअलोन स्क्रिप्ट बनाने की आवश्यकता नहीं है।

"स्लीप 1" वर्कअराउंड का उपयोग करने के बजाय आप --clearmodifiersध्वज का उपयोग कर सकते हैं , अर्थात आपका कस्टम शॉर्टकट इस तरह दिखाई देगा:

Name: test
Command: xdotool key --clearmodifiers XF86AudioPlay

Shortcut: Ctrl+Alt+R

मेरे लिए यह काम करता है जब शॉर्टकट को मैप करने के लिए Super+F9


क्या ऊपर का कोड स्निपेट फाइल होने का मतलब है? यदि हां, तो क्या आपको इसे किसी विशेष स्थान पर रखना है या शॉर्टकट को लागू करने के लिए किसी विशेष कमांड को चलाना है?
जूलिकलकैट

1
स्निपेट केवल मेरे द्वारा उपयोग किए जाने वाले शॉर्टकट का वर्णन है। उबंटू में आप कीबोर्ड सेटिंग्स में कस्टम शॉर्टकट बना सकते हैं। हालाँकि, मैंने अपने उबंटू संस्करण को अपग्रेड कर लिया है और अब सीधे मेरे चयन के प्रमुख संयोजन के लिए "प्ले (या प्ले / पॉज़)" क्रिया को मैप करने में सक्षम हूं, जो कि xdotool का उपयोग करने की तुलना में अधिक विश्वसनीय साबित होता है।
जन

एक --clearmodifiers से भी बेहतर यह है कि आप स्क्रिप्ट को कॉल करने के लिए जिस हॉटकी का उपयोग कर रहे हैं, उसके लिए "कीप" जारी करें। थोड़ा दोष यह है कि स्क्रिप्ट को कॉल करने के लिए हॉटकी बदलने पर आपको स्क्रिप्ट को अपडेट करने की आवश्यकता है।
वैनेडियम

1

उपयोग करने के लिए एक वैकल्पिक ( sleep 1 && xdotool ...स्नैपर प्रदर्शन के लिए) अपनी शॉर्टकट कुंजियाँ जारी करने के लिए xdotool का उपयोग करना है। थोड़ा लंबा, लेकिन आप भी उपयोग कर सकते हैं

/bin/bash -c "xdotool keyup R Alt_L Ctrl_L && xdotool key XF86AudioPlay"
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.