लिनक्स में कंसोल कीमैप कैसे बदलें?


36

मैं एक्सचेंज Escऔर CapsLockकंसोल में (एक्स में नहीं, और उपयोग में xev) चाहूंगा , मैं यह कैसे कर सकता हूं?

मेरा OS उबंटू है।

जवाबों:


60

वर्चुअल कंसोल पर कीबोर्ड लेआउट में हेरफेर करने के उपकरण हैं loadkeys, dumpkeysऔर showkey। उनके मैनपेज़ पढ़ें और अपनी पेचीदगियों के बारे में खुद को सूचित करें।

ध्यान दें कि ये उपकरण केवल एक वर्चुअल कंसोल में काम करते हैं, किसी टर्मिनल एमुलेटर में नहीं जैसे कि गनोम में। अंतर के बारे में जानने के लिए इस प्रश्न और उत्तरों को पढ़ें: https://askubuntu.com/questions/14284/why-is-a-virtual-terminal-virtual-and-what-why-where-is-the-real-terminal

यहाँ एक छोटा गाइड है जो आप चाहते हैं:

  1. अपना वर्तमान कीबोर्ड लेआउट सहेजें:

    $ dumpkeys > backup.kmap
    

    यदि कुछ गलत हो जाता है, तो आप कमांड का उपयोग करके अपने कीमैप को पुनर्स्थापित करने में सक्षम हो सकते हैं:

    $ sudo loadkeys backup.kmap
    

    यदि कीबोर्ड इतना गड़बड़ है कि आप ऐसा नहीं कर सकते हैं, तो प्राचीन कर्नेल जादू को शामिल नहीं करने का आपका एकमात्र विकल्प रिबूट करना है।

  2. जांचें कि कौन-सी कीकोड आपकी चाबियों को सौंपे गए हैं:

    $ showkey
    

    अब ESC कुंजी और CAPSLOCK कुंजी दबाएं। कीकोड स्क्रीन पर दिखना चाहिए। कीकोड पर ध्यान दें। मेरे सिस्टम पर ESC का कीकोड 1 है और CAPSLOCK का कीकोड 58 है। showkeyनिष्क्रियता के 10 सेकंड के बाद समाप्त हो जाएगा (कम से कम यह मेरे ubuntu 10.04 पर है)।

  3. डंके से ESC और CAPSLOCK कुंजी के नाम नोट करें:

    $ dumpkeys | grep 1
    ...
    keycode   1 = Escape
    ...
    $ dumpkeys | grep 58
    ...
    keycode  58 = CtrlL_Lock
    ...
    
  4. डंपकी से कीमैप लाइन पर ध्यान दें:

    $ dumpkeys | head -1
    keymaps 0-127
    
  5. एक कीमैप फ़ाइल बनाएँ जो ESC और CAPSLOCK को स्विच करती है:

    keymaps 0-127
    keycode   1 = CtrlL_Lock
    keycode  58 = Escape
    
  6. कीमैप लोड करें:

    $ sudo loadkeys swap_esc_capslock.kmap
    
  7. परीक्षण: CAPSLOCK कुंजी का परीक्षण स्पष्ट है। बस वे CAPSLOCK कुंजी दबाएं और जांचें कि क्या अन्य कुंजी पूंजीकृत हैं। ESC कुंजी का परीक्षण करने के लिए आप ESC द्वारा पीछा CTRL + V का उपयोग कर सकते हैं। इसे छापना चाहिए ^[। CTRL + V शेल को व्याख्या करने के बजाय शेल को अगली कुंजी शब्दपट्टी बनाता है।

प्रत्येक रिबूट पर इस संशोधन का भार उठाने के लिए, अपनी /etc/rc.localफ़ाइल में निम्न पंक्ति रखें :

/usr/bin/loadkeys /path/to/swap_esc_capslock.kmap

जानकारी विभिन्न पृष्ठों से एकत्र की गई, जिसमें शामिल हैं, लेकिन इन तक सीमित नहीं है:


5
आप sudo setupcon --saverc.local के संपादन के बजाय परिवर्तन को स्थायी बनाने के लिए भी उपयोग कर सकते हैं । यह अनिवार्य रूप सेdumpkeys < /dev/tty1 | gzip > /etc/console-setup/cached.kmap.gz
bu21or है

यह उपयोग करने के लिए सुरक्षित है /usr/bin/loadkeysमें /etc/rc.localके बाद से पथ वातावरण चर इस स्तर पर स्थापित किया जाना इसकी गारंटी नहीं है। और sudoमें की जरूरत नहीं है rc.local
अगस्त कार्लस्ट्रोम

@AugustKarlstrom rc.localसिस्टम बूट्स को हर बार निष्पादित करता है। @ bukzor sudo setupconमें नहीं है rc.local, यह एक बार का सेटअप कमांड है, जो बिना किसी रनअप स्टार्टअप कोड को जोड़े बिना सिस्टम डिफ़ॉल्ट कीमैप को बदल देता है। जोड़ने loadkeys के लिए rc.local, अतिरिक्त कोड और डुप्लिकेट क्या पहले से ही सिस्टम डिफ़ॉल्ट loadkeys द्वारा किया गया था शुरू देती। rc.localविधि वास्तव में कम सुरक्षित हो सकता है, क्योंकि यह कीमैप करने के लिए एक गैर मानक रास्ते पर निर्भर करता है।
21

@RobertL कृपया setupconविधि को विस्तृत करें । यदि आप चाहें तो अपना उत्तर जोड़ें या मेरा संपादन करें।
22

मैं @ bukzor के कथन के बारे में पुष्टि नहीं कर सकता setupcon। ऐसा प्रतीत होता है कि अगस्त ने यह धारणा बना दी है कि ऐसा sudo setupcon --saveहोगा rc.localजिसमें मुझे नहीं लगता कि यह सच है, लेकिन अगर ऐसा होता है, तो आपको इसकी आवश्यकता नहीं sudoहै rc.local। मुझे लगता है कि हमें आपके उत्तर को अपडेट करने से पहले अधिक जानकारी की आवश्यकता है। मुख्य प्रश्न "संशोधित कीमैप को कैसे स्थापित किया जाए ताकि बूट प्रक्रिया के दौरान यह स्वचालित रूप से लोड हो जाए?" मैं वास्तव में नहीं जानता कि कौन सा बेहतर तरीका है, rc.localया कीमैप स्थापित करना, या यहां तक ​​कि अगर कीमैप स्थापित करना काम करेगा। मैं हाल ही में इस पर शोध कर रहा हूं और मैं यहां वापस जांच करूंगा।
रॉबर्ट एनएल

4

'Ctrl: swapcaps' के स्थान पर 'ctrl: nocaps' का उपयोग करें यदि आप सिर्फ दो कैप्सलॉक कुंजी चाहते हैं (किसी अन्य नाम से कैप्सलॉक अभी भी सुपर बेकार है)।

X11: (यह भी देखें: /usr/share/X11/xkb/rules/base.lst)

sudo vim /etc/default/keyboard
    XKBOPTIONS="ctrl:swapcaps"
udevadm trigger --subsystem-match=input --action=change
sudo restart lightdm

पाठ कंसोल: (setupcon से चोरी)

#!/bin/sh
. /etc/default/console-setup 
. /etc/default/keyboard
ckbcomp $acm_option $rules_option -model "$XKBMODEL" \
            "$XKBLAYOUT" "$XKBVARIANT" "$XKBOPTIONS" \
            | gzip -9 2>/dev/null >/etc/console-setup/cached.kmap.gz
loadkeys /etc/console-setup/cached.kmap.gz
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.