टर्मिनल में ये एक्सटी कमांड क्यों काम करते हैं, लेकिन जब xbindkeys के साथ बाध्य नहीं होते हैं?


18

यह xteकमांड, जब मैं इसे टर्मिनल में चलाता हूं, एक्सपो मोड को ट्रिगर करता है:

xte 'keydown Super_L' 'key S' 'keyup Super_L'

हालाँकि, जब मैंने इसे अपने .xbindkeysrc फ़ाइल में डाला:

"xte 'keydown Super_L' 'key S' 'keyup Super_L'"
  b:11

जब मैं बटन पर क्लिक करता हूं तो कुछ नहीं होता है। जब मैं बटन 11 दबाता हूं तो निम्नलिखित बाइंडिंग अक्षर X मेरे कंसोल में दिखाई देता है:

"xte 'key X'"
  b:11

तो एक्सपो बाध्यकारी कार्य क्यों नहीं करता है?


xbindkeys -n -vबटन 11 पर क्लिक करने पर यह क्रिया आउटपुट है :

बटन दबाओ!
e.xbutton.button = 11
e.xbutton.state = 16
"xte 'कीडाउन Super_L' 'key W' 'keyup Super_L'"
    m: 0x0 + b: 11 (माउस)
विंडो 2bb के लिए स्क्रीन 0 मिली
कांटा + निष्पादन कॉल के साथ कार्यक्रम शुरू करें
बटन रिलीज!
e.xbutton.button = 11
e.xbutton.state = 16

और कुछ भी नहीं होता है। क्या इसका xbindkeysकमांड को निष्पादित करने के तरीके से कोई लेना देना है? (कांटा + निष्पादन कॉल)


नंबर दो का प्रयास।

expo.sh:

#!/usr/bin/env bash
export DISPLAY=:0
xte 'keydown Super_L' 'key S' 'keyup Super_L'

कमांड लाइन से इस स्क्रिप्ट को निष्पादित करना एक्सपो को सक्रिय करता है। इसे xbindkeys में बांधना:

"sh ~/expo.sh"
  b:11

माउस बटन 11 पर क्लिक करना:

बटन दबाओ!
e.xbutton.button = 11
e.xbutton.state = 16
"श ~ / expo.sh"
    m: 0x0 + b: 11 (माउस)
विंडो 2bb के लिए स्क्रीन 0 मिली
कांटा + निष्पादन कॉल के साथ कार्यक्रम शुरू करें

कुछ नहीं हुआ!


1
आप <Super> <S> दबाने की कोशिश कर रहे हैं? मुझे पता है xbindkeys + xte कभी-कभी picky हो सकती है।
सेठ

@ सेठ: सही है। किसी भी तरह से pickyness के आसपास काम करने के लिए?
हब्रो

1
कोशिश करो 'keydown Super_L' 'keydown S' 'keyup S' 'keyup Super_L'
सेठ

