Xbindkeys ठीक से काम नहीं करेगा


10

मुझे थोड़ी समस्या है। मैं कुछ हॉटकीज़ को फिर से तैयार करना चाहता था जिनका उपयोग मैं अपने पिछले सिस्टम से करता हूं, लेकिन मैं इसे ठीक से काम करने के लिए नहीं कर सकता xbindkeys

xbindkeys संयोजन को पहचानता है, लेकिन किसी तरह कमांड ट्रिगर नहीं करता है।

अगर मैं कमांड का उपयोग करता हूं

xdotool key braceleft

यह मुझे {कंसोल में सही संकेत देता है। हालांकि अगर मैं xbindkeys में एक ही कमांड का उपयोग करता हूं तो कुछ नहीं होता है। अगर मैं firefoxइसके साथ कमांड को ठीक से काम करता हूं और फायरफॉक्स खोलता है, तो मुझे लगता है कि यह xbindkeysकाम करता है।

मैं निम्नलिखित प्राप्त करना चाहता हूं:

मैं चरित्र टाइप करना चाहते हैं {किसी के साथ सक्रिय विंडो के लिए Alt_R+ 7या Alt_Left+ Ctrl+ 7तो मैं दोनों का उपयोग कर सकते हैं। मुझे पता है Alt_R(AltGr) उचित तरीका है, लेकिन जर्मन कीबोर्ड पर किसी भी तरह से AltGr(Alt_R) कुंजी के साथ ब्रेसलेफ्ट टाइप करना मुश्किल है, इसलिए मुझे इसके बजाय Alt_L+ Control+ का उपयोग 7करना होगा (जैसे मैं अपने पिछले सिस्टम में उपयोग किया गया था)। मुझे किसी तरह यह 12.04 में ठीक से काम करने के लिए मिला, लेकिन मैं इसे 14.04 में काम नहीं कर सकता।

कोई सुझाव? मैंने कई कमांड की कोशिश की। उन सभी ने कंसोल में काम किया लेकिन xbindkeys द्वारा निष्पादित होने पर उनमें से किसी ने भी काम नहीं किया

xdotool type '{'
xdotool key braceleft
xdotool key ISO_Level3_Shift+7
xvkbd -xsendevent -text '{'
xvkbd -xsendevent -text '\[Alt_R]+7'

यह मेरा विन्यास है, जो काम नहीं करेगा

"xdotool key braceleft"
Control+Alt + 7

हालाँकि, यह काम करता है:

"firefox"
Control+Alt + 7

समाधान संपादित करें

जैसा कि मैंने एक और कई चीजों की कोशिश की, मैंने देखा कि xdotool जल्द ही ट्रिगर होने लगता है। मैंने इस तरह कॉन्फिग को बदल दिया:

"sleep 1 && xdotool type --delay 15 '{'"
Control+Alt + 7

अब यह सक्रिय विंडो में सही {चिन्ह भेजता है। अब केवल एक चीज बची हुई है, नींद को कम करने और एक व्यावहारिक मूल्य में देरी, क्योंकि 1 सेकंड थोड़ा बहुत लंबा लगता है :)

** अतिरिक्त जानकारी ** ठीक है, अब मैं उपयुक्त मूल्य खोजने में कामयाब रहा। यदि आप नींद की अवधि पूरी होने तक चाबी जारी करते हैं तो यह केवल तभी काम करता है। यदि आप बहुत धीमी गति से काम नहीं करेंगे।

यह सभी गैर-जर्मन जर्मन AltGr वर्णों के लिए मेरा वर्तमान कॉन्फ़िगरेशन है

"sleep 0.2 && xdotool type --delay 15 '{'"
Control+Alt + 7

"sleep 0.2 && xdotool key --delay 15 at"
Control+Alt + q

"sleep 0.2 && xdotool type --delay 15 '€'"
Control+Alt + e

"sleep 0.2 && xdotool type --delay 15 '['"
Control+Alt + 8

"sleep 0.2 && xdotool type --delay 15 ']'"
Control+Alt + 9

"sleep 0.2 && xdotool type --delay 15 '}'"
Control+Alt + 0

"sleep 0.2 && xdotool type --delay 15 '~'"
Control+Alt + plus

हालाँकि यदि आप कई @ संकेत (उदाहरण के लिए) टाइप करना चाहते हैं तो आपको Ctrl + Alt + Q को दबाकर रखना होगा, लेकिन सभी कुंजियों को छोड़ दें और फिर इसे फिर से दबाएं। यह, हालांकि, AltGr के बजाय विकल्प Control + Alt नहीं होने से बहुत बेहतर है, लेकिन यह उतना प्रभावी नहीं है जितना कि मेरा उपयोग किया गया था। शायद मुझे इसके लिए भी कोई हल मिल जाएगा।


हुह, यह एक अच्छी खोज है! अपने स्वयं के प्रश्न का उत्तर देने की कोई सीमा नहीं है, केवल एक समय सीमा है । यह बहुत अच्छा होगा यदि आप वापस आ सकते हैं और 6 घंटे में उत्तर के रूप में पोस्ट कर सकते हैं। अगर आप उसकी परवाह करते हैं तो आपको कुछ प्रतिनिधि भी मिलेंगे। यदि आप वास्तव में परवाह नहीं करते हैं, तो मैं बस कुछ दिनों में मेरे उत्तर में आपके समाधान को शामिल करूंगा।
टेराडॉन

क्या आपने कभी पता लगाया है कि xdotoolनीचे की ओर रहते हुए कुंजी को कैसे दोहराया जाए?
फरजेर

सच कहूं तो मैंने अब तक इसकी कोशिश नहीं की थी। मैंने सफलतापूर्वक 60fps (12.04 में यह बिल्कुल भी शुरू नहीं होगा) के साथ चलने के लिए लीग ऑफ लीजेंड्स प्राप्त किया, ताकि मैं, जब मैं घर पर हो, मैं पूरे समय खेल रहा था।
एलो

मुझे दिनों के लिए काम करने वाले कुछ शॉर्टकट नहीं मिले। समाधान सरल था: मेरे उबंटू डेस्कटॉप को xbindkeys से पहले शॉर्टकट मिला। बस kayboard सेटिंग्स को संपादित करें, कार्रवाई के साथ एक नया कस्टम शॉर्टकट जोड़ेंxdotool getactivewindow key Home
BurninLeo

ऐसा लगता है कि आप जर्मन कीबोर्ड लेआउट का अनुकरण करने का प्रयास कर रहे हैं। आप सिस्टम सेटिंग में सिर्फ अपने कीबोर्ड लेआउट को ही स्विच क्यों नहीं करते हैं?
राप्ती

जवाबों:


4

xdotoolवास्तविक कुंजी दबाए जाने के दौरान समस्या है Xorg बार-बार कीपर ईवेंट भेजता है ( xevआउटपुट देखें)। इसे दूर करने के लिए आपको अस्थायी रूप से रिपीट फ़ीचर को बंद करने की आवश्यकता है, फिर कीरेज़ घटना को कुंजी पर उत्पन्न करें जो नीचे थीं।

के बजाय

"sleep 0.2 && xdotool type --delay 15 '{'"
  Control+Alt + 7

निम्नलिखित प्रयास करें:

"xset r off; xdotool keyup --window 0 7 type --clearmodifiers --window 0 '{'; xset r on"
  Control+Alt + 7

आपके उत्तर के लिए धन्यवाद, लेकिन मैं अब एक्सएफसीई के साथ मांजारो का उपयोग कर रहा हूं और वहां यह बॉक्स से बाहर काम करता है, इसलिए नींद की आवश्यकता नहीं है।
एलो

@ फिर, ये उत्तर केवल आपके लिए नहीं हैं, इसलिए सबसे सार्वभौमिक समाधान की सराहना की जाती है।
मिडनोक

3

जैसा कि मैंने एक और कई चीजों की कोशिश की, मैंने देखा कि xdotool जल्द ही ट्रिगर होने लगता है। मैंने इस तरह कॉन्फिग को बदल दिया:

"sleep 1 && xdotool type --delay 15 '{'"
Control+Alt + 7

अब यह सक्रिय विंडो में सही {चिन्ह भेजता है। अब केवल एक चीज बची हुई है, नींद को कम करने और एक व्यावहारिक मूल्य में देरी, क्योंकि 1 सेकंड थोड़ा बहुत लंबा लगता है :)

** अतिरिक्त जानकारी ** ठीक है, अब मैं उपयुक्त मूल्य खोजने में कामयाब रहा। यदि आप नींद की अवधि पूरी होने तक चाबी जारी करते हैं तो यह केवल तभी काम करता है। यदि आप बहुत धीमी गति से काम नहीं करेंगे।

यह सभी गैर-जर्मन जर्मन AltGr वर्णों के लिए मेरा वर्तमान कॉन्फ़िगरेशन है

"sleep 0.2 && xdotool type --delay 15 '{'"
Control+Alt + 7

"sleep 0.2 && xdotool key --delay 15 at"
Control+Alt + q

"sleep 0.2 && xdotool type --delay 15 '€'"
Control+Alt + e

"sleep 0.2 && xdotool type --delay 15 '['"
Control+Alt + 8

"sleep 0.2 && xdotool type --delay 15 ']'"
Control+Alt + 9

"sleep 0.2 && xdotool type --delay 15 '}'"
Control+Alt + 0

"sleep 0.2 && xdotool type --delay 15 '~'"
Control+Alt + plus

हालाँकि यदि आप कई @ संकेत (उदाहरण के लिए) टाइप करना चाहते हैं तो आपको Ctrl + Alt + Q को दबाकर रखना होगा, लेकिन सभी कुंजियों को छोड़ दें और फिर इसे फिर से दबाएं। यह, हालांकि, AltGr के बजाय विकल्प Control + Alt नहीं होने से बहुत बेहतर है, लेकिन यह उतना प्रभावी नहीं है जितना कि मेरा उपयोग किया गया था। शायद मुझे इसके लिए भी कोई हल मिल जाएगा।


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

इसके बजाय sleep, मुझे लगता है कि आप + releaseप्रमुख कॉम्बो में जोड़ना चाहते हैं । xbindkeysकमांड को ट्रिगर करने से पहले कुंजी जारी होने तक इंतजार करना बताएगा ।
wjandrea

3

जैसा कि समान प्रश्नों में प्रलेखित किया गया है ( ये xte कमांड टर्मिनल में काम क्यों करते हैं, लेकिन जब xbindkeys से बाउंड नहीं होते हैं? ), तो आप रिलीज़ पर ( xbindkeysट्रिगर अप) घटनाओं को ट्रिगर करने के लिए कह सकते हैं :

"xdotool key braceleft"
   Release+Control+Alt + 7

इस तरह, शॉर्टकट के लिए उपयोग की जाने वाली चाबियों और भेजे गए लोगों के बीच कोई संघर्ष नहीं है।


2

मेरे पास हाल ही में यह मुद्दा था, जहां मैंने Ctrl + G. का उपयोग करते हुए मीडिया प्ले / पॉज़ (XF86AudioPlay) कुंजी को अनुकरण करने की कोशिश की थी। कुछ शोध के बाद, यह न केवल मुझे नियंत्रण को रद्द करने की आवश्यकता थी , बल्कि जी कुंजी भी (जो क्या sleep 0.1देरी के साथ शुरू करने की जरूरत है )। अगर मैं keyupxdotool के साथ-साथ --clearmodifiers स्विच का उपयोग करके इन दोनों कुंजियों को रद्द करता हूं, तो यह काम करता है। यह मेरी नई कमांड है, मेरे .xbindkeys.rc फ़ाइल में:

"xdotool keyup g key --clearmodifiers XF86AudioPlay"
Control + g

1

यकीन नहीं है कि यह साथ काम क्यों नहीं करता है xbindkeys, मुझे लगता है कि आपको लिखने के लिए खिड़की को निर्दिष्ट करने की आवश्यकता है। वर्कअराउंड के रूप में, आप xvkbdइसके बजाय उपयोग कर सकते हैं ।

  1. इंस्टॉल xvkbd

    sudo apt-get install xvkbd
    
  2. इसे अपनी .xbindkeysrcफ़ाइल में जोड़ें

    "xvkbd -text '{'"
    Control+Alt + 7
    

वह काम करना चाहिए।


टिप्पणियाँ

किसी कारण से, मेरी मशीन पर, xvkbdमेरे मुख्य एक (यूएस अंग्रेजी) के बजाय मेरे माध्यमिक लेआउट (स्पेनिश) में से एक का उपयोग कर रहा है और यह {वास्तव में प्रिंट करने का कारण बनता है "। यदि आपके पास भी यह समस्या है, तो {उपयोग किए गए लेआउट के साथ कौन सी कुंजी मेल खाती है , यह पता लगाने के लिए बस थोड़ा सा चारों ओर खेलें । वैकल्पिक रूप से, आप गहरी खुदाई कर सकते हैं और यह पता लगा सकते हैं कि xvkbdइसकी localeसेटिंग कहाँ से मिलती है।


अभी भी काम नहीं करता है। उचित पात्रों के साथ भी। अगर मैं कंसोल में xvkbd -text 'Apple' लिखता हूं, तो यह Apple को प्रिंट करता है, अगर मैं इसे xbindkeys के माध्यम से निष्पादित करता हूं, तो कुछ भी नहीं होता है। अगर मैं xbindkeys पर देखने -v यह देखें कि यह आदेश दबाया मान्यता प्राप्त
एलो

मुझे यह काम करने के लिए मिला, लेकिन कुछ और के साथ
Ello

@ बढ़िया! आपने क्या उपयोग किया? इसने मेरे लिए अच्छा काम किया। क्या आप अपने समाधान की व्याख्या करते हुए उत्तर दे सकते हैं और इसे स्वीकार कर सकते हैं?
टेराडॉन

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