यदि आप सुपर + x, Super + c, Super + v जैसे सिक्वेंस के कुछ सिक्वेंस को Ctrl + x, Ctrl + c, Ctrl + v, जैसे उदाहरण के लिए बाँधना चाहते हैं, ताकि ये (जैसा कि ओपी वांछित हो) ये विशेष रूप से सुपर-कुंजी क्रम आपके सिस्टम पर सुपर कुंजी के किसी भी अन्य उपयोग को प्रभावित किए बिना कट और पेस्ट करने के लिए मैप करेगा, यह सिर्फ एक्सकेबी एक्सटेंशन का उपयोग करके संभव है। नीचे दी गई प्रक्रिया चरणों को रेखांकित करती है और दो अलग-अलग शुरुआती कीबोर्ड सेटअपों के लिए विवरण के दो अलग-अलग उदाहरण देती है; उम्मीद है कि आपके सिस्टम के अनुकूल होने के लिए पर्याप्त जानकारी प्रदान करेगा। यह मानता है कि आप अपने सिस्टम पर फ़ाइलें बनाने और संपादित करने में सहज हैं, जैसे सिस्टम स्थानों में शामिल हैं /usr/share/X11/xkb
।
तय करें कि आप अपने XKB कॉन्फ़िगरेशन ट्री को कहाँ निवास करना चाहते हैं। पहले सिस्टम को खोजें। यह आम तौर पर / usr / share / X11 / xkb में होता है, और मुझे यह पता नहीं है कि अगर यह नहीं है तो इसे कैसे प्राप्त किया जाए; आप बस "xkb" नाम की निर्देशिका के लिए अपना सिस्टम खोज सकते हैं। किसी भी तरह, एक बार जब आप इसे पा लेते हैं, तो आप या तो सिस्टम को एक जगह संशोधित कर सकते हैं, या आप अपनी पसंद की किसी भी निर्देशिका का उपयोग कर सकते हैं। सिस्टम निर्देशिका का उपयोग करने का लाभ यह है कि आप बहुत आसानी से अपने परिवर्तनों को लागू कर सकते हैं, लेकिन दोष यह है कि भविष्य के सिस्टम अपडेट आपके परिवर्तनों को अधिलेखित कर सकते हैं (आपको चेतावनी दी गई है)। किसी भी स्थिति में, सभी फाइलनामों का उल्लेख इस निर्देशिका के सापेक्ष है, जिसे मैं $ XKBLOCAL $ के रूप में आवश्यकता होने पर संदर्भित करूंगा, और सभी आदेश मान लेते हैं कि यह आपकी वर्तमान निर्देशिका है।
वर्तमान x, c, v कुंजी की XKB "टाइप" कुंजी का निर्धारण करें। ऐसा करने का सबसे आसान तरीका कमांड के माध्यम से है xkbcomp -a $DISPLAY - | grep -C 6 c,
(ध्यान दें कि अल्पविराम को जानबूझकर पैटर्न में शामिल किया गया है)। मेरे पहले उदाहरण के सेटअप में, यह उत्पादन करता है:
key <AB02> {
type= "ALPHABETIC",
symbols[Group1]= [ x, X ]
};
key <AB03> {
type= "ALPHABETIC",
symbols[Group1]= [ c, C ]
};
key <AB04> {
type= "ALPHABETIC",
symbols[Group1]= [ v, V ]
};
key <AB05> {
जबकि मेरे अन्य उदाहरण सेटअप में यह पैदा करता है
key <AB02> {
type= "FOUR_LEVEL",
symbols[Group1]= [ x, X, approxeq, dead_ogonek ]
};
key <AB03> {
type= "FOUR_LEVEL",
symbols[Group1]= [ c, C, ccedilla, Ccedilla ]
};
key <AB04> {
type= "FOUR_LEVEL",
symbols[Group1]= [ v, V, squareroot, U25CA ]
};
key <AB05> {
उतावलापन यह है कि पहले उदाहरण में, संबंधित कुंजी "ALPHABETIC" प्रकार की है जबकि दूसरे उदाहरण में वे "FOUR_LEVEL" प्रकार के हैं। आपके कीबोर्ड सेटअप के आधार पर, आप पा सकते हैं कि वे कुछ अन्य प्रकार के हैं। इस प्रकार, प्रकार को $ TYPE $ के रूप में संदर्भित किया जाएगा, जिसे आपको वास्तविक स्ट्रिंग ALPHABETIC या नीचे दिए गए आदेशों में से बदलना होगा।
$ TYPE $ की परिभाषा खोजें और इसे $ XKBLOCAL $ / प्रकार निर्देशिका में एक नई फ़ाइल में कॉपी करें। यहाँ एक आदेश है कि बस करता है xkbcomp -a $DISPLAY - | grep -z -o 'type "$TYPE$" {[^}]*};' > types/cutpaste
:। फ़ाइल "कटपस्ट" का नाम जो मैंने चुना है, वह मनमाना है, जो भी नाम आपको पसंद है उसका उपयोग करें, लेकिन ध्यान दें कि आपको बाद के चरणों में इस फ़ाइल को लगातार संदर्भित करना होगा। पहले सेटअप में, इस फ़ाइल को सामग्री मिलती है
type "ALPHABETIC" {
modifiers= Shift+Lock;
map[Shift]= Level2;
map[Lock]= Level2;
level_name[Level1]= "Base";
level_name[Level2]= "Caps";
};
और दूसरे उदाहरण में यह सामग्री मिलती है
type "FOUR_LEVEL" {
modifiers= Shift+LevelThree;
map[Shift]= Level2;
map[LevelThree]= Level3;
map[Shift+LevelThree]= Level4;
level_name[Level1]= "Base";
level_name[Level2]= "Shift";
level_name[Level3]= "Alt Base";
level_name[Level4]= "Shift Alt";
};
फ़ाइल प्रकारों / कटस्टेस को दो चीजों को संपादित करें: एक प्रस्तावना और पोस्टमबल जोड़ें जो इसे एक उचित XKB क्लॉज बनाता है, और सुपर के अनुरूप संशोधक द्वारा उत्पादित एक और स्तर जोड़ने के लिए टाइप नाम और प्रकार की परिभाषा को बदल देता है। आपको यह जांचना चाहिए कि आपके सिस्टम में वह संशोधक क्या है, यह संभवतः नीचे के रूप में इस्तेमाल किया गया mod4 है। आवश्यक संशोधनों को दो उदाहरणों के अंतिम संस्करणों से स्पष्ट होना चाहिए जैसे कि / कटपस्ट, अर्थात्:
default partial xkb_types "addsuper" {
type "ALPHABETIC_SUPER" {
modifiers= Shift+Lock+Mod4;
map[Shift]= Level2;
map[Lock]= Level2;
map[Mod4]= Level3;
map[Shift+Mod4]= Level3;
map[Lock+Mod4]= Level3;
level_name[Level1]= "Base";
level_name[Level2]= "Caps";
level_name[Level3]= "With Super";
};
};
तथा
default partial xkb_types "addsuper" {
type "FOUR_LEVEL_SUPER" {
modifiers= Shift+LevelThree+Mod4;
map[Shift]= Level2;
map[LevelThree]= Level3;
map[Shift+LevelThree]= Level4;
map[Mod4]= Level5;
map[Shift+Mod4] = Level5;
map[LevelThree+Mod4] = Level5;
map[Shift+LevelThree+Mod4] = Level5;
level_name[Level1]= "Base";
level_name[Level2]= "Shift";
level_name[Level3]= "Alt Base";
level_name[Level4]= "Shift Alt";
level_name[Level5]= "With Super"';
};
};
मुख्य प्रतीक परिभाषाओं की प्रतिलिपि बनाएँ जो दूसरे चरण में grep द्वारा एक दूसरी नई फ़ाइल प्रतीकों / कटपीस में बनाई गई थीं, और समान प्रस्तावना और पोस्टमबल जोड़ें, और नए प्रकारों का उपयोग करने के लिए परिभाषाओं को संशोधित करें और इच्छित कुंजी को संभालने के लिए परिभाषा में क्रियाओं को जोड़ें। सुपर संस्करणों द्वारा उत्पादित। हमारे दो उदाहरणों में इसके परिणाम हैं:
default partial xkb_symbols "superversions" {
replace key <AB02> {
type[Group1]= "ALPHABETIC_SUPER",
symbols[Group1]= [ x, X, NoSymbol ],
actions[Group1]= [ NoAction(), NoAction(), RedirectKey(key=<LatX>,mods=Control,clearmods=Super)]
};
replace key <AB03> {
type[Group1]= "ALPHABETIC_SUPER",
symbols[Group1]= [ c, C, NoSymbol ],
actions[Group1]= [ NoAction(), NoAction(), RedirectKey(key=<LatC>,mods=Control,clearmods=Super)]
};
replace key <AB04> {
type[Group1]= "ALPHABETIC_SUPER",
symbols[Group1]= [ v, V, NoSymbol ],
actions[Group1]= [ NoAction(), NoAction(), RedirectKey(key=<LatV>,mods=Control,clearmods=Super)]
};
};
तथा
default partial xkb_symbols "superversions" {
replace key <AB02> {
type[Group1]= "FOUR_LEVEL_SUPER",
symbols[Group1]= [x,X,approxeq,dead_ogonek,NoSymbol],
actions[Group1]= [NoAction(),NoAction(),NoAction(),NoAction(),RedirectKey(key=<LatX>,mods=Control,clearmods=Super)]
};
replace key <AB03> {
type[Group1]= "FOUR_LEVEL_SUPER",
symbols[Group1]= [c,C,ccedilla,Ccedilla,NoSymbol],
actions[Group1]= [NoAction(),NoAction(),NoAction(),NoAction(),RedirectKey(key=<LatC>,mods=Control,clearmods=Super)]
};
replace key <AB04> {
type[Group1]= "FOUR_LEVEL_SUPER",
symbols[Group1]= [v,V,squareroot,U25CA,NoSymbol],
actions[Group1]= [NoAction(),NoAction(),NoAction(),NoAction(),RedirectKey(key=<LatV>,mods=Control,clearmods=Super)]
};
};
ध्यान दें कि दूसरे उदाहरण में मैंने कुछ (गैर-महत्वपूर्ण) व्हाट्सएप को निचोड़ा और साथ ही लाइन की लंबाई को थोड़ा नियंत्रण में रखा।
XKB वर्तमान में उपयोग किए जाने वाले नियमों के नाम का पता लगाएं। यह आसान है, यह के परिणाम में दिखाया गया है setxkbmap -query
। मेरे मामले में, यह "एवदेव" था।
$ XKBLOCAL $ / नियमों / evdev के नियमों / evdev (या जो भी आपके नियमों का नाम है) के सिस्टम संस्करण को कॉपी करें और हमारे द्वारा बनाए गए विकल्पों की ओर इशारा करते हुए नियम जोड़ें। आपके पास यहां दो विकल्प हैं: आप सभी एेडदेव या कीबोर्ड मॉडल, लेआउट, वेरिएंट, और विकल्प (ओं) का उल्लेख करने वाले भागों को कॉपी कर सकते हैं, जो आप वास्तव में उपयोग कर रहे हैं। बेशक, यदि आप सिस्टम फ़ाइलों को जगह में संशोधित कर रहे हैं, तो आपको किसी भी कॉपी करने, बस संपादन करने की आवश्यकता नहीं है।
इस मामले में, जो जोड़ा जाता है वह प्रारंभिक कीबोर्ड सेटअप की परवाह किए बिना समान है, इसलिए इसका केवल एक उदाहरण है। आप उस नियम फ़ाइल के अनुभाग को खोजते हैं जो उस खंड के साथ शुरू होती है ! option = symbols
और cutpaste:super = +cutpaste
उस खंड में एक पंक्ति जोड़ देती है , और आप उस नियम फ़ाइल के अनुभाग को भी ढूंढते हैं जो उस खंड के साथ शुरू होती है ! option = types
और साथ cutpaste:super = +cutpaste
ही उस खंड के लिए भी है।
Evdev.lst के सिस्टम संस्करण को कॉपी करें और अपने नए विकल्प के लिए एक पंक्ति जोड़ें। ध्यान दें कि इस फ़ाइल का नाम केवल .lst संलग्न के साथ नियम फ़ाइल के नाम से मेल खाता है। पिछले चरण की तरह, आप या तो पूरी फ़ाइल की प्रतिलिपि बना सकते हैं या मॉडल, लेआउट, संस्करण, और आपके द्वारा उपयोग किए जा रहे विकल्प द्वारा निर्दिष्ट भाग को देख सकते हैं। आपको बस इस फाइल के सेक्शन को ढूंढना है जो इसके साथ शुरू होता है ! option
और इस तरह एक लाइन जोड़ता है: cutpaste:super Add super equivalents of cut and paste operations
उस सेक्शन में।
ठीक है, अब सभी कॉन्फ़िगरेशन फ़ाइलें जगह में हैं। यदि आपने सिस्टम फ़ाइलों को संशोधित किया है, तो अब आप अपने नए विकल्प को लागू कर सकते हैं setxkbmap -option cutpaste:super
। दूसरी ओर, यदि आपने नहीं किया है, तो आपको setxkbmap को यह बताना होगा कि आपकी $ XKBLOCAL $ डायरेक्टरी कहां है। क्या बुरा है, सर्वर को यह नहीं पता है कि वह निर्देशिका कहां है, और या तो setxkbmap है (या शायद नहीं, क्योंकि अंततः सर्वर किसी अन्य मशीन पर चल सकता है) इसे बताएं। तो आपको setxkbmap के आउटपुट को xkbcomp पर पाइप करना होगा, और उस कमांड को भी बताना होगा जहाँ आपकी $ XKBLOCAL डायरेक्टरी है। पूर्ण कमांड लाइन इसलिए है setxkbmap -I$XKBLOCAL$ -option cutpaste:super -print | xkbcomp -I$XKBLOCAL - $DISPLAY
।
उम्मीद है कि यह किसी के लिए मदद / रुचि है, क्योंकि अच्छा निश्चित XKB प्रलेखन / संदर्भ दुर्लभ है। एक बहुत ही उपयोगी संदर्भ था http://madduck.net/docs/extending-xkb/ ।