Ubuntu पर नए कीबोर्ड लेआउट बनाने के लिए क्या कदम आवश्यक हैं?


43

मैं जिस कीबोर्ड को बनाने की कोशिश कर रहा हूं, उसमें बहुत सारे यूनिकोड हैं और इस तरह दिखता है: मैं जिस कीबोर्ड को बनाने की कोशिश कर रहा हूं

निम्नलिखित ट्यूटोरियल के साथ असफल होना:

  • https://
    help। , और यह अजीब रूप से स्वरूपित है)

मैं सोच रहा था कि क्या कोई व्यक्ति कदम से कदम निर्देश के साथ एक बेहतर ट्यूटोरियल प्रदान करने के लिए इतना दयालु होगा?


2
मम, यह मुझे एक डुप्लिकेट की तरह दिखता है । बहुत बुरा आप पहले से ही अपने प्रश्न पर एक इनाम रखा: /।
Glutanimate

@ गुलटेनुमा ओह नी; यह नहीं देखा। मैं अभी भी एक बेहतर जवाब के लिए इनाम होगा।
अकिवा

आप इस लिंक का उपयोग कर सकते हैं। help.ubuntu.com/community/ComposeKey
आनंदू एम दास

संबंधित: askubuntu.com/questions/228050/…
alfC

जवाबों:


69

में Ubuntu 14.04 , कीबोर्ड लेआउट में रखा जाता है

/usr/share/X11/xkb/symbols/


इस निर्देशिका की प्रत्येक फ़ाइल में निम्न प्रकार की प्रविष्टियों की एक श्रृंखला है:

    कुंजी <AC01> {[ए, ए, ऐक्यूट, एक्यूट]};

यह प्रविष्टि निम्नलिखित सम्मेलनों का उपयोग करते हुए कीबोर्ड पर एक कुंजी को कई विशिष्ट वर्णों तक ले जाती है:

  1. < एक C01> पहले अक्षर Aदर्शाता है कि हमने अक्षरांकीय कुंजी ब्लॉक (अन्य विकल्पों में शामिल हैं में देख रहे हैं KP [for keypad]और FK [for Function Key]);

  2. <A C 01> दूसरा अक्षर Cपंक्ति को इंगित करता है, जिसमें नीचे की तरफ से गिनती होती है। (एक मानक यूएस कीबोर्ड में, स्पेस बार पंक्ति में है AAऔर संख्या कुंजियाँ पंक्ति में हैं AE)।

  3. <एसी 01 > संख्या 01बाएं से कुंजी की स्थिति, उनकी गिनती को इंगित करता है और इस तरह के किसी भी विशेष रूप से नामित कुंजी अनदेखी TABया ~(टिल्ड): AC01तीसरी पंक्ति अप में है, बाएं से पहले ओवर कुंजी (अनदेखी Caps Lock, यदि है); एक मानक यूएस कीबोर्ड पर, यह "ए" चिह्नित कुंजी है।

  4. कोष्ठक प्रत्येक कुंजी को निर्दिष्ट वर्णों की सूची को संलग्न करता है। इसमें चार प्रविष्टियाँ शामिल हैं, जिन्हें अल्पविराम द्वारा अलग किया गया है:

    1. a - अनमोदित कुंजी।
    2. - Shiftचरित्र।
    3. á - Alt Grचरित्र। ( एनाक्यूट )
    4. Character - द Shift+ Alt Grचरित्र। ( ऐक्यूट )

एक कस्टम कीबोर्ड मैप बनाना उतना ही आसान है जितना कि आप दिए गए लाइन में उन कैरेक्टर्स को बदलना नहीं चाहते जो आप करते हैं!

उदाहरण के लिए:

एक एंग्लो-सैक्सोनिस्ट के रूप में, मैं टाइप करता हूं áऔर Áबहुत कम बार मैं टाइप करता हूं æऔर Æ

मेरी सूची में एंग्लो-सैक्सन वर्ण जोड़ने के लिए, मैं बस की जगह aacuteऔर Aacuteइकाई के नाम या साथ यूनिकोड कोड अंक के लिए æऔर Æ( "aelig" या U00E6 और "AElig" या U00C6 , क्रमशः):

    कुंजी {[ए, ए, एलीग, एईलिग]};

