Linux में nac -nw में Super का प्रयोग करें


15

मैं उत्तर के लिए एक सरल और सीधा सवाल खोजने के लिए संघर्ष कर रहा हूं और इसलिए मैंने यहां पूछने का फैसला किया है।

प्रश्न: क्या लिनक्स में टर्मिनल में लॉन्च किए गए Emacs में सुपर का उपयोग करने का एक तरीका है?

पुनश्च : मैंने बहुत सारी जानकारी पढ़ी, xmodmapलेकिन मुझे लगता है कि कुंजी यह है कि टर्मिनल एमुलेटर सुपर कुंजी का प्रतिनिधित्व नहीं कर सकता है। हालाँकि, (kbd "s-SPC")कुछ देता है और मैं अनुवाद की सुविधा का उपयोग करने के बारे में सोच रहा था .Xdefaults/X। क्या मैं सही रास्ते पर हूँ? के परिणाम को देखते हुए kbd, मुझे XTerm.VT100.translations के रूप में क्या करने की आवश्यकता है?

जवाबों:


21

आप X11 Emacs में अधिक सहज होंगे, जो कि कीबोर्ड इनपुट प्राप्त कर सकते हैं और टर्मिनल के लिए एन्कोडिंग और डिकोडिंग के माध्यम से पाठ प्रदर्शित कर सकते हैं । टेक्स्ट मोड एडिटर का उपयोग करने का मुख्य कारण यह है कि इसे स्क्रीन के अंदर या रिमोट मशीन पर चलाया जाए, लेकिन ट्रम्प के लिए धन्यवाद, आमतौर पर अपने स्थानीय Emacs में रिमोट फाइल को एडिट करना आसान होता है। कहा जा रहा है, आप तब तक कर सकते हैं जब तक आपका टर्मिनल एमुलेटर सहयोग करता है, जो कि Xterm के मामले में है।

