लिनक्स में, अतिरिक्त कुंजी के बिना दबाने पर मैं SHIFT_L / SHIFT_R को कैसे मैप कर सकता हूं?


13

आज मुझे स्टीवन लोश का यह बहुत अच्छा लेख मिला , जिसमें उन्होंने कीबोर्ड मैपिंग को बढ़ावा देने वाले कुछ उत्पादकता को प्रस्तुत किया है। उनमें से बाईं और दाईं ओर की चाबियों का एक गतिशील मानचित्रण है।

विचार

जब Shift_L या Shift_R को एक अतिरिक्त कुंजी के बिना दबाया जाता है तो उन्हें क्रमशः '(' और ')' में मैप किया जाता है, अन्यथा वे सामान्य रूप से कार्य करते हैं।

समस्या

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

मैं एक बिट के चारों ओर घूम चुका हूं और पाया कि लोग विंडोज के तहत ऐसा ही करने की कोशिश कर रहे हैं जो कि ऑटोहॉटके का उपयोग करके स्पष्ट रूप से संभव है, लेकिन मुझे लिनक्स के लिए कुछ भी नहीं मिला।

क्या लिनक्स के तहत इसे हल करने का कोई तरीका है?


मैंने इसे आज़माया नहीं है, लेकिन यह askubuntu.com/q/24916/11352
Mansuro

2
यह इस प्रश्न का लगभग दोहराव है । =)
तैका काज़ुरा

जवाबों:


4

वाह! मूल प्रश्न पर उपयोगकर्ता टीका काज़ुरा की टिप्पणी काफी सही है - न केवल यह प्रभावी रूप से उस अन्य प्रश्न का एक डुप्लिकेट है , लेकिन वहां प्रदान किया गया उत्तर (" xcape का उपयोग करें ") इस समस्या को हल करता है!

Xcape रेपो और संकलन को क्लोन करने के बाद (मुझे अपने फेडोरा बॉक्स पर libXtst-devel स्थापित करना था, पहले), मैं निम्नलिखित कमांड के साथ अनुरोध किए गए सटीक व्यवहार को प्राप्त करने में सक्षम था:

xcape -e "Shift_L=parenleft;Shift_R=parenright"

भर्ती-सरसरी परीक्षण के बाद, यह बहुत अच्छी तरह से काम करने लगता है । अच्छा!

अन्य विकल्प

यदि आप एक माउस संशोधक के रूप में Shift कुंजी का उपयोग करते हैं (अर्थात यदि आप कभी भी कुछ भी शिफ्ट करते हैं), तो आप शायद xcape के टाइमआउट विकल्प को शामिल करना चाहते हैं और एक आरामदायक टाइमआउट मान प्राप्त करना चाहते हैं, ताकि माउस के साथ संयोजन में उपयोग किए जाने वाले एकल Shift कुंजी 'तीक्ष्ण कोष्ठक उत्पन्न नहीं करता है। Xcape README से:

-t <timeout ms>

यदि आप इस समयबाह्य समय से अधिक कुंजी रखते हैं, तो xcape एक महत्वपूर्ण घटना उत्पन्न नहीं करेगा। डिफ़ॉल्ट 500 एमएस है।

इसलिए, -tध्वज को टाइमआउट मान के साथ शामिल करने से , जो आपके लिए काम करता है, तब भी आप माउस के साथ तब तक शिफ्ट-क्लिक कर पाएंगे जब तक आप कम से कम timeout ms मिलीसेकंड के लिए शिफ्ट को दबाए नहीं रखते ।

(क्रेडिट, फिर से, करने के लिए teika Kazura अन्य प्रश्न उनका कहना है, और यह भी करने के लिए के लिए don_crissti वहाँ मूल जवाब के लिए।)


इस विधि के साथ एक समस्या यह है कि मैं अक्सर संपादकों में कुछ पाठ का चयन करने के लिए [Shift] + [LMouse] दबाता हूं। दिलचस्प रूप से उदात्त पाठ भी [Ctrl] + [LMouse] का उपयोग करता है इसलिए [Ctrl] को फिर से भरने के बारे में प्रश्न भी समस्या का कारण बनता है।
अन्नपूर्णे

@Annan क्या आपने xcape के टाइमआउट विकल्प को समायोजित करने के साथ प्रयोग किया है? README से: " -t <timeout ms>यदि आप इस टाइमआउट से अधिक समय तक एक कुंजी रखते हैं, तो xcape एक महत्वपूर्ण घटना नहीं उत्पन्न करेगा। डिफ़ॉल्ट डिफ़ॉल्ट ms है।" ... जब तक xcape मॉडिफ़ायर की-डाउन ईवेंट (मुझे याद नहीं हो सकता) के साथ हस्तक्षेप करता है, तो इसे इसे स्पूसिअस कीप्स उत्पन्न करने से बचाना चाहिए, जबकि तब भी आप इसे माउस-चयन संशोधक के रूप में उपयोग करते हैं जब तक कि आप इसे लंबे समय तक पकड़ नहीं लेते ।
FeRD