या

    कुंजी {[a, A, U00E6, U00C6]};

जब मैं अपने कीबोर्ड लेआउट को संशोधित कर रहा होता हूं , तो मैं उसी डायरेक्टरी में एक नए नाम "ओई" के साथ फाइल सेव करता हूं।

evdev.xmlफ़ाइल में एक नया कीबोर्ड लेआउट जोड़ना ।

नए कीबोर्ड लेआउट का उपयोग करने के लिए, हमें X11यह बताने की आवश्यकता है कि यह मौजूद है। Ubuntu में 14.04 फ़ाइल X11में स्थापित कीबोर्ड का ट्रैक रखता है /usr/share/X11/xkb/rules/evdev.xml। फिर इसमें नया लेआउट जोड़ने की सुविधा देता है।

  1. X11/xkb/rules/evdev.xmlएक संपादक में खोलें
  2. <layoutList>अनुभाग के अंत में जाएं (खोजें </layoutList>)। अंतिम </layout>टैग के बाद निम्नलिखित जोड़ें , जहां Xआपके कीबोर्ड लेआउट का फ़ाइल नाम /usr/share/X11/xkb/symbols(मेरे मामले में oe) है; Yएक उपयुक्त संक्षिप्त नाम; और Zएक या एक से अधिक भाषाओं में एक उपयुक्त लंबा नाम और aaaएक कानूनी तीन अक्षर (आईएसओ 639-2) भाषा कोड (जैसे अंग्रेजी के लिए संलग्न ):

    <layout>
     <configItem>
       <name> X </name>
       <shortDescription> Y </shortDescription>
       <description> Z </description>
       <languageList>
          <iso639Id> aaa </iso639Id>
       </languageList>
     </configItem>
     <variantList/>
    </layout>
    

यहाँ यह है, पूर्ण परिचय का पालन करें

अन्य संबंधित लिंक:
http://ubuntuforums.org/showthread.php?t=188761&p=1092145#post1092145 http://www.charvolant.org/~doug/xkb/html/index.html


मैंने इस पोस्ट पर थोड़ा काम किया; आपके द्वारा प्रदान की गई सामग्री बहुत उच्च गुणवत्ता वाली थी, लेकिन उसे अभी भी मेरी राय में काम करने की आवश्यकता है। आपके द्वारा लिंक किए गए ट्यूटोरियल बहुत पुराने और पुराने हैं, और "यदि आप 8.04 का उपयोग कर रहे हैं, तो xy और z करें"। मैं एक पूर्ण ट्यूटोरियल जवाब देखना चाहता हूं (मैं केवल यही चाहता हूं कि मैं इनाम बढ़ा सकूं)
अकिवा

@ अकिवा ने इस जवाब में आपकी मदद नहीं की? आपको समस्या कहां है?
α atsнιη

3
उत्तर ने मदद की; समझाते हुए AC01 वास्तव में अच्छी तरह से लिखा गया था, लेकिन मैं सभी चरणों के साथ एक पूर्ण उत्तर चाहता था। जब आप अन्य ट्यूटोरियल से जुड़े; वे पुराने हैं, और उनमें से तीन हैं। अन्य उपयोगकर्ताओं की खातिर, मैं यहाँ पूर्ण उत्तर देना चाहूँगा। उदाहरण के लिए; पाठ फ़ाइल में कुंजी <ac01> {[a, b, c, d]} से परे अधिक तत्व पाए जाते हैं, और एक XML फ़ाइल भी होती है जिसे संपादित करने की आवश्यकता होती है। इसका परीक्षण कैसे किया जाए, इसका भी सवाल है। जैसा कहा गया है; मुझे इस पर 500 प्रतिनिधि इनाम देना चाहिए था, क्योंकि यह एक अच्छा ट्यूटोरियल बनाने के लिए एक काफी बड़ा काम है।
अक्विवा

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

क्या यह केवल Xorg के लिए काम करता है, या ttys के लिए भी?
नारकोलेसिको

18

