CapsLock आवेदन कीमैप के लिए संशोधक कुंजी के रूप में


11

मैं डेवलपर हूं और वर्तमान में मैं वेबसाइट के विकास के लिए प्यूचार्म आईडीई के साथ उबंटू लिनक्स का उपयोग कर रहा हूं। टाइपिंग के प्रदर्शन को बेहतर बनाने के लिए मैं चेंजलॉक को Hyper_L में मानता हूं और xmodmap का उपयोग करके इसे mod3 को असाइन करता हूं। इसके बाद मैं 'i' कुंजी को 'Up' के लिए mod3 मैप करना चाहता हूं। अब तक मैंने क्या किया है:

xmodmap -e "keysym Caps_Lock = Hyper_L"

आउटपुट इस प्रकार है:

shift       Shift_L (0x32),  Shift_R (0x3e)
lock        Hyper_L (0x42)
control     Control_L (0x25),  Control_R (0x69)
mod1        Alt_L (0x40),  Alt_R (0x6c),  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),  Mode_switch (0xcb)

तब मैं mod4 से Hyper_L को हटा देता हूं

xmodmap -e "remove Mod4 = Hyper_L"

बाद में मैंने mod3 को Hyper_L असाइन करने का प्रयास किया

xmodmap -e "add Mod3 = Hyper_L"

हालाँकि मुझे निम्नलिखित के रूप में त्रुटि मिली:

X Error of failed request:  BadValue (integer parameter out of range for operation)
  Major opcode of failed request:  118 (X_SetModifierMapping)
  Value in failed request:  0x17
  Serial number of failed request:  11
  Current serial number in output stream:  11

तो, यहाँ क्या समस्या थी? मैं इसे कैसे काम कर सकता हूं? क्या मेरा दृष्टिकोण सही है? या मुझे कस्टम कुंजियों के लिए mod3 का उपयोग करने के लिए अलग-अलग दृष्टिकोण का उपयोग करना चाहिए?

PS मैं Microsoft प्राकृतिक Ergonomic 7000 कीबोर्ड का उपयोग कर रहा हूं

जवाबों:


20

इंटरनेट पर एक बाज़ीन उत्तर हैं, उनमें से अधिकांश भ्रमित हैं।

कुंजी आपको अपनी हाइपर कुंजी पर 'कीकोड 66' को मैप करने की आवश्यकता है, अन्य कुंजी {1,2,4,5} के (केवल वर्तमान में) से उस कुंजी की मैपिंग को हटा दें, और फिर mod3 सेट करें।

खोलें ~ / .Xmodmap और निम्नलिखित डालें:

! Unmap capslock
clear Lock
keycode 66 = Hyper_L

! Leave mod4 as windows key _only_
remove mod4 = Hyper_L

! Set mod3 to capslock
add mod3 = Hyper_L

इसे चलाओ

xmodmap ~/.Xmodmap

अगर कुछ गलत होता है, तो आप अपने कीबोर्ड को रीसेट कर सकते हैं:

setxkbmap -layout us

कुछ विस्फोट के संभावित कारण हैं कि Hyper_L को कहीं और मैप किया जाता है। यह पता लगाने के लिए कि क्या और क्या हाइपर .0 से जुड़ा है, बिना xmodmap चलाकर इसे ठीक करें। जब आप जानते हैं कि आपको क्या निकालने की आवश्यकता है, तो अपने .Xmodmap फ़ाइल में एक 'BINDING = Hyper_L' निकालें।

जब आप X11 सेशन खोलते हैं तो .Xmodmap फाइल लोड हो जाएगी, अगली बार लॉगिन या रिबूट होने पर आपके पास यह मैपिंग होनी चाहिए।

यह कॉन्फ़िगरेशन मेरे ubuntu 14.04 सेटअप के लिए काम करता है। यदि आपके पास एक अलग * निक्स है और यह काम नहीं करता है, तो कृपया पोस्ट करें कि आपने इसे यहां लाने के लिए क्या किया और मैं इसे उत्तर में शामिल करूंगा।


@antindexer ने आपके लिए काम किया?
हेयमैथ्यू

मैंने बहुत सारे जवाबों की कोशिश की, और यह वह है जिसने मेरे लिए काम किया। कम से कम, यह एक नंगे धातु लिनक्स स्थापित पर किया था। अजीब तरह से, यह QEMU / KVM में विफल रहता है, केवल कैप लॉक कुंजी के वैकल्पिक प्रेस पर काम कर रहा है।
विकर्ण

0

मुझे पता है कि यह प्रश्न काफी पुराना है, लेकिन मुझे अपने समाधान को साझा करने की आवश्यकता है, क्योंकि (निराशा से) हेमंतथ्यू के जवाब ने मेरे लिए काम नहीं किया। मेरे लिए काम करना क्या समाप्त हुआ:

setxkbmap -layout us -option lv3:caps_switch -variant intl

यह कैप्सलॉक को mod3 कुंजी के रूप में सक्षम करेगा, लेआउट को "हम" पर सेट करेगा और वेरिएंट को "इंटल" पर सेट करेगा। यदि आप मछली की तरह एक इंटरैक्टिव शेल का उपयोग करते हैं, तो आप संभावित मापदंडों की पूरी सूची प्राप्त करने के लिए "-layout", "-option" या "-variant" के बाद टैब दबा सकते हैं।

आगे की पृष्ठभूमि: मैंने मानक gnome वातावरण से स्विच करते हुए i3 विंडो मैनेजर पर चलने वाले Ubuntu मशीन पर एक साल पहले xmodmap दृष्टिकोण की कोशिश की। मैंने "us" xkb कीबोर्ड लेआउट को संशोधित किया था, विशेष रूप से मृत चाबियों के साथ अंतरराष्ट्रीय एक - यह जब gnome-desktop-manager का उपयोग करते समय ठीक काम करता है (mod3 कुंजी के रूप में कैप्स-लॉक सेट करने का एक विकल्प है), लेकिन मैं नहीं कर सका इसे xmodmap के साथ काम करने के लिए प्राप्त करें। यह मेरी गलती थी: मैंने सोचा था कि जीडीएम जीयूआई xmodmap का उपयोग करके कैप्स लॉक को mod3 में मैप कर रहा था, लेकिन वास्तव में यह इस X11 विकल्प को सेट कर रहा था। अब जब मैंने आर्क पर स्विच किया तो मुझे यह पता लगाने के लिए मजबूर किया गया।

मैं किसी के साथ खिलवाड़ करने की योजना बनाने की सलाह देता हूं, ताकि लोकल पेज पर, स्लीप और रिवर्ट भाग को जोड़कर स्थानीय पृष्ठ, xmodmap, setxkbmap और परीक्षण लेआउट को पढ़ा जा सके:

setxkbmap ... ; sleep 10; setxkbmap <INSERT DEFAULT SETTINGS>

इसने मुझे अच्छी मात्रा में समय बचाया।

मुझे अभी भी समझ में नहीं आया कि xmodmap अप्रोच कितना कारगर है। आशा है कि यह किसी की मदद करता है।

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