जवाबों:
xmodmapअप्रचलित है; तो वास्तव में यह xkbउपकरण के साथ किया जाना चाहिए ।
आप जो स्वैप चाहते हैं, वह डिफ़ॉल्ट wth X11 फाइलों में शामिल नहीं है; इसलिए आपको इसे स्वयं लिखना होगा।
पृष्ठ http://madduck.net/docs/extending-xkb/ ने मुझे इसे समझने और खोजने का एक तरीका दिया।
एक फ़ाइल बनाएं ~/.xkb/keymap/mykbdजहां आप आउटपुट डालते हैं setxkbmap, यह आपकी आधार कीबोर्ड परिभाषा होगी; उदाहरण के लिए:
setxkbmap -print > ~/.xkb/keymap/mykbd
फिर, अपनी कुंजी स्वैपिंग को परिभाषित करने के लिए एक प्रतीक फ़ाइल बनाएं, इसे उदाहरण के लिए रखें ~/.xkb/symbols/myswap
वहाँ, निम्नलिखित पंक्तियाँ डालें:
partial modifier_keys
xkb_symbols "swap_l_shift_ctrl" {
replace key <LCTL> { [ Shift_L ] };
replace key <LFSH> { [ Control_L ] };
};
फिर, ~/.xkb/keymap/mykbdफ़ाइल को संपादित करें , और xkb_symbolsजोड़ने के लिए लाइन बदलें
+myswap(swap_l_shift_ctrl)
अंत में, आप इसे xkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd $DISPLAY( -Iपैरामीटर के लिए "~" का उपयोग नहीं कर सकते हैं )। यह शायद कुछ दुर्लभ कुंजियों के लिए अपरिभाषित प्रतीकों के बारे में बहुत सारी चेतावनियाँ देगा, लेकिन आप उन्हें अनदेखा कर सकते हैं (उदाहरण के लिए, त्रुटि को पुनः निर्देशित करें:) 2> /dev/null।
यदि आप एक सामान्य और अपने उल्टे ctrl / shift एक के बीच आसानी से स्वैप करना चाहते हैं; ~/.xkb/keymap/अतिरिक्त "myswap" विकल्प के बिना बस एक अन्य फ़ाइल के तहत बनाएं , और इसे लोड करें xkbcomp। आप उन्हें लोड करने के लिए दो छोटी स्क्रिप्ट बना सकते हैं।
xkbcomp $DISPLAY some.dumpआईबस को कॉल करने से पहले और बाद में प्रयास करें , और दो डंप का एक अंतर करें (वे पूर्ण कीबोर्ड परिभाषा हैं); आप शायद अंतर देखेंगे।
setxkbmap -option caps:escapeकाम करता है। IBus को स्वैप की गई Esc और Caps_Lock कुंजियों की याद है, लेकिन यह स्वैप की गई Shift और Left Control कुंजियों की अदला-बदली नहीं करता है।
मैं पाब्लो के समाधान का उपयोग LALTकरने के लिए मैपिंग के कुछ मुद्दों में भाग गया , ऐसा प्रतीत होता है कि आपको विकल्प भी निर्धारित करने की आवश्यकता है ।Control_Lmodifier_map
मैंने एक टेम्प्लेट की प्रतिलिपि बनाई /usr/share/X11/xkb/symbols/altwin- इसके लिए देखो xkb_symbols "ctrl_alt_win"- और इसे संशोधित करके निम्नलिखित परिवर्तन निर्धारित किए हैं:
अंतिम ~/.xkb/symbols/myswapफ़ाइल थी:
partial modifier_keys
xkb_symbols "swap" {
key <MENU> { [ Super_L ] };
key <LALT> { [ Control_L, Control_L ] };
key <RALT> { type[Group1] = "TWO_LEVEL",
symbols[Group1] = [ Alt_R, Meta_R ] };
key <LWIN> { [ Alt_L, Meta_L ] };
key <LCTL> { [ Control_L ] };
key <RCTL> { [ Control_R ] };
modifier_map Control { <LALT>, <LCTL>, <RCTL> };
modifier_map Mod1 { <LWIN>, <RALT> };
modifier_map Mod4 { <MENU> };
};
मैंने एक नया शेल खोलने पर किसी भी चेतावनी आउटपुट से बचने के -w0लिए xkbcompकमांड में जोड़ा ।
xkbcomp -w0 -I$HOME/.xkb $HOME/.xkb/keymap/mykbd $DISPLAY
** मैक और लिनक्स के बीच स्विच करना, मैं अपनी मांसपेशियों की मेमोरी के लिए मैक कीबोर्ड को अनुमानित करने के लिए लिनक्स पर दो नियंत्रण कुंजी रखना पसंद करता हूं।