नोट : Wayland xkb का उपयोग करता है, लेकिन कई xTools ने ठीक से काम करना बंद कर दिया है (उदाहरण के लिए xdotool)

नोट : यह एक गैर-संपूर्ण ट्यूटोरियल है। यह एक नया आठ स्तरीय लेआउट बनाने और वाक्य रचना को समझने के लिए एक व्यक्ति के लिए सबसे उपयोगी है।

नोट: एक त्वरित और गंदा समाधान प्रदान किया जाता है। इसमें एक स्प्रैडशीट शामिल है जो स्वचालित रूप से आपके द्वारा आवश्यक कोड उत्पन्न करता है।


XKB निर्देशिका को समझना

cd /usr/share/X11/xkb/ && ls
  1. types- एक्टिव मॉडिफायर द्वारा कैसे उत्पादित कीज को बदला जाता है । (बदलाव, नियंत्रण, Alt ~)
    महत्वपूर्ण यदि आप संशोधक कुंजी को अनुकूलित करना चाहते हैं।
  2. geometry- कीबोर्ड ग्राफिक्स खींचने के लिए उपयोग किया जाता है।
    यदि आप कीबोर्ड हार्डवेयर का एक गैर मानक टुकड़ा डिजाइन कर रहे हैं तो महत्वपूर्ण है।
  3. rules- अपने वर्तमान सेटअप के लिए उपयुक्त कॉन्फ़िगरेशन ला रहा है।
    आपको इसे परिभाषित करने की आवश्यकता होगी
  4. keycodes- कीबोर्ड हार्डवेयर के लिए कीकोड का दुभाषिया।
    उदाहरण: मैकिन्टोश कीबोर्ड स्पेसबार को समझते हैं 57। हम इसे हालांकि लिखते हैं<SPCE>
  5. symbols- कौन सा मान किसकोड को सौंपा गया है ।
    यह वह जगह है जहां हम अपने कस्टम लेआउट को परिभाषित करेंगे।
  6. compat- संगतता के लिए लघु । संशोधक
    का आंतरिक व्यवहार (Shift, Control, Alt ...)

कार्यप्रवाह

keycodes > symbols > compat

मैं केवल स्पर्श करता हूं symbols: त्वरित और गंदा समाधान के लिए नीचे देखें ।


सिंबल मैप्स

/symbols/us इस निर्देशिका की कोई भी फ़ाइल समान संरचना का अनुसरण करती है।

partial alphanumeric_keys
xkb_symbols "basic" {
    name[Group1]= "US/ASCII";
    key <TLDE> {        [ quoteleft,    asciitilde      ]       };
    key <AE01> {        [         1,    exclam          ]       };
    modifier_map Shift  { Shift_L, Shift_R };
};

partial - पूरा कीबोर्ड मैप नहीं

alphanumeric_keysकीबोर्ड का अनुभाग मैप किया जा रहा है। एकाधिक का उपयोग किया जा सकता है
नोट: यदि कोई *_keysनिर्दिष्ट नहीं है, तो एक पूर्ण कीबोर्ड मान लिया गया है।

"basic" - प्रतीक मानचित्र का नाम

name[Group1]= "US/ASCII";इस कीबोर्ड समूह को एक विशिष्ट नाम देता है ।

modifier_mapसंशोधक कुंजियों के संपादन के लिए । (ctrl, shift, alt ~)

Shift { Shift_L, Shift_R };आमतौर पर neccessary नहीं है। यह दोनों बदलावों को शिफ्ट संशोधक, उर्फ ​​स्तर 2 में मैप करता है।

key <TLDE> टिल्ड की - आमतौर पर टैब के ऊपर बायीं ओर ऊपर की ओर दाईं ओर होता है

key <AE01> चित्रण - तीन भागों से बना,AE01

  1. A= अल्फ़ान्यूमेरिक कुंजी ब्लॉक।
    KP= कीपैड
    FK= फ़ंक्शन कुंजी

  2. E= कीबोर्ड पर पंक्ति।
    Space Key= Aपंक्ति
    Shift Key= Bपंक्ति
    Caps Lock= Cपंक्ति
    Tab Key= Dपंक्ति

  3. 01= पंक्ति पर कुंजी की स्थिति।
    AE01= 1
    AB02= X
    AC05=G