जब आप किसी कुंजी या कुंजी संयोजन को टर्मिनल में दबाते हैं, तो यह टर्मिनल में चल रहे एप्लिकेशन को एक या अधिक वर्णों के अनुक्रम के रूप में प्रेषित होता है। उदाहरण के लिए, जब आप दबाते हैं a, तो आवेदन प्राप्त होता है a। जब आप दबाते हैं Enter, तो एप्लिकेशन को चरित्र CR(उर्फ ^M"कंट्रोल-एमएम"), उर्फ ​​चरित्र संख्या 13, उर्फ \r( \015) प्राप्त होता है। इसमें शामिल होने वाले मुख्य संयोजनों को Altआम तौर पर चरित्र ESC( ^[aka। Aka \eor \033) के रूप में प्रसारित किया जाता है और उसके बाद बिना कुंजी या कुंजी संयोजन के अनुक्रम के लिए Alt। समारोह चाबियाँ और अन्य कुंजी संयोजन के साथ शुरुआत से बच दृश्यों के रूप में प्रसारित कर रहे हैं \e[या \eO।

एस्केप सीक्वेंस पूरी तरह से मानकीकृत नहीं हैं, और टर्मिनल आमतौर पर कुछ कुंजियों के लिए कुछ विशेषताओं को अनदेखा करते हैं। उदाहरण के लिए, हाइपर और सुपर संशोधक आमतौर पर नजरअंदाज कर दिए जाते हैं। आप अपने टर्मिनल से दबाने से कुंजी संयोजन के लिए भेजता है क्या देख सकते हैं Ctrl+ Vएक खोल में है कि कुंजी संयोजन के बाद शीघ्र, या C-qहै या C-h cEmacs में कुंजी संयोजन के द्वारा पीछा किया।

Xterm आपको एक्स संसाधनों के माध्यम से प्रत्येक कुंजी के लिए भागने के क्रम को कॉन्फ़िगर करने देता है । अधिकांश सेटअप ~/.Xresourcesएक्स शुरू होने से संसाधन पढ़ते हैं , और आप फ़ाइल को मैन्युअल रूप से लोड कर सकते हैं xrdb -merge ~/.Xresources।

XTerm.VT100.translations:       #override \n\
    Ctrl ~Shift ~Meta <Key> Return: string("\033[73;5~") \n\
    Ctrl Shift ~Meta <Key> percent: string("\033[37;6~")

एक आम सम्मेलन ESC [ number1 ; number2 ~संशोधक के साथ फ़ंक्शन कुंजियों के लिए फ़ॉर्म के एस्केप अनुक्रम का उपयोग करता है । number1फ़ंक्शन कुंजी (इंगित करता है 15के लिए 24के लिए F5के लिए F12- ऐतिहासिक कारणों के लिए, एफ 1 के माध्यम से F4और अलग अलग भागने दृश्यों है) number2संशोधक संकेत करता है ( 2के लिए Shift, 5के लिए Ctrl, 3के लिए Meta, 8के लिए Ctrl+ Meta, और के लिए +1 जोड़ने Shift- नहीं, यह नहीं बहुत संगत है)।

आपको हाइपर और सुपर संशोधक को उनकी संख्या के माध्यम से निर्दिष्ट करना होगा, जैसे Mod1कि Mod5। xmodmap -pmकुंजियों की मैपिंग को संशोधक में देखने के लिए चलाएँ । उदाहरण के लिए, यदि Super_LMod5 के लिए बाध्य है, उसके बाद निम्न पंक्ति (इस सटीक मामले का उपयोग करें) को परिभाषित करता है के लिए एक बाध्यकारी Super+ Space:

    ~Ctrl ~Meta Mod5 <Key> space: string("\033[32;16~") \n\

Emacs अपने आंतरिक कुंजी प्रतिनिधित्व में input-decode-mapयाlocal-function-key-map ( function-key-mapEmacs 23 से पहले) से बचने के दृश्यों का अनुवाद करता है ।

(define-key local-function-key-map "\033[32;16~" [(super ?\ )])

यह पोस्ट 80% पुनर्नवीनीकरण सामग्री से बना है क्या कोई भी लिनक्स टर्मिनल हैं जो सभी प्रमुख संयोजनों को संभाल सकते हैं?


यह एक महान जवाब है, जिसमें मुझे पता चला है कि मुझे थोड़ा-बहुत बिखरा हुआ है। बस एक सवाल: आपको कहां मिला / आपने 32 का चयन कैसे किया? 16 ~ और यह नीचे के बंधन के साथ मेल नहीं खा रहा है? मुझे संख्याओं की उत्पत्ति समझ में आई लेकिन मैं आपसे पूछना चाहता हूं कि क्या आप नंबर 1 और नंबर 2 के लिए मैपिंग टेबल से लिंक कर सकते हैं ।
— एंड्रिया रिचियार्डी

@AndreaRichiardi मैंने 32 को चुना क्योंकि यह अंतरिक्ष वर्ण के लिए ASCII / यूनिकोड मान है और 16 क्योंकि मानक बाइंडिंग Ctrl, मेटा और शिफ्ट के लिए 8 तक मान का उपयोग करते हैं। नीचे 33 एक टाइपो था। जब तक यह अन्य कुंजियों के साथ संघर्ष नहीं करता है तब तक आप कुछ भी चुन सकते हैं।
— गिलेस एसओ- बुराई को रोकना '

मुझे अनुक्रम को एक फ़ंक्शन से बांधना था इसलिए मैंने क्षण भर में हल कर लिया (global-set-key "\033[32;16~" 'set-rectangular-region-anchor)। लेकिन पूरा होने के लिए, मैंने आपके define-keyऊपर कोशिश की , लेकिन मैं तब ट्रिगर नहीं कर सका (global-set-key (kbd "s-SPC") 'set-rectangular-region-anchor)। यह सिर्फ मुद्रण था, 16 ~ बफर में। उस सीक्वेंस को (kbd "s-SPC") बाँधना अच्छा होता, ताकि मेरे पास महत्वपूर्ण सीक्वेंस बंधे हों और मैं इसे अन्य कमांड्स को पुनः असाइन कर सकूँ।
— एंड्रिया रिचियार्डी

C-h lएस-एसपीसी को दबाने पर अब निम्नलिखित मिलता है: ESC [ 3 2 ; 1 6 ~लेकिन M-[ 32 is undefined
— एमएसीएस

@AndreaRichiardi xterm भाग में अधिक टाइपो को ठीक करने के बाद (जो आपको लगता है कि चूंकि Emacs को इच्छित वर्ण अनुक्रम प्राप्त है), यह मेरे लिए काम करता है। यह काम करता है अगर आप के function-key-mapबजाय का उपयोग करें local-function-key-map? जब आप local-function-key-mapटर्मिनल-निर्भर होते हैं तो यह सेट होने का विषय हो सकता है ।
— गाइल्स का SO- बुराई से दूर रहना '

0

यदि आप एक Emacs पैकेज स्थापित करने और अपने टर्मिनल को कॉन्फ़िगर करने के लिए तैयार हैं, तो मैंने एक Emacs पैकेज लिखा है जो Emacs और टर्मिनलों को सिखा सकता है कि कैसे सभी PC कीबोर्ड कुंजियों और संशोधक कुंजी संयोजनों को ठीक से पहचाना जाए:

https://github.com/CyberShadow/term-keys

सुपर संशोधक को एन्कोडिंग को डिफ़ॉल्ट रूप से सक्षम नहीं किया गया है, लेकिन पैकेज अनुकूलन योग्य है और यह कॉन्फ़िगर करने की अनुमति देता है कि कौन सा संशोधक कुंजी संयोजन एन्कोडेड है। सुपर संयोजक को शामिल करने वाले कुंजी संयोजनों को सक्षम करने के लिए, term-keys/want-key-p-funcएक फ़ंक्शन पर सेट करें जो गैर-शून्य tहोने पर वापस आता (elt mods 3)है ( एक स्पष्टीकरण के लिए डिफ़ॉल्ट कार्यान्वयन देखें )।


0

मेरी इनिट फ़ाइलों में निम्नलिखित हैं:

(global-set-key [f7] nil)
(global-set-key [f8] nil)
(define-key function-key-map [(f7)] 'event-apply-super-modifier)
(define-key function-key-map [(f8)] 'event-apply-hyper-modifier)

यह मुझे फ़ंक्शन कुंजियों का उपयोग करके सुपर और हाइपर कुंजियाँ भेजने की अनुमति देता है।


-1

संक्षिप्त उत्तर: उपयोग करें Konsole।

स्पष्टीकरण:

  • Emacs ' local-function-key-mapकी एंट्री मैपिंग C-x @ sहै event-apply-super-modifier।
  • KonsoleSuperभागने के अनुक्रम में नक्शे (विंडोज लोगो कुंजी) ^X@s(जो कहीं भी प्रलेखित नहीं लगता है, मैंने इसे संयोग से खोजा था)। आप Konsoleउदाहरण के लिए इसे खोलकर और दबाकर आजमा सकते हैं Ctrl-v Win-o।

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