2009-10-13 9 views
7

मैं एक तरह से तलाश कर रहा हूँ के साथ remapping अपने कीबोर्ड के लिए एक और "लेआउट" जोड़ने के लिए। मैं पहले से ही एक लेआउट का उपयोग कर रहा हूं जो स्थानीय वर्णमाला अक्षरों के लिए altgr का उपयोग करता है। मैं जो जोड़ना चाहता हूं वह एक प्रतिबिंबित राइथेंड-साइड कीबोर्ड है जो कैप्स-लॉक के साथ सक्रिय होता है (http://xkcd.com/mirrorboard.xkb में वर्णित एक)कीबोर्ड अधिक संशोधक

दुर्भाग्य से ISO_LEVEL3_SHIFT पहले से ही स्थानीय वर्णमाला द्वारा लिया गया है। (AFAIK) यदि मैं समूह बदलने के लिए mode_shift का उपयोग करता हूं तो मैं अब समूह में 2 से अधिक स्तरों का उपयोग नहीं कर सकता। क्या altgr और mode_shift दोनों के लिए अलग-अलग समूह बनाने का कोई तरीका है?

+0

यह प्रश्न मूल रूप से एक असामान्य तरीके से एक कीपैप संकलित करने के बारे में है जिसके लिए निम्न-स्तरीय हैक्स की आवश्यकता होती है। मैंने इसे सुपरसियर पर डालने के बारे में सोचा, लेकिन इसे वहां कोई जवाब नहीं मिलेगा। यह प्रोग्रामिंग के करीब है (हां - यह मूल रूप से प्रोग्रामिंग xkb है) बस अपनी सेटिंग्स को ट्विक करने की तुलना में (जो सुपरसियर में माहिर हैं)। – viraptor

उत्तर

11
प्रत्येक कीकोड परिभाषा आप आठ keysyms अप करने के लिए हो सकता है के लिए

। ये चार समूहों में जोड़ीदार ढंग से संगठित होते हैं। वहाँ keysyms ISO_Next_Group, ISO_Prev_Group, ISO_First_Group के एक परिवार है, और ISO_Last_Group है कि, जब दबाया, चक्र keysym समूहों के बीच कुंजी हड़ताली द्वारा keysym उत्पादन। ये चाबियाँ हैं कि आप एकाधिक लेआउट कैसे प्राप्त करते हैं।

उदाहरण के लिए, ISO_Next_Group संभालने किसी कीकोड करने के लिए बाध्य किया गया है और सौंपा एक आपरिवर्तक के लिए है, तो इस परिभाषा के लिए:

keycode 53 = x X Greek_xi Greek_XI multiply U2297 U24E7 U24CD

बाहर "x" प्रकार पर लेबल "एक्स" के साथ अपने कुंजीपटल कुंजी दबाने । ISO_Next_Group कुंजी दबाकर, मुझे "ξ" मिलता है। इसे फिर से दबाकर, मुझे "×" मिलता है। इसे फिर से दबाकर, "ⓧ"। आखिरकार, इसे चौथे बार दबाकर चीज़ें सामान्य हो जाती हैं।


होने में कई दिन खर्च करते हैं (क्योंकि Xkb¹ भयानक प्रलेखन है, अंत में एक ठीक गाइड here पाया जाता है), तो आप इस तरह प्रविष्टियों के साथ एक प्रतीक परिभाषा फ़ाइल बना सकते हैं:

 
    key <SPCE> { 
// Level I  II  III IV 
     [ space, space, U2395, U2592 ], // Group 1 
     [ U2423, emspace, U2420, hairspace ] // Group 2 
    }; 

    key <RALT> { 
     [ Mode_switch, Mode_switch ] 
    }; 

    key <RCTL> { 
     [ ISO_Level3_Shift, ISO_Level3_Shift ] 
    }; 

कोष्ठक एक भी जोड़ देना समूह। आम तौर पर, पहला समूह सक्रिय है। समूह अस्थायी रूप से ISO_Group_Shift, उर्फ ​​Mode_switch साथ एक के बाद वृद्धि की जा सकती है। एक समूह के भीतर, उत्सर्जित प्रतीकों को बढ़ते स्तरों में परिभाषित किया जाता है। स्तर मैं एक नंगे कीप्रेस के साथ है। शिफ्ट एक को वर्तमान स्तर पर जोड़ता है। ISO_Level3_Shift III के स्तर निर्धारित करता है।

उपरोक्त उदाहरण के लिए स्पेस बार करने के लिए सात प्रतीकों के साथ साथ विभिन्न पारी चाबियाँ ऐसी है कि नक्शे:

अंतरिक्ष ⟨⟩ U + 0020 अंतरिक्ष
Shift + अंतरिक्ष ⟨⟩ U + 0020 अंतरिक्ष
आर Alt + अंतरिक्ष ⟨␣⟩ U + 2423 खुले बॉक्स
आर Alt + Shift + अंतरिक्ष ⟨⟩ U + 2003 एम स्पेस
आर सीटीएल + अंतरिक्ष ⟨⎕⟩ U + 2395 एपीएल कार्यात्मक प्रतीक ट्रैक्टर
आर सीटीएल + + अंतरिक्ष ⟨▒⟩ U + 2592 मध्यम छाया
आर Alt + R Shift। सीटीएल। + अंतरिक्ष ⟨␠⟩ अंतरिक्ष
आर Alt + R के लिए U + 2420 प्रतीक। सीटीएल।+ Shift + अंतरिक्ष ⟨⟩ U + 200A हेयर रिक्ति

वहाँ भी एक प्रमुख ISO_Level5_Shift स्तर वी तो तुम एक स्तर के लिए कम से कम छह प्रतीकों हो सकता है के लिए है। मोड शिफ्ट कुंजी के साथ इसका तात्पर्य है कि आप अपने कीबोर्ड को लगभग 1,200 विशिष्ट प्रतीकों को टाइप करने के लिए कॉन्फ़िगर कर सकते हैं, लेकिन उस बिंदु पर इतने सारे संशोधक को दबाकर कुछ चाबियाँ मर जाएंगी।

पीएस सभी नामित प्रतीकों के नाम /usr/include/X11/keysymdef.h में संग्रहीत हैं।


¹ बाहर कर देता है कि xmodmap (1) गाड़ी और पदावनत है।

+0

बस सोच रहा है - क्या इस तरह से कुछ महत्वपूर्ण संशोधक बनाने का कोई तरीका है? ताकि यह रिलीज पर ISO_Next_Group दबाए और ISO_Prev_Group पर हो? – viraptor

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