पुन: असाइन करें Ctrl और Alt कुंजियाँ - xmodmap 'BadValue' त्रुटि


13

मैं अपने कीबोर्ड को रीमैप करने का प्रयास कर रहा हूं ताकि एमएसीएस को उपयोग योग्य बनाया जा सके। मेरा एर्गोनोमिक कीबोर्ड बाईं ओर से एक अलग 4-कुंजी द्वीप मार्ग में अपनी एकल नियंत्रण कुंजी रखता है।

ओएस डेबियन निचोड़ है।

यहां वे पंक्तियां हैं जिन्हें मैं खिलाने का प्रयास कर xmodmapरहा हूं, मैं उन्हें एक फ़ाइल में रखता हूं ~ / .Xmodmap:

स्पष्ट नियंत्रण
स्पष्ट mod1
! Alt कुंजियाँ मेरे कीबोर्ड पर 'विकल्प' से जुड़ी हैं,
! xev का उपयोग उन्हें क्रमशः Alt_L और Alt_R किसमिस भेजने के लिए दिखाता है
Keyym Alt_L = Control_L
कीसम Alt_R = Control_R
! Super_L और Super_R कुंजी विंडोज कीज हैं
Keyym Super_L = Alt_L
Keyymym Super_R = Alt_R
नियंत्रण जोड़ें = Control_L Control_R
mod1 = Alt_L Alt_R जोड़ें

मेरा लक्ष्य मेरे विकल्प (उर्फ Alt) कुंजी को नियंत्रण कुंजी की तरह व्यवहार करना है, और व्यवहार करने के लिए मेरी विंडोज (उर्फ सुपर) कुंजी प्राप्त करना है Alt

यहाँ प्रश्न में कुंजियों के लिए xev द्वारा कीकोड और कीज़ आउटपुट हैं। ध्यान दें, मेरे कीबोर्ड (एक गोल्डटच एर्गोनोमिक कीबोर्ड) में केवल एक नियंत्रण कुंजी है।

कीकोड ३ym (कीज़ाइम ०xffe3, Control_L)
कीकोड 64 (कीसम 0xff99, Alt_L)
कीकोड 133 (कीसमेक्स 0xffeb, Super_L)
कीकोड 134 (कीसम 0xffec, Super_R)
कीकोड १० key (कीज़ाइम ०xffea, Alt_R)

यहां यह है कि रनिंग के दौरान xev क्या प्रदर्शित करता है xmodmap .Xmodmap

मानचित्रण घटना, धारावाहिक 34, सिंथेटिक नं, खिड़की 0x0,
    अनुरोध MappingKeyboard, first_keycode 204, गिनती 1

मानचित्रण घटना, धारावाहिक 34, सिंथेटिक नं, खिड़की 0x0,
    अनुरोध MappingKeyboard, first_keycode 64, गिनती 1

मानचित्रण घटना, धारावाहिक 34, सिंथेटिक नं, खिड़की 0x0,
    अनुरोध MappingKeyboard, first_keycode 108, गिनती 1

मानचित्रण घटना, धारावाहिक 34, सिंथेटिक नं, खिड़की 0x0,
    अनुरोध MappingKeyboard, first_keycode 206, गिनती 1

मानचित्रण घटना, धारावाहिक 34, सिंथेटिक नं, खिड़की 0x0,
    अनुरोध MappingKeyboard, first_keycode 133, गिनती 1

मानचित्रण घटना, धारावाहिक 34, सिंथेटिक नं, खिड़की 0x0,
    अनुरोध MappingKeyboard, first_keycode 134, गिनती 1

और यहां त्रुटि आई xmodmap:

X असफल अनुरोध की त्रुटि: BadValue (ऑपरेशन के लिए सीमा से बाहर पूर्णांक पैरामीटर)
असफल अनुरोध के प्रमुख ओपकोड: 118 (X_SetModifierMapping)
असफल अनुरोध में मूल्य: 0x17
असफल अनुरोध की क्रमिक संख्या: 17
आउटपुट स्ट्रीम में वर्तमान सीरियल नंबर: 17

