गनोम-की-प्रॉपर्टीज में "5th लेवल चुनने की कुंजी" क्या करती है?


18

gnome-keyboard-propertiesसिस्टम में हार्डवेयर के तहत ("कीबोर्ड") में कीबोर्ड पर 5 वें स्तर तक पहुंचने के लिए उपयोग की जाने वाली कुंजी निर्दिष्ट करने का एक विकल्प है :

उक्त संवाद का स्क्रीनशॉट

लेकिन अगर मैं 5 वां स्तर सेट करता हूं AltGrऔर तीसरा स्तर Right Ctrlऔर अगर मैं कुंजी 54 को निम्नानुसार सेट करता हूं:

xmodmap -e "keycode 54 = 1 2 3 4 5 6 7 8"

विभिन्न भिन्नताओं को दबाने से मुझे निम्नलिखित परिणाम मिलते हैं:

keycode 54 = 1
keycode 54 + right ctrl = 5
keycode 54 + right ctrl + shift = 6
keycode 54 + shift = 2
keycode 54 + AltGr = 1
keycode 54 + AltGr + shift = 2
  1. तो 5 वें स्तर का संशोधक क्या करता है?

  2. मैं इसे कैसे सेट कर सकता हूं ताकि मुझे एक ही कुंजी ( उदाहरण के लिए Shift, Alt Grऔर Right Ctrlउदाहरण के लिए) से 5 या छह अलग-अलग वर्ण मिल सकें ?

जवाबों:


15

"1। तो 5 वें स्तर का संशोधक क्या करता है? ”

यह पाँचवाँ स्तर चुनता है। दूसरा स्तर संशोधक (सिर्फ नियमित बदलाव) दूसरा स्तर चुनता है, और तीसरा स्तर तीसरा स्तर चुनता है।

कारण यह है कि 5 वें स्तर का संशोधक चौथे स्तर के बजाय पांचवें स्तर को चुनता है (ठीक तीसरे स्तर के संशोधक के बाद) यह है कि इन तीन संशोधकों को अलग-अलग तरीकों से जोड़कर आठ अलग-अलग स्तर का चयन किया जा सकता है (इसमें किसी भी संशोधक का उपयोग नहीं करना शामिल है) जो बिना किसी ऐसे संशोधक के बस एक कुंजी दबा रहा है)। 2 = 3 = 8 के बाद से आठ संयोजन हैं। पहले दो संशोधक के लिए चार संयोजन हैं:

  • कोई संशोधक (स्तर 1)
  • दूसरा स्तर संशोधक, उर्फ़ शिफ्ट (स्तर 2)
  • तीसरा स्तर संशोधक (स्तर 3)
  • 2 + 3 संशोधक (स्तर 4)

तीसरे संशोधक (5 वें स्तर) को जोड़ने से चार और स्तर जुड़ जाते हैं।

"2। मैं इसे कैसे सेट कर सकता हूं ताकि मुझे एक ही कुंजी से 5 या छह अलग-अलग वर्ण मिल सकें (शिफ्ट द्वारा संशोधित, Alt Grऔर Right Ctrlउदाहरण के लिए)? "

सबसे पहले आपको एक लेआउट की आवश्यकता है जो प्रति कुंजी पाँच या अधिक वर्णों का उपयोग करता है। आप एक मौजूदा लेआउट का चयन कर सकते हैं, लेकिन यदि आप अभी आपके द्वारा उपयोग किए जा रहे लेआउट में अधिक स्तर जोड़ना चाहते हैं, तो यह इष्टतम नहीं हो सकता है। उदाहरण के लिए, नियो कीबोर्ड लेआउट (, 1) है, लेकिन यह "जर्मन भाषा के लिए अनुकूलित" है, इसलिए अन्य अंग्रेजी बोलने वालों के लिए यह बहुत अच्छा नहीं है।

फिर भी, यह निर्देश हो सकता है कि नियो ने लेवल 5 संशोधक के लिए किन कुंजियों को चुना है।

नव लेआउट

नियो जाहिरा तौर पर "Mod4" के लिए स्तर 5 संशोधक कहता है। तो जैसा कि आप देख सकते हैं कि यह बाईं पारी की कुंजी ( LSGT) और दाईं ओर की कुंजी / AltGrकुंजी के दाईं ओर कुंजी का उपयोग करता है। यह एक यूरोपीय कीबोर्ड (105 कुंजियों) पर है, जिसकी तुलना में अमेरिकी कीबोर्ड (104 कुंजी) में एक संकीर्ण बाएं बदलाव और लंबी और पतली वापसी कुंजी है। एक कीबोर्ड लेआउट के लिए, जो कि यूएस कीबोर्ड पर आधारित है, किसी को अन्य कुंजियों को चुनना या पसंद करना पड़ सकता है।