[+ ]- सी भाषाओं में; स्क्वायर कोष्ठक एक सूची को दर्शाता है, जिसके द्वारा आइटम विभाजित होते हैं ,। सूची की लंबाई स्तरों की मात्रा निर्धारित करती है। उदाहरण के लिए:

key<AE01> { [ Level 1 , Level 2 , Level 3 , Level 4 , Level 5 ] }

आमतौर पर, स्तर निम्न कुंजी के साथ निरूपित करते हैं:

  1. कोई संशोधक कुंजी नहीं
  2. Shift
  3. Alt Gr
  4. Shift + Alt Gr
  5. Custom - स्तर 4 से परे कुछ भी देखने के लिए अनजाने में।

संक्षेप में, यदि आप शिफ्ट + ऊंचाई पर जाने के लिए एक कुंजी को मैप करना चाहते हैं, तो आपकी सूची कम से कम चार आइटम लंबी होनी चाहिए।


चेतावनी - आम त्रुटियां

या तो इन पंक्तियों के कारण एक महत्वपूर्ण त्रुटि होगी, और एक उपयोगी कीबोर्ड के बिना आपको छोड़ देगा:

key<AE01> { [ Backspace ] }
key<AE02> { [ a, b, , C ] }
  • Backspaceहोना चाहिए BackSpace: वर्तनी पर अतिरिक्त सावधानी बरतें।
  • एक खाली प्रविष्टि होनी चाहिए VoidSymbol

सबसे अच्छा सुरक्षा उपाय!

  1. अपनी फ़ाइल का बैकअप लें जिसे आप संपादित कर रहे हैं:

    sudo /bin/cp /usr/share/X11/xkb/symbols/us /usr/share/X11/xkb/symbols/usBACKUP

  2. एक स्क्रिप्ट बनाएं जिसे आप रूट पासवर्ड के बिना चला सकते हैं

कुछ इस तरह:

#!/bin/bash
sudo /bin/cp -rf /usr/share/X11/xkb/symbols/usBACKUP /usr/share/X11/xkb/symbols/us

यदि कुछ भी गलत होता है, तो कोड की उस पंक्ति को चलाने के लिए अपने माउस का उपयोग करें (बैश स्क्रिप्ट में जो आपने sudoers को अनुमति दी है। याद रखें कि chmod +xनिष्पादन योग्य के रूप में चलने की अनुमति दें।)


एक टूटी हुई प्रणाली को पुनर्प्राप्त करने के लिए बैकअप रणनीतियों

  • चेतावनी: कीबोर्ड और ऑन-स्क्रीन कीबोर्ड थोड़ी सी त्रुटि के साथ काम करना बंद कर देगा ।
  • माउस काम करेगा । टाइपिंग वर्णों को हाइलाइट करके, उन्हें मध्य क्लिक का उपयोग करके पेस्ट किया जा सकता है। बैश में, आप returnएक लाइनब्रेक चिपकाकर (एंटर कर सकते हैं )।
  • कीबोर्ड रूट शेल में रिकवरी मोड में काम करेगा । (बैश से पहुँचा)
  • आप फ़ाइलों को ठीक करने के लिए हमेशा एक लाइव वातावरण का उपयोग कर सकते हैं।

