2012-02-28 23 views
9

Emacs में टाइप करते समय मैं अपने आंतरिक कीबोर्ड लेआउट स्विच का उपयोग करता हूं।Emacs सिस्टम कीबोर्ड लेआउट को अनदेखा करें

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

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

मैं Emacs सिस्टम कीबोर्ड लेआउट को अनदेखा करना चाहता हूं। क्या यह संभव है?

संपादित करें:
मेरे ओएस लिनक्स टकसाल 10 (64 बिट) है
मैं Emacs 24 का उपयोग

+0

आपकी Emacs इनपुट विधि क्या है और आपका सिस्टम कीबोर्ड लेआउट क्या है? कृपया सही नाम बताएं। –

उत्तर

4

आप बता सकते हैं कि कीबोर्ड लेआउट आप अपने ओएस में इस्तेमाल करते हैं और क्या इनपुट विधि का Emacs में प्रयोग करते हैं? वर्तमान में आपकी पोस्ट में पर्याप्त जानकारी नहीं है। मेरी समस्या, उदाहरण के लिए, मैंने कोलमैक और रूसी-टाइपराइटर का उपयोग ओएस लेआउट और रूसी-टाइपराइटर को माध्यमिक Emacs इनपुट विधि के रूप में किया था। संयोजन कोलमैक (ओएस) -रूसी (एमएसीएस) ने मेरा इनपुट गड़बड़ कर दिया, क्योंकि इमाक्स की इनपुट विधि ओएस से प्राप्त कुछ अंग्रेजी चरित्रों के लिए अंग्रेजी चरित्र का मानचित्रण है, और एमएक्स में सभी इनपुट विधियां QWERTY से मैपिंग पर आधारित हैं। उदाहरण के लिए, "йцукен" क्या होना चाहिए "йцазпо" के रूप में मुद्रित किया गया था। मैं निम्नलिखित कोड चलाकर इसे हल:

(require 'quail) 

(quail-define-package 
"colemak-russian" "Russian" "ru" nil 
"Russian-typewriter keyboard layout assuming that your default 
keyboard layout is Colemak" 
nil t t t t nil nil nil nil nil t) 

(quail-define-rules 
("1" ?№) ("2" ?-) ("3" ?/) ("4" ?\") ("5" ?:) ("6" ?,) ("7" ?.) ("8" ?_) ("9" ??) 
("0" ?%) ("-" ?!) ("=" ?\;) ("q" ?й) ("w" ?ц) ("f" ?у) ("p" ?к) ("g" ?е) ("j" ?н)("l" ?г) 
("u" ?ш) ("y" ?щ) (";" ?з) ("[" ?х) ("]" ?ъ) ("\\" ?\)) ("a" ?ф) ("r" ?ы) ("s" ?в) 
("t" ?а) ("d" ?п) ("h" ?р) ("n" ?о) ("e" ?л) ("i" ?д) ("o" ?ж) ("'" ?э) ("z" ?я) ("x" ?ч) 
("c" ?с) ("v" ?м) ("b" ?и) ("k" ?т) ("m" ?ь) ("," ?б) ("." ?ю) ("/" ?ё) ("~" ?+) ("!" ?1) 
("@" ?2) ("#" ?3) ("$" ?4) ("%" ?5) ("^" ?6) ("&" ?7) ("*" ?8) ("\(" ?9) ("\)" ?0) ("_" ?=) 
("+" ?\\) ("Q" ?Й) ("W" ?Ц) ("F" ?У) ("P" ?К) ("G" ?Е) ("J" ?Н) ("L" ?Г) ("U" ?Ш) ("Y" ?Щ) 
(":" ?З) ("{" ?Х) ("}" ?Ъ) ("|"?\() ("A" ?Ф) ("R" ?Ы) ("S" ?В) ("T" ?А) ("D" ?П) ("H" ?Р) 
("N" ?О) ("E" ?Л) ("I" ?Д) ("O" ?Ж) ("\"" ?Э) ("Z" ?Я) ("V" ?Ч) ("X" ?С) ("C" ?М) ("B" ?И) 
("K" ?Т) ("M"?Ь) ("<" ?Б) (">" ?Ю) ("?" ?Ё)) 

और फिर colemak-russian बजाय russian-typewriter इस्तेमाल किया। आप अपने लेआउट के अनुरूप संबंधित जोड़े को बदल सकते हैं।

संपादित करें: बेशक, यह सबसे सही समाधान नहीं है। Maksim के रूप में, दोनों भाषाओं के लिए आम वर्णों का अनुवाद तब भी किया जाता है जब नहीं होना चाहिए। उदाहरण के लिए, मैंने कोलेकैक और इमाक्स इनपुट विधि को "कोलेमक-रूसी" में सिस्टम लेआउट सेट किया है - तो मैं अल्पविराम का उपयोग नहीं कर सकता, जो "बीआर" बन जाता है।

Emacs सिस्टम लेआउट को अनदेखा करने के लिए, आप इसे xxkb, SCIM या IBus जैसे तृतीय-पक्ष सॉफ़्टवेयर के साथ एकीकृत कर सकते हैं। जैसा कि आप रूसी बोलते हैं, आप इसे tutorial आज़मा सकते हैं।

मैं व्यक्तिगत रूप से hacky workaround का उपयोग करता हूं ताकि रूसी संयोजनों को मुख्य combos के अंदर अनुवादित किया जा सके और Emacs इनपुट विधियों को पूरी तरह से अनदेखा कर सकें।

+0

मुझे नहीं पता कि मैं इसका परीक्षण कब कर पाऊंगा, लेकिन मुझे लगता है कि यह ठीक है। –

+0

ऐसा लगता है कि सिस्टम लेआउट को अनदेखा करना असंभव है क्योंकि Emacs को सीधे कीबोर्ड से इनपुट नहीं मिलता है। आपका कोड साइरिलिक चरित्र को सही तरीके से समझ देगा, लेकिन क्या यह "," और "।" के लिए काम करेगा। वर्ण जो लैटिन लेआउट में भी मौजूद हैं? –

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