2012-10-28 14 views
5

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

डिफ़ॉल्ट, अंग्रेजी-लेआउट बाइंडिंग का उपयोग करके सभी आदेशों (सी-कुंजी, एम-कुंजी इत्यादि) का इलाज करने के लिए emacs को बताने का कोई आसान तरीका है?

मैं इस सवाल को देखा है: जिसमें Emacs determining keyboard layout एक ही जवाब उनके अनुसार अंग्रेजी लेआउट चाबियाँ करने के लिए सभी चाबियाँ simulates, लेकिन यह उल्लेख किया गया है यह लोडिंग समय तक खाता है, और कोड, लंबे समय से अपठनीय त्रुटि है और इस तरह शायद मेरे लिए प्रवण

सहायता मेरी सराहना की जाएगी।

+2

मुश्किल, मैं चारों ओर अच्छा काम करता हूं, "जब मैं emacs पर अंग्रेजी कीबोर्ड का उपयोग करता हूं और यदि मैं अपनी भाषा लिखना चाहता हूं, तो मैं इमैक इनबिल्ट इनपुट सिस्टम का उपयोग करता हूं"। 'सी- \' या 'एम-एक्स टॉगल-इनपुट-विधि'। – kindahero

+0

अच्छी तरह से, मेरे पास मेटा-शिफ्ट है (हालांकि मैं सभी बहु-सुस्त लेआउट उस कुंजी का उपयोग करता हूं?), लेकिन लिखने के बीच में मैं आमतौर पर केवल एक कमांड (जैसे सहेजने) तक पहुंच जाता हूं यह पता लगाने के लिए कि यह उपलब्ध नहीं है। कुछ मामलों में, चाबियाँ बदल दी जाती हैं - क्यू, उदाहरण के लिए,/में बदल जाती है, और फिर यह पूरी तरह से अप्रत्याशित हो जाती है। – CrimsonKing

उत्तर

3

यदि दो लेआउट पूरी तरह से अलग वर्णों का उपयोग करते हैं, तो आप आसानी से Emacs को "अन्य चरित्र" आज़मा सकते हैं। जैसे अगर एक कुंजी अमेरिका लेआउट में b लेकिन अन्य लेआउट में и है, तो आप उपयोग कर सकते हैं:

(define-key function-key-map [?и]  [?b]) 
(define-key function-key-map [?\C-и] [?\C-b]) 
(define-key function-key-map [?\M-и] [?\M-b]) 
(define-key function-key-map [?\M-\C-и] [?\M-\C-b]) 

OTOH अगर दो लेआउट अंत कुछ अक्षर की अदला-बदली, Emacs सच में जानना जो लेआउट करने के क्रम में सक्रिय है की आवश्यकता होगी पता है कि कुंजी को रीमेप करना है या नहीं। मुझे यह जानने के लिए कुंजीपटल हैंडलिंग के बारे में पर्याप्त जानकारी नहीं है कि Emacs आपको बताए कि वर्तमान में कौन सा लेआउट उपयोग में है।

+0

कुछ और वैश्विक होने के लिए अद्भुत होगा, "सभी कमांड कुंजियों के लिए, हमेशा अंग्रेजी लेआउट का उपयोग करें" को परिभाषित करने के लिए एक फ़ंक्शन की तरह, – CrimsonKing

+0

@EladR: सभी कुंजी कमांड कुंजी हैं। तो आप मूल रूप से यूएस लेआउट का उपयोग करने के लिए Emacs के लिए पूछ रहे हैं, और फिर 'self-insert-command' में किसी भी तरह गैर-यूएस लेआउट को पुनर्प्राप्त करें। शायद कुछ मामलों में प्रत्येक घटना के लिए कुंजी के गैर-यूएस-लेआउट संस्करण को जोड़कर किया जा सकता है। – Stefan

3

कई लेआउट प्रबंधक एप्लिकेशन (या यहां तक ​​कि विंडोज़) को अपना स्वयं का लेआउट रखने की अनुमति देते हैं। Emacs के लिए अंग्रेजी लेआउट का उपयोग करें, मातृभाषा में लिखने के लिए, इनपुट विधि स्विच करें (सी- \)।

+0

पहली बार आपको अपनी भाषा चुननी होगी, लेकिन इसके बाद यह स्वचालित रूप से डिफ़ॉल्ट (अंग्रेज़ी) और आपकी चुनी भाषा के बीच स्विच हो जाती है। यह एक राहत है कि जब भी मैं स्विच करता हूं, मुझे अपनी इनपुट विधि चुनने की ज़रूरत नहीं है :) हालांकि अगर आप एमैक्स को बंद और खोलते हैं तो आपको इनपुट चुनना होगा। फिर फिर इनपुट विधि शायद emacs की init फ़ाइल में सेट किया जा सकता है। – h3dkandi

संबंधित मुद्दे