त्वरित और गंदा समाधान

  1. यहां जाओ
  2. फ़ाइल> एक प्रतिलिपि बनाएँ
  3. Mapper शीट वह है जहां आप अपने लेआउट को परिभाषित करते हैं।
    • सिंगल कैरेक्टर एंट्रीज़ को प्रोग्राम द्वारा समझे गए कोड में अनुवादित किया जाता है।
      ( !बन जाता है U0021)। यूनिकोड समर्थित!
    • स्ट्रिंग्स का अनुवाद नहीं किया जाता है और जैसा माना जाता है। यह सुनिश्चित करें कि कोई गोलाबारी या मामले में त्रुटियां नहीं हैं!
    • खाली वर्ग स्वचालित रूप से भर जाते हैं VoidSymbol
  4. XKB-Sort शीट में प्रमुख समूह हैं, उदाहरण के लिए:
    key <AE01> { [U0021, U0021, U0021, U0021, U0021, U0021, U0021, U0021] };
    key <AE02> { [U005B, U005B, U005B, U005B, U005B, U005B, U005B, U005B] };
    key <AE03> { [U005D, U005D, U005D, U005D, U005D, U005D, U005D, U005D] };
    key <AE04> { [U0022, U0022, U0022, U0022, U0022, U0022, U0022, U0022] };
    key <AE05> { [U002A, U002A, U002A, U002A, U002A, U002A, U002A, U002A] };
    key <AE06> { [U007B, U007B, U007B, U007B, U007B, U007B, U007B, U007B] };
    key <AE07> { [U007D, U007D, U007D, U007D, U007D, U007D, U007D, U007D] };
    key <AE08> { [U002F, U002F, U002F, U002F, U002F, U002F, U002F, U002F] };
    key <AE09> { [U0027, U0027, U0037, U0027, U0027, U0027, U0027, U0027] };
    key <AE10> { [U0029, U0029, U0038, U0029, U0029, U0029, U0029, U0029] };
    key <AE11> { [U0028, U0028, U0039, U0028, U0028, U0028, U0028, U0028] };
    key <AE12> { [U005C, U005C, U005C, U005C, U005C, U005C, U005C, U005C] };
    
    इसे सभी 8 स्तरों पर बदला जाता है:
    1234567890-= // Physical Keys
    ![]"*{}/')(\ // Changed to these characters
  5. XKBटैब में भी लाइनें हैं। हर दूसरे टैब को अनदेखा किया जा सकता है (इसका कोड)।
  6. sudo vim /usr/share/X11/xkb/symbols/us
  7. एक लेआउट सामग्री बदलें। एक आप का उपयोग अभ्यस्त चुनें। उदाहरण के लिए: मैंने संरचना को बरकरार रखते हुए कोलमैक प्रविष्टि को बदल दिया और चाबियों को बदल दिया।

ब्याज की लाइनें:

key.type[group1]="EIGHT_LEVEL";          // Enables 8 levels
modifier_map Control { <LFSH>, <RTSH> }; // Maps ctrl`s to shift keys.
key  { [Control_R, Control_R, Control_R, Control_R, Control_R, Control_R, Control_R, Control_R] }; 
key  { [Control_L, Control_L, Control_L, Control_L, Control_L, Control_L, Control_L, Control_L] };
include "level3(lalt_switch)" // Hold Left  Alt for Level 3
include "level5(ralt_switch)" // Hold Right Alt for Level 5


आपके उत्तर की शीर्ष पंक्ति कहती है: "(WIP - वोट मत देना।)"। जवाब ऐसा लगता है कि यह मेरे लिए अपेक्षाकृत पूर्ण है - शायद इस नोट को हटा दिया जाना चाहिए?
मैटकेली

1
@MattKelly आह मैं इसे अद्यतन करने के लिए बस के आसपास हो गया। मैंने वास्तव में एक स्प्रेडशीट बनाई जो कि एक मॉक कीबोर्ड लेआउट में रखे गए वर्णों के आधार पर कोड को ऑटोजेनरेट करता है।
अक्विवा

यह एक उपयोगी स्प्रेडशीट की तरह लगता है - क्या यह सार्वजनिक रूप से उपलब्ध है?
मैटकेली

@MattKelly यहाँ एक प्रति है। इसके लिए बहुत सारे cruft की जरूरत होती है, और शायद कुछ हैंडलबार्स जोड़े जाते हैं, लेकिन जैसा कि आप देख सकते हैं कि यह कोड उत्पन्न करता है: docs.google.com/spreadsheets/d/…
Akiva

यह दृष्टिकोण RALT को किसी अन्य बैकस्पेस के रूप में कार्य करने के लिए या डालने की अनुमति नहीं देता है, बैककॉट / टिल्ड के रूप में कार्य करने के लिए इन्सर्ट कुंजी सेट करता है।
क्रेग हिक्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.