@ अयान, यह सुनने में बहुत अच्छा है, मैंने -tध्वज के उपयोग का सुझाव देने के लिए अपना उत्तर अपडेट कर दिया है !
FeRD

1

यह एक दिलचस्प चुनौती है, और मैं इस बात से सहमत हूं कि xinput पूरी तरह से अनुकूल प्रतीत नहीं होता है। मैंने कुछ समय xmodmap की क्षमताओं के साथ घूमने में बिताया, और जो आप करना चाहते हैं उसे हासिल करने के लिए इतनी निराशा के करीबगए ... वास्तव में वहां पहुंचने के लिए प्रबंध किए बिना।

Xmodmap का उपयोग करते हुए, बाईं ओर-शिफ्ट कुंजी पर शिफ्ट किए गए कीमबोल के रूप में पैनेलेफ़्ट को असाइन करना संभव है:

xmodmap -e 'keysym Shift_L = Shift_L parenleft Shift_L parenleft'

कौन सा सॉर्ट काम करता है, कम से कम मेरे फेडोरा 17 बॉक्स पर परीक्षण में, लेकिन संतोषजनक तरीके से नहीं। मैंने पाया कि, जगह में इस मैपिंग के साथ, शिफ्ट कुंजी अभी भी सामान्य रूप से कार्य करती है, और किसी भी प्रकार के संयम वाले रेंडर को प्रस्तुत नहीं किया है, लेकिन (निराशा की बात) यह मज़बूती से बाएं-पैरेंस का उत्पादन नहीं करता है। जो भी कारण के लिए, कुंजी मज़बूती से खुद को संशोधित करने के लिए प्रकट नहीं होती है , जो इसके स्थानांतरित कार्य को तोड़ देती है ... शुरू में। जो भी कारण के लिए, उत्तराधिकार में कुछ बार बाएं-शिफ्ट को मारना अंततः इसे बाएं-पैरेंस का उत्पादन शुरू करने का कारण होगा, लेकिन केवल चौथे या पांचवें प्रेस के बाद।

एक व्यवहार मैं किया नोटिस, तथापि, कि आप के साथ एक "पास पर्याप्त" एनालॉग के रूप में काम करने के लिए सक्षम हो सकता है: मैंने पाया कि मानचित्रण parenleft और parenright Shift_L और Shift_R पर के बाद, मैं मज़बूती से कोष्ठक द्वारा "रोलिंग" टाइप कर सकते हैं दोनों Shift कुंजियां भर में - दूसरे शब्दों में, इस मानचित्रण के साथ:

xmodmap -e 'keysym Shift_L = Shift_L parenleft Shift_L parenleft'
xmodmap -e 'keysym Shift_R = Shift_R parenright Shift_R parenright'

Shift_ दबाने के बाद Shift_R, फिर दोनों को जारी करते हुए, दूसरी दिशा में दाएं-पैरेन, या बाएं-पैरेन का उत्पादन करेगा। (परन मैपिंग को उलटा किया जा सकता है, निश्चित रूप से; मैं यह तय नहीं कर सका कि किस तरह से अधिक "प्राकृतिक" महसूस किया गया है।)

आप के लिए देख रहे हैं सटीक व्यवहार को प्राप्त करने के लिए आया था कि जितना करीब था; ऐसा नहीं लगता कि यह अकेले xmodmap का उपयोग करना संभव है।

मुझे आधा विश्वास था कि यह संभव नहीं है, अवधि, लेकिन फिर मुझे महसूस हुआ कि कम से कम एक कुंजी है जो ठीक उसी तरह काम करती है जैसा कि आप वर्णन करते हैं: सुपर ("विंडोज़") कुंजी। गनोम शेल के तहत, यह एक संशोधक कुंजी (मॉड 4) है, जो अकेले दबाए जाने पर एक अलग प्रभाव (ट्रिगर अवलोकन) पैदा करता है। तो, कम से कम सिद्धांत रूप में, एक ही तरीके से अपनी वांछित शिफ्ट-की ओवरलोडिंग को लागू करना संभव हो सकता है।

... लेकिन, मुझे पूरी तरह से पता नहीं है कि यह कैसे किया जाएगा, या शिफ्ट कुंजी को हिट करने पर हर बार आवश्यक प्रसंस्करण में कैसे आक्रामक हो जाएगा। :-)


0

हो सकता है कि कुंजी मैपिंग को बदलने के लिए एक xbindkeys देखें या बस vim या gedit के लिए एक अच्छा कोडिंग प्लगइन खोजें या जो भी आप उपयोग करना चाहें या अपना खुद का कोड करें।

उपकरण बदलने के लिए कुंजीपट /programming/6812/mapping-my-custom-keys-in-debian

शायद http://www.tldp.org/HOWTO/Keyboard-and-Console-HOWTO-14.html

और इसे सक्षम करने के लिए एक स्क्रिप्ट लिखें।

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