एक स्तर 5 संशोधक कुंजी चुनना

सुपर के जवाब में वह एक्समोडमैप का उपयोग करना चुनता है। आजकल Xxodmap पर Setxkbmap जैसे टूल की सिफारिश की जाती है। Xkb लेवल 5 संशोधक चुनने जैसी चीजों के लिए कई पूर्वनिर्धारित विकल्पों के साथ आता है। यदि आप मैन xkeyboard-config से परामर्श करें और खोज करें lv5तो आपको ये विकल्प मिलेंगे:

┌──────────────────────┬───────────────────────────────────────────────────┐
│ Option               │ Description                                       │
├──────────────────────┼───────────────────────────────────────────────────┤
│ lv5:lsgt_switch_lock │ <Less/Greater> chooses 5th level; acts as onetime │
│                      │ lock when pressed together with another 5th level │
│                      │ chooser                                           │
├──────────────────────┼───────────────────────────────────────────────────┤
│ lv5:ralt_switch_lock │ Right Alt chooses 5th level; acts as onetime lock │
│                      │ when pressed together with another 5th level      │
│                      │ chooser                                           │
├──────────────────────┼───────────────────────────────────────────────────┤
│ lv5:lwin_switch_lock │ Left Win chooses 5th level; acts as onetime lock  │
│                      │ when pressed together with another 5th level      │
│                      │ chooser                                           │
├──────────────────────┼───────────────────────────────────────────────────┤
│ lv5:rwin_switch_lock │ Right Win chooses 5th level; acts as onetime lock │
│                      │ when pressed together with another 5th level      │
│                      │ chooser                                           │
└──────────────────────┴───────────────────────────────────────────────────┘

तो जो विकल्प प्रलेखित किए गए हैं वे हैं LSGTकुंजी, दाईं ओर की कुंजी, दाईं ओर की कुंजी और बाईं ओर की विंडोज कुंजी। जैसा कि हमने देखा, नियो पहले दो विकल्पों का उपयोग करता है।

कहो कि आप lv5:ralt_switch_lockकुछ लेआउट के साथ विकल्प का उपयोग करना चाहते हैं । यह कमांड usइस स्तर 5 संशोधक कुंजी के साथ लेआउट सेट करता है :

setxkbmap -option "lv5:ralt_switch_lock" us

तो किसी भी विकल्प के लिए जो दस्तावेज़ में हैं man xkeyboard-config, उस का उपयोग तर्क के रूप में करें -optionजब Setxkbmap का उपयोग करें।

यदि ये विकल्प पर्याप्त नहीं हैं और आप स्तर 5 संशोधक होने के लिए किसी अन्य कुंजी को परिभाषित करना चाहते हैं, तो इन विकल्पों के लिए घोषणाओं को देखना शिक्षाप्रद है। वे में लग रहे हैं /usr/share/X11/xkb/symbols/level5। इस lv5:ralt_switch_lockतरह दिखता है घोषणा :

partial modifier_keys
xkb_symbols "ralt_switch_lock" {
  include "level5(lock)"
  key <RALT> {
    type[Group1] = "EIGHT_LEVEL",
    symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift,
                        ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ]
  };
};

यह symbols[Group1]घोषणा करता है कि कुंजी के प्रत्येक स्तर को किस कुंजी या वर्ण का उत्पादन करना चाहिए। यह सभी आठ संभावित स्तरों का उपयोग करता है क्योंकि यह स्तर 5 संशोधक को लॉक करना चाहिए जब एक और स्तर 5 शिफ्ट कुंजी के साथ दबाया जाता है। इसलिए ISO_Level5_Lockइन स्तरों के सभी स्तर 5 शिफ्ट और अन्य शिफ्ट कीज़ के कुछ संयोजन (उन सभी में से कोई नहीं) को पकड़कर इन स्तरों तक पहुँचने के बाद से 5-8 स्तर का उत्सर्जन होता है । यदि आप केवल शिफ्ट व्यवहार चाहते हैं और लॉक-इफ़-टू-प्रेस्ड व्यवहार भी नहीं है, तो आप एक सरल घोषणा (उसी फ़ाइल से) कर सकते हैं:

// The right Alt key (while pressed) chooses the fifth shift level.
partial modifier_keys
xkb_symbols "ralt_switch" {
  key <RALT> {
    type[Group1]="ONE_LEVEL",
    symbols[Group1] = [ ISO_Level5_Shift ]
  };
  include "level5(modifier_mapping)"
};

एक लेआउट में अतिरिक्त स्तर जोड़ना

Xkb लेआउट बहुत मॉड्यूलर हैं। आप मौजूदा लेआउट शामिल कर सकते हैं और उन्हें बदल सकते हैं। इसलिए हम मौजूदा लेआउट को 5 से कम स्तरों के साथ चुन सकते हैं और इसमें कुछ स्तर जोड़ सकते हैं।

आप अपने लेआउट के साथ फ़ाइल को कॉपी करके /usr/share/X11/xkb/symbols/या जहाँ भी यह है कि आपके Xkb टूल लेआउट के लिए देख कर नए लेआउट बना सकते हैं । लेकिन इसके लिए सुडो विशेषाधिकार की आवश्यकता होती है, इसलिए यह सबसे अच्छा समाधान नहीं है। वैकल्पिक रूप से आप की निर्देशिका संरचना की प्रतिलिपि बना सकते हैं xkb/ और अपने लेआउट को उपयुक्त निर्देशिका में रख सकते हैं xkb/, अर्थात् symbols/। तो कहते हैं कि आपने एक फ़ाइल बनाई है xkb-tree/symbols/my-layouts। इस फ़ाइल में परिभाषित लेआउट का उपयोग करने के लिए, आप आउटपुट के -print विकल्प का उपयोग कर सकते हैं setxkbmapऔर फिर आउटपुट को पाइप कर सकते हैं xkbcomp। यह आवरण स्क्रिप्ट इनपुट के रूप में लेआउट लेती है:

#!/bin/sh

# `-option ""` resets all options.
setxkbmap -option "" -layout "$1" \
    -print |
    xkbcomp -I"<path-to-project>/xkb-tree" - "$DISPLAY"

जहां तक ​​लेआउट वाली फाइल का सवाल है, तो मान लीजिए कि हम "यूएस इंटरनेशनल" लेआउट का विस्तार करना चाहते हैं, जिसमें चार स्तरों का उपयोग किया गया है। सबसे पहले हम लेवल 3 और लेवल 5 शिफ्ट कीज़ को उसी तरह सेट करते हैं जिस तरह से नियो करता है:

partial alphanumeric_keys
xkb_symbols "mine" {
    // US international
    include "us(intl)"
    // Set up level 3 modifiers.
    include "level3(modifier_mapping)"
    include "level3(bksl_switch)"
    include "level3(caps_switch)"
    // Set up level 5 modifiers.
    include "level5(modifier_mapping)"
    include "level5(lsgt_switch)"
    include "level5(ralt_switch)"
};

अब हम कुछ अतिरिक्त वर्ण जोड़ना चाहते हैं। आइए उदाहरण के तौर पर Qwerty लेआउट की पहली चार कुंजियों का उपयोग करें। ये सुझाव दिए गए हैं Qकरने के लिए Rहै, जो के अनुरूप <AD01>करने के लिए <AD04>। पहले हमें कुंजी को आठ स्तरों तक उपयोग करने में सक्षम बनाने की आवश्यकता है:

key.type[Group1] = "EIGHT_LEVEL";

पहले चार स्तरों के लिए, उन्हें फिर से परिभाषित नहीं करने के लिए, हम उन्हें मैप करते हैं NoSymbol। फिर हम दो स्तरों को जोड़ते हैं। स्तर 5 पर हम तीर जोड़ते हैं ←↓↑→() 2)। स्तर 6 पर हम दिशा कुंजियाँ जोड़ते हैं। हमारा लेआउट इस तरह दिखता है:

partial alphanumeric_keys
xkb_symbols "mine" {
    // US international
    include "us(intl)"
    // Set up level 3 modifiers.
    include "level3(modifier_mapping)"
    include "level3(bksl_switch)"
    include "level3(caps_switch)"
    // Set up level 5 modifiers.
    include "level5(modifier_mapping)"
    include "level5(lsgt_switch)"
    include "level5(ralt_switch)"

    // Make the following keys capable of using eight levels.
    key.type[Group1] = "EIGHT_LEVEL";

    key <AD01> { [
        NoSymbol, NoSymbol, NoSymbol, NoSymbol,
        leftarrow, Left
    ] };
    key <AD02> { [
        NoSymbol, NoSymbol, NoSymbol, NoSymbol,
        downarrow, Down
    ] };
    key <AD03> { [
        NoSymbol, NoSymbol, NoSymbol, NoSymbol,
        uparrow, Up
    ] };
    key <AD04> { [
        NoSymbol, NoSymbol, NoSymbol, NoSymbol,
        rightarrow, Right
    ] };

};

इसका उपयोग करने के लिए हम अपने द्वारा बनाई गई आवरण स्क्रिप्ट का उपयोग कर सकते हैं:

./setxkbmap-wrapper "my-layouts(mine)"

† 1: नियो de(neo)Xkb में है; setxkbmap "de(neo)"

† 2: Xkb का उपयोग करने वाले प्रतीकात्मक नामों को खोजने के लिए, नाम वाली फ़ाइल की खोज करें keysymdef.h। यह एक निर्देशिका नाम के तहत होना चाहिए X11/। आप यूनिकोड नामों का भी उपयोग कर सकते हैं, उदाहरण के U2192लिए U + 2192।


1
इस उत्तर की रचना के लिए समय निकालने के लिए धन्यवाद। मैं कुछ समय के लिए तीर कुंजी के रूप में अपनी जेकेएलआई कुंजी का उपयोग करने के लिए एक रास्ता तलाश रहा था, इसलिए यह अविश्वसनीय रूप से काम में आया। कृपया इन अतिरिक्त 50 बिंदुओं का आनंद लें! (मैं कल इनाम देने में सक्षम होना चाहिए।)
Glutanimate

1
ठीक है, धन्यवाद, यह एक महान asnwer है भले ही यह थोड़ा देर से आता है, लेकिन यह वही है जो मैं वापस से देख रहा था (लेकिन अब गनोम वास्तव में संशोधक की स्थापना का समर्थन नहीं करता है - लेकिन जब तक यह कॉन्फ़िगरेशन फ़ाइलों का उपयोग करके काम करता है, सभी ठीक है)।
sup

8

अच्छी तरह से, खुदाई के बाद:

(1) 5 वीं स्तर चुनने की कुंजी कुछ अजीब सामान (कुछ फ्रांसीसी लेआउट के बारे में) करती है जो कि मैं जो करना चाहता था वह प्रासंगिक नहीं है। मूल रूप से यह निर्धारित करता है कि कौन सी कुंजी ISO_Level5_Shift के रूप में कार्य करने वाली है। ISO_Level5_Shift का उपयोग कुछ अस्पष्ट लेआउट में किया जाता है। यह उत्तर उन परिणामों की संख्या पर आधारित है जो Google "ISO_Level5_Shift" और इन लिंक पर खोजते समय देता है ।

(२) एक भौतिक कुंजी से ६ प्रतीकों को प्राप्त करने के लिए इसका उपयोग नहीं किया जा सकता है। इसे प्राप्त करने का एक तरीका फ़ाइल के उपयोग के साथ है .xmodmap को $ HOME निर्देशिका में रखा गया है।

पहले, आज्ञा

xmodmap -pm

क्या keyymbols विभिन्न संशोधक के रूप में कार्य करता है। मेरे सिस्टम पर यह इस प्रकार था:

xmodmap:  up to 4 keys per modifier, (keycodes in parentheses):

shift       Shift_L (0x32),  Shift_R (0x3e)
lock        Caps_Lock (0x9)
control     Control_L (0x25),  Control_R (0x69)
mod1        Alt_L (0x40),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3        
mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce),  Hyper_L (0xcf)
mod5        ISO_Level3_Shift (0x5c)

mod3 को एक कुंजी के साथ 6 प्रतीकों का उपयोग करने के लिए सेट करने की आवश्यकता है। इसे .xmodmap फ़ाइल में रखा जाना चाहिए:

clear mod3
clear mod5
keycode 94 = Mode_switch
add mod3 = Mode_switch
add mod5 = ISO_Level3_Shift

तब xmodmap -pm ने मुझे दिया:

shift       Shift_L (0x32),  Shift_R (0x3e)
lock        Caps_Lock (0x9)
control     Control_L (0x25),  Control_R (0x69)
mod1        Alt_L (0x40),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3        Mode_switch (0x5e),  Mode_switch (0xcb)
mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce),  Hyper_L (0xcf)
mod5        ISO_Level3_Shift (0x5c),  ISO_Level3_Shift (0x6c)

जहां कीकोड 94 वह कुंजी है जिसे मैंने mod3 के रूप में कार्य करने के लिए चुना है। विभिन्न भौतिक कुंजियों के कीकोड को कमांड लाइन टूल xev के साथ पाया जा सकता है (बस इसे चलाएं और विभिन्न कुंजियों को दबाएं, कीकोड्स दिखाए जाएंगे)।

फिर, अगर मैं .xmodmap फ़ाइल में रखता हूं

keycode 54 = 1 2 3 4 5 6

या चलाते हैं

xmodmap -e "keycode 54 = 1 2 3 4 5 6"

मुझे एक कुंजी से छह अलग-अलग प्रतीक मिलते हैं, जिसमें वेग, शिफ्ट और कीकोड 94 का उपयोग होता है (यह मेरे भौतिक लेआउट पर बाईं पारी के बगल में एक बेकार कुंजी है)।

अद्यतन: यदि आपको केवल पांच प्रतीकों की आवश्यकता है, तो इसे इस तरह सेट करना आसान है:

keycode 54 = 1 2 3 3 5 6

यह मेरे साथ कभी-कभी होता है कि मुझे 3 के बजाय 4 मिलता है अन्यथा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.