@ सेठ: मुझे कोई फर्क नहीं पड़ता कि मुझे डर है :(
हब्रो

क्या आपने परिवर्तन करने के बाद xbindkeys को पुनः लोड किया? कभी-कभी यह आवश्यक है। आपको अंतिम लक्ष्य है कि मुझे लगता है कि कार्यक्षेत्र का अवलोकन करना है?
सेठ

जवाबों:


17

एक और सरल उपाय: xbindkeys परिभाषा में सिर्फ "b: 11" का उपयोग करने के बजाय, "b: 11 + रिलीज़" का उपयोग करें। यह तब तक इंतजार करेगा जब तक आप कमांड को फायर करने के लिए बटन जारी नहीं करते।

उदाहरण:

"sh ~/expo.sh"
  b:11 + release

2
हुब्रो को यहां वापस आना चाहिए और इसे सही उत्तर के रूप में चिह्नित करना चाहिए ...
डेविड लजंग मैडिसन स्टेलर

7

यह बहुत अजीब है। यह पता चला है कि अगर मेरे माउस बटन को अभी भी दबाया गया है (अभी तक जारी नहीं किया गया है) जब Super+Wकीस्ट्रोक को सिम्युलेटेड किया जाता है, तो कुछ भी नहीं होता है। मुझे नहीं पता कि इसके लिए किसे दोषी ठहराया जाए (शायद दालचीनी?)। मैंने इसके चारों ओर काम किया है, हालांकि, xteकमांड में थोड़ी देरी जोड़कर :

xte 'usleep 100000' 'keydown Super_L' 'key S' 'keyup Super_L'

अब यह अनुकरण करने से पहले 0.1 सेकंड इंतजार करता है Super+S। यदि मैं माउस बटन को 0.1 सेकंड से अधिक दबाकर रखता हूं , तो कुछ नहीं होता है।

यह एक वर्कअराउंड उत्तर है। मैं एक उचित जवाब पसंद करूंगा।


हब्रो, कृपया user215129 द्वारा उच्च मूल्यांकन किया गया उत्तर देखें और इसे सही के रूप में चिह्नित करें
डेविड लैजंग मैडिसन स्टेलर

1
@DavidLjungMadison No. यह मेरे सवाल का जवाब भी नहीं है, बस काम के लिए एक सुझाव है।
हब्रो

1
मुझे आश्चर्य है कि अगर आप उत्तर को समझते हैं। समस्या यह है कि आप कुंजियों को भेजने की कोशिश कर रहे हैं जबकि बटन अभी भी नीचे है। बटन के रिलीज होने का इंतजार करने का मतलब है कि यह बटन जारी होने तक चाबी नहीं भेजेगा, जिससे आपकी समस्या हल हो जाएगी। वर्कअराउंड नहीं, यह मुद्दे का स्पष्टीकरण है और इसे हल करने का एक तरीका है।
डेविड लजंग मैडिसन स्टेलर

1
तब आप अभी भी नहीं समझे। मुद्दा यह है कि आप कुंजी टाइप करने के लिए है, जबकि बटन नीचे है कोशिश कर रहे हैं, और जो शुरूआत एक्सपो सुपर एस, नहीं Btn -2 + सुपर-एस की तलाश में है। आपका ठीक है एक समाधान है क्योंकि यह गारंटी है कि बटन है से समस्या का समाधान नहीं होता है, और कई परिस्थितियों में काम नहीं करता। समाधान है (जैसा कि अक्सर माउस की घटनाओं से निपटने में होता है) किसी भी आदेश को ट्रिगर करने से पहले बटन रिलीज की प्रतीक्षा करें, इससे यह सुनिश्चित होता है कि बटन कीस्ट्रोक के साथ मिश्रित नहीं है।
डेविड लजंग मैडिसन स्टेलर

2
पुष्टि कर सकते हैं कि user215129 उत्तर वास्तव में सही नहीं है और प्रश्न का उत्तर नहीं देता है। अभी इस समस्या पर मेरी स्वयं की जांच करना और मेरे मामले में इसे जारी करने या देरी करने के लिए बदलना कोई विकल्प नहीं है क्योंकि मुझे बटन दबाते समय कार्रवाई करने की आवश्यकता है, रिलीज पर अलग कार्रवाई के साथ। देखें: askubuntu.com/questions/984054/…
एथिल यूआई

2

मैंने उसी समस्या का सामना किया।

"xte 'key b'"

कंसोल में काम कर रहा था लेकिन xbindkeys पैरामीटर फ़ाइल में नहीं। मैंने उसे प्राप्त करने के लिए "xev" कमांड का उपयोग करते हुए, उसके keyym कोड द्वारा b बदल दिया:

"xte 'key Ox62'"

इसने मेरे लिए काम किया



1

Sxhkcd keymapper का उपयोग करते समय समान समस्या है। यह पता चलता है कि आपके वास्तविक शॉर्टकट कुंजियों को अभी भी दबाया जा रहा है।

कुछ अर्ध-कामगार हैं:

  • रिलीज इवेंट देखें
  • sleep 0.2अपनी आज्ञा के सामने जोड़ें
  • नेता-कुंजी के साथ शॉर्टकट का उपयोग करें
  • अपने शॉर्टकट अनुक्रम को अपने xte अनुक्रम के सामने जारी करें

हालाँकि आप उस = के साथ realtime कार्रवाई नहीं कर सकते

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.