मैं इसे कैसे हल कर सकता हूं इसके बारे में कोई सुझाव?


किस ऑपरेटिंग सिस्टम और संस्करण पर? किस व्यापक प्रकार का कीबोर्ड (PC / Mac / Sun / ...)? xevएक टर्मिनल में रनिंग की कोशिश करें , फिर xmodmapदूसरे टर्मिनल में। आपको कुछ MappingNotifyश्लोक देखना चाहिए xev, उन्हें अपने प्रश्न में जोड़ें। इसके अलावा, xevविंडो में, शामिल की गई विभिन्न कुंजियों को दबाएं और हमें बताएं कि वे किसकोड और कीज़ाइम से मेल खाते हैं ("कीकोड 37 (keyym 0xffe3, Control_L)" xev आउटपुट का हिस्सा)।
गिल्स एसओ- बुराई को रोकना '

जवाबों:


6

यह पहले से ही डेबियन बग # 564327 , डेबियन बग # 565279 , उबंटू बग # 524774 , और फ्रीडेसटॉप बग 20145 के रूप में सूचित किया गया है । FreeDesktop बग चर्चा से जुड़ा एक स्रोत पैच है। वहाँ उबंटू बग चर्चा में कई वैकल्पिक हल प्रस्तावों, विशेष रूप से कर रहे हैं एक .Xmodmapवैकल्पिक हल


7

गाइल्स द्वारा जुड़े वर्कअराउंड को देखते हुए, यह मेरे लिए काम कर रहा है:

clear Mod1
clear Mod4

keycode 204 = NoSymbol NoSymbol NoSymbol NoSymbol
keycode 206 = NoSymbol NoSymbol NoSymbol NoSymbol

keycode 64 = Control_L Control_L Control_L Control_L
keycode 133 = Alt_L Alt_L Alt_L Alt_L
keycode 134 = Alt_R Alt_R Alt_R Alt_R
keycode 108 = Control_R Control_R Control_R Control_R

add Control = Control_L Control_R
add Mod1 = Alt_L Alt_R

मेरी विकल्प कुंजियाँ अब नियंत्रण कुंजी और मेरे Windows कुंजी जैसे Alt कुंजियाँ कार्य करती हैं।


3

समस्या तब उत्पन्न होती है जब आप एक संशोधक में एक किसमिस जोड़ने की कोशिश करते हैं जो पहले से ही एक अन्य संशोधक कुंजी में जोड़ा जाता है। यह जानना महत्वपूर्ण है, कि यदि आप एक संशोधक के लिए एक योजक जोड़ते हैं, तो अन्य सभी योजक जो कि सिपाही के रूप में हैं, उन्हें भी उस संशोधक में जोड़ दिया जाता है।

उदाहरण के लिए:

clear mod5
add mod5    = ISO_Level3_Shift Mode_switch

में परिणाम कर सकते हैं

mod5        backslash (0x33),  Caps_Lock (0x42),  ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)

क्योंकि आपके पास कुछ है

keycode  66 = Caps_Lock NoSymbol ISO_Level3_Shift

अपने ~ / .Xmodmap में (के द्वारा कीपिंग के लिए वर्तमान कीकोड देखें xmodmap -pke)

जब आप कुछ ऐसा करने का प्रयास करते हैं, तो विचाराधीन बैडवैल्यू त्रुटि उत्पन्न करेगा

add lock    = Caps_Lock

क्योंकि Caps_Lock पहले से mod5 संशोधक में जोड़ा जाता है।


2

यह आपकी समस्या का एक और समाधान है, हालांकि यह वास्तव में आपके प्रश्न का उत्तर नहीं देता है। Xorg.conf संपादित करें, अनुभाग "InputDevice" में निम्नलिखित सम्मिलित करें:

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