स्वैपिंग कुंजियाँ AltGr और Space in Kali - फ़ायरफ़ॉक्स प्रभावित नहीं है

Jan 04 2021

कई Spaceऔर AltGrमहत्वपूर्ण रीमेकिंग विचारों को आज़माने के बाद , परिवर्तन xkbसबसे अधिक आशाजनक लगता है। मैंने संबंधित इन विचारों को पढ़ा और उपयोग किया xkb:
XKB में AC10 के लिए
रिमैप कीज कुंजी? मैं कीबोर्ड कीज को कैसे रिमैप कर सकता हूं?

पहली नज़र से मेरे सुधार पाठ संपादक और टर्मिनल में काम करने लगते हैं ( Spaceप्रतीक AltGrप्रमुख प्रेस पर मुद्रित होता है )। हालाँकि, फ़ायरफ़ॉक्स में यह काम नहीं करता है। अधिक बारीकी से देखते हुए, मैंने देखा है कि सभी तीन अनुप्रयोगों में महत्वपूर्ण संयोजन AltGrभी काम करता है (जैसे कि कोई रीमैपिंग नहीं किया गया था), सिवाय इसके कि टर्मिनल में और पाठ संपादक में संयोजन अतिरिक्त रूप से अंतरिक्ष चरित्र को प्रिंट करता है। जैसे, टर्मिनल में और फायरफॉक्स में संयोजन AltGr+ फ़ाइल मेनू को Fखोलता है और टर्मिनल में एक अंतरिक्ष वर्ण भी मुद्रित होता है।

मेरा Spaceटूट गया है और मैं उपयोग नहीं करता AltGr। मैं बस उनकी कार्यक्षमता को पूरी तरह से स्वैप करना चाहता हूं। मैं क्या खो रहा हूँ? (मैं काली लिनक्स का उपयोग करता हूं।)

यह मैं क्या किया है:
1.खोला /usr/share/X11/xkb/symbols/pc
2.नीचे एक के साथ टिप्पणी की लाइन बदल गया:

 // key <SPCE> {    [    space      ]   };
 key <SPCE> {   [ ISO_Level3_Shift  ]   };

3. इन पंक्तियों को जोड़ा गया:

// Additionally added
key <RALT> {    [    32     ]   };

4.pcफ़ाइल सहेज ली गई।
5.पुनः आरंभ किया गया xkbकैश साफ़ किया गयाrm -rf /var/lib/xkb/*
6.


अतिरिक्त जानकारी (ऊपर सूचीबद्ध परिवर्तन के बाद)।

पूर्ण वर्तमान pcफ़ाइल:

default  partial alphanumeric_keys modifier_keys
xkb_symbols "pc105" {

    key <ESC>  {    [ Escape        ]   };

    // The extra key on many European keyboards:
    key <LSGT> {    [ less, greater, bar, brokenbar ] };

    // The following keys are common to all layouts.
    key <BKSL> {    [ backslash,    bar ]   };
    // key <SPCE> { [    space      ]   };
    key <SPCE> {    [ ISO_Level3_Shift  ]   };

    include "srvr_ctrl(fkey2vt)"
    include "pc(editing)"
    include "keypad(x11)"

    key <BKSP> {    [ BackSpace, BackSpace  ]   };

    key  <TAB> {    [ Tab,  ISO_Left_Tab    ]   };
    key <RTRN> {    [ Return        ]   };

    key <CAPS> {    [ Caps_Lock     ]   };
    key <NMLK> {    [ Num_Lock      ]   };

    key <LFSH> {    [ Shift_L       ]   };
    key <LCTL> {    [ Control_L     ]   };
    key <LWIN> {    [ Super_L       ]   };

    key <RTSH> {    [ Shift_R       ]   };
    key <RCTL> {    [ Control_R     ]   };
    key <RWIN> {    [ Super_R       ]   };
    key <MENU> {    [ Menu          ]   };

    // Beginning of modifier mappings.
    modifier_map Shift  { Shift_L, Shift_R };
    modifier_map Lock   { Caps_Lock };
    modifier_map Control{ Control_L, Control_R };
    modifier_map Mod2   { Num_Lock };
    modifier_map Mod4   { Super_L, Super_R };

    // Fake keys for virtual<->real modifiers mapping:
    key <LVL3> {    [ ISO_Level3_Shift  ]   };
    key <MDSW> {    [ Mode_switch       ]   };
    modifier_map Mod5   { <LVL3>, <MDSW> };

    key <ALT>  {    [ NoSymbol, Alt_L   ]   };
    include "altwin(meta_alt)"

    key <META> {    [ NoSymbol, Meta_L  ]   };
    modifier_map Mod1   { <META> };

    key <SUPR> {    [ NoSymbol, Super_L ]   };
    modifier_map Mod4   { <SUPR> };

    key <HYPR> {    [ NoSymbol, Hyper_L ]   };
    modifier_map Mod4   { <HYPR> };
    // End of modifier mappings.

    key <OUTP> { [ XF86Display ] };
    key <KITG> { [ XF86KbdLightOnOff ] };
    key <KIDN> { [ XF86KbdBrightnessDown ] };
    key <KIUP> { [ XF86KbdBrightnessUp ] };

    // Additionally added
    key <RALT> {    [    32     ]   };

};

hidden partial alphanumeric_keys
xkb_symbols "editing" {
    key <PRSC> {
    type= "PC_ALT_LEVEL2",
    symbols[Group1]= [ Print, Sys_Req ]
    };
    key <SCLK> {    [  Scroll_Lock      ]   };
    key <PAUS> {
    type= "PC_CONTROL_LEVEL2",
    symbols[Group1]= [ Pause, Break ]
    };
    key  <INS> {    [  Insert       ]   };
    key <HOME> {    [  Home         ]   };
    key <PGUP> {    [  Prior        ]   };
    key <DELE> {    [  Delete       ]   };
    key  <END> {    [  End          ]   };
    key <PGDN> {    [  Next         ]   };

    key   <UP> {    [  Up           ]   };
    key <LEFT> {    [  Left         ]   };
    key <DOWN> {    [  Down         ]   };
    key <RGHT> {    [  Right        ]   };
};

setxkbmap -print:

xkb_keymap {
    xkb_keycodes  { include "evdev+aliases(qwerty)" };
    xkb_types     { include "complete"  };
    xkb_compat    { include "complete"  };
    xkb_symbols   { include "pc+us+inet(evdev)" };
    xkb_geometry  { include "pc(pc105)" };
};

xev( AltGrप्रेस और रिलीज):

KeyPress event, serial 34, synthetic NO, window 0x3400001,
    root 0x6cb, subw 0x0, time 1249191, (168,-8), root:(797,298),
    state 0x0, keycode 108 (keysym 0x20, space), same_screen YES,
    XLookupString gives 1 bytes: (20) " "
    XmbLookupString gives 1 bytes: (20) " "
    XFilterEvent returns: False

KeyRelease event, serial 37, synthetic NO, window 0x3400001,
    root 0x6cb, subw 0x0, time 1249261, (168,-8), root:(797,298),
    state 0x8, keycode 108 (keysym 0x20, space), same_screen YES,
    XLookupString gives 1 bytes: (20) " "
    XFilterEvent returns: False

जैसे ही मेरे कीबोर्ड की Spaceकुंजी टूटी है, मैं इसे नहीं दिखा सकता xev

जवाब

3 Maik93 Jan 08 2021 at 01:35

मैंने वास्तव में इसके साथ भी काम किया है xkeymap, मैं इसे एक अलग उत्तर के रूप में यहां छोड़ता हूं क्योंकि विधि मेरे पिछले समाधान से कड़ाई से भिन्न है।

हो सकता है कि आपने AltGrउपयोग की कुछ घटना को याद किया हो ।

आपके सेटअप की नकल करने की कोशिश करते हुए, मैंने वर्तमान कॉन्फ़िगरेशन फ़ाइल को कमांड के साथ निर्यात किया है xkbcomp $DISPLAY current.xkbऔर इसे सभी ISO_Level3_Shift, LVL3और Mod5घटनाओं को हटाकर संपादित किया है ।

संक्षेप में, मैंने जो हटाया है वह है:

interpret ISO_Level3_Shift+AnyOf(all) {
    virtualModifier= LevelThree;
    useModMapMods=level1;
    action= SetMods(modifiers=LevelThree,clearLocks);
};
interpret ISO_Level3_Shift+AnyOfOrNone(all) {
    action= SetMods(modifiers=LevelThree,clearLocks);
};
key <LVL3> {
    type= "ONE_LEVEL",
    symbols[Group1]= [ ISO_Level3_Shift ]
};
key <RALT> {
    type= "ONE_LEVEL",
    symbols[Group1]= [ ISO_Level3_Shift ]
};
modifier_map Mod5 { <LVL3> };

फिर मैंने डाला:

key <LVL3> {[space]};
key <RALT> {[space]};

इस संपादित कॉन्फ़िगरेशन को इसके साथ लोड करके परीक्षण किया जा सकता है

xkbcomp new_conf.xkb $DISPLAY
1 Maik93 Jan 07 2021 at 16:56

मुझे ऐसा कोई संदर्भ नहीं मिला जो यह साबित करता हो कि आपने जो प्रस्तावित किया है वह फ़ायरफ़ॉक्स पर काम नहीं करना चाहिए, जबकि ऐसा लगता है कि क्रोमियम (और इसलिए क्रोम) xkeymaps पर निर्भर नहीं है: यह एक विकासशील विकल्प है जो क्रोमोस में कार्यक्रम को बेहतर ढंग से एकीकृत करता है। इसलिए कुछ सिस्टम रीमैपिंग का समर्थन नहीं किया जा सकता है।

मेरे लिए काम करने वाला एक फिक्स कर्नेल स्तर पर कीकोड को हटाने के लिए है। इसे प्राप्त करने के लिए, मैंने स्थान और altGr दोनों के लिए स्कैन-कोड (कुंजी का हार्डवेयर आईडी) और कुंजी-कोड (वे जिस में मैप किए गए हैं) एकत्र किए हैं:

# to collect scan-codes
sudo showkey -s
# space press: 0x39
# altGr press: 0xe0 0x38

# to collect key-codes
sudo showkey
# space press: 57
# altGr press: 100

जहाँ तक मुझे समझ में आया, आप altGr को फिर से स्पेस देना चाहते हैं क्योंकि आपका स्पेसबार टूट गया है, इसलिए:

sudo setkeycodes e038 57

चाल चलनी चाहिए।


काली लिनक्स के तहत इसे स्थायी बनाने के लिए, आपको डिफ़ॉल्ट xinit फ़ाइल को संपादित करना होगा, /etc/xdg/xfce4/xinitrcइसे मैथुन करना होगा ~/.xinitrcऔर sudo setkeycodes e038 57इसमें यदि वह कथन सम्मिलित है उससे पहले सम्मिलित करना होगा exec xfce4-session; काली 20.04 डिफॉल्ट फाइल पर, यदि स्टेटमेंट 86 लाइन पर है।

ध्यान दें कि इसके लिए पासवर्ड के बिना sudo को सक्षम करना होगा ), लेकिन जहां तक ​​मैं याद कर सकता हूं, यह पहले से ही काली में डिफ़ॉल्ट विकल्प है।