AltGr को शामिल करने वाला मेरा xmodmap केवल कुछ कुंजियों पर काम क्यों करता है?


12

मैं अपना AltGR + Right_Windows रिमैप करना चाहता हूं लेकिन मैं यह पता नहीं लगा सकता कि कैसे। कोई फर्क नहीं पड़ता कि मैं क्या कोशिश कर रहा हूँ, सही विंडोज़ कुंजी दबाने से नाम कीज़ाइम का उत्सर्जन होता है जब सही ऊँचाई दबाया जाता है या नहीं।

ये xmodmap फ़ाइल की सामग्री है जिसका मैं अभी परीक्षण कर रहा हूं। मेरे कीबोर्ड में, 38 "" ए "के लिए कीकोड है, 48 एरोप्रोफ / डबलक्वे के लिए कीकोड है और 134 सही विंडो की के लिए कीकोड है।

keycode  38 = 1 2 3 4 5 6 7 8
keycode  48 = 1 2 3 4 5 6 7 8
keycode 134 = 1 2 3 4 5 6 7 8

जब मैं Right_Alt + apostrophe दबाता हूं, तो यह 5 का उत्पादन करता है, लेकिन Right_Alt + Right_Alt + Right_Windows 1 देते हैं (दोनों जब राइट ऑल्ट को दबाया जाता है और जब ऐसा नहीं होता है) जो मैं चाहता था नहीं है।

मेरा वर्तमान कीबोर्ड लेआउट है us(alt-intl)और सही ऊँचाई स्पष्ट रूप से AltGr / Iso_Level3_Shift के रूप में कार्य करने के लिए सेट है। xmodmap -pmनिम्नलिखित में से आउटपुट है:

xmodmap:  up to 4 keys per modifier, (keycodes in parentheses):

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

कोई विचार नहीं कि वास्तव में क्या चल रहा है, लेकिन अगर आपने ऐसा पहले से नहीं किया है, तो आप यह देखना चाहते xevहैं कि हार्डवेयर और Xwindows स्तर तक के विभिन्न संयोजनों को चलाने के लिए प्रेस करना चाहिए या नहीं ।
जो

मैं एक ही मुद्दे का सामना कर रहा हूँ। मैं चेक और अंग्रेजी डबल कोट्स (/ / "/") को प्रिंट करने के लिए कॉमा और डॉट को भी संशोधित करना चाहता था जिसे मुझे कंपोज़ कुंजी का उपयोग करके लिखना होगा। मैं us(cz_sk_de)कीबोर्ड लेआउट और xmodmap का उपयोग कर रहा हूं ।
पावेल Paमरदा ०

तो अब क्या? जब यह एक बहुत अच्छी तरह से इस मुद्दे का वर्णन करता है एक नया सवाल शुरू करने के लिए और न ही एक नया सवाल शुरू करने के लिए व्यावहारिक नहीं है। यह Xorg में एक बग जैसा दिखता है, लेकिन मुझे कोई संदर्भ नहीं मिला है। स्वचालित जवाब दिए जाने के बावजूद मौजूदा उत्तर स्पष्ट रूप से गलत है।
पावेल Paमेरदा

मैंने काम करना छोड़ दिया और विभिन्न कीबाइंड का उपयोग किया जो मुझे पता है कि काम: / मैं सहमत हूं कि यह बग की तरह दिखता है, लेकिन मुझे नहीं पता कि इसकी प्रणाली
किससे

मुझे यहाँ कुछ जानकारी मिली ... blog.azundris.com/archives/193-X-treme-pain-XKB-vs-XModMap.html
Pavel erimerda

जवाबों:


7

व्यक्तिगत कुंजी मैपिंग को कॉन्फ़िगर करने के लिए xmodmap का उपयोग करना

यह मेरे अपने शोध के परिणामों को लिखने का समय है।

मैंने सोचा था कि मुझे xmodmap में कुछ याद आया होगा और यह सिर्फ बहुत अच्छी तरह से प्रलेखित नहीं है और लोग भ्रमित हैं। लेकिन यह पता चला है कि XKB और xmodmap के बारे में X.Org डिजाइन सिर्फ बेवकूफ है।

महाकाव्य असफल: xmodmap

आप मौजूदा मैपिंग को फिर से परिभाषित करने के लिए xmodmap का उपयोग कर सकते हैं जब तक कि उन मैपिंग वास्तव में आपके मूल कीबोर्ड लेआउट में मौजूद हों। प्रश्न में वर्णित मामले में आप AltGr का उपयोग करने के लिए किसी भी कुंजी के व्यवहार का विस्तार नहीं कर सकते हैं। आप केवल की -कोड के लिए AltGr की-जिम बदल सकते हैं जो पहले से AltGr का उपयोग कर रहे हैं।

इसे भी देखें: http://blog.azundris.com/archives/193-X-treme-pain-XKB-vs-XModMap.html

वर्कअराउंड: Mode_switch

इस वर्कअराउंड का वर्णन @ Ned64 द्वारा किया गया है। आप पुन: मैप कर सकते हैं AltGrसे ISO_Level3_Shiftकरने के लिए Mode_switch

मैंने सफलतापूर्वक रीमैप करने के लिए निम्न कमांड लाइन का उपयोग किया है AltGr

xmodmap -e 'keycode 108 = Mode_switch'

नुकसान यह है कि यह आपके वर्तमान कीबोर्ड लेआउट को तोड़ देगा लेकिन आप xmodmapपहले से उल्लेख किए गए @ Ned64 का उपयोग करके एक-एक करके सभी मैपिंग को फिर से बना सकते हैं ।

वर्कअराउंड: संशोधित कीबोर्ड लेआउट

मैं us(cz_sk_de)अपने कीबोर्ड लेआउट के रूप में उपयोग कर रहा हूं और मैंने उन कुंजियों के लिए कॉन्फ़िगरेशन जोड़कर इसे संशोधित करने का प्रयास किया जिन्हें मैं विस्तारित करना चाहता था।

key <AB08>  { [ comma, less, doublelowquotemark, leftdoublequotemark ] };
key <AB09>  { [ period, greater, ellipsis, rightdoublequotemark ] };

(अनुभाग xkb_symbols "cz_sk_de"में /usr/share/X11/xkb/symbols/us)

संशोधित संस्करण का उपयोग करने के लिए बस कीबोर्ड लेआउट को रीसेट करें।

setxkbmap 'us(cz_sk_de)'

अब आप (1) टाइप कर सकते हैं चेक और अंग्रेजी उद्धरण चिह्नों और के संयोजन का उपयोग कर दीर्घवृत्त ,, ., Shiftऔर AltGrकुंजी और / या (2) उन का उपयोग कर कुंजी को पुन: मैप xmodmapअब है कि वे परिभाषित कर रहे हैं।

मुख्य नुकसान यह है कि setxkbmapकीबोर्ड लेआउट के लिए मनमाने स्थानों का समर्थन नहीं करता है और इसलिए आपको अपने घर निर्देशिका के बजाय सिस्टम कॉन्फ़िगरेशन को लिखने की आवश्यकता है।

निष्कर्ष

यह X.Org के अतिरंजित और बुरे डिजाइन का एक उदाहरण प्रतीत होता है, जहां एक महत्वपूर्ण कोड को मैप करने और प्रतीक में संशोधक के संयोजन के रूप में ऐसी तुच्छ बात भी एक समस्या बन जाती है। उपकरण किसी भी साइड इफेक्ट के बिना उपयोगकर्ता कॉन्फ़िगरेशन में व्यक्तिगत कुंजी मैपिंग को बदलने के लिए एक उचित तरीका प्रदान नहीं करते हैं।


"आप AltGr का उपयोग करने के लिए किसी भी कुंजी के व्यवहार का विस्तार नहीं कर सकते हैं" - ऐसा लगता है कि यह समस्या सभी के साथ थी! धन्यवाद।
22

5

एक कदम: AltGr को प्रयोग करने योग्य बनाएं

मुझे पता चला कि AltGr- संशोधित कीज़ केवल मेरे सिस्टम पर काम करती हैं अगर मैं भी AltGr-Key को हटाने के लिए Mode_switch, जैसे:

xmodmap -e "keycode 108 = Mode_switch Mode_switch Mode_switch Mode_switch"

यदि आपके पास एक अलग कीबोर्ड है, तो आपको 108अपने कोड के साथ बदलने की आवश्यकता हो सकती है , टाइप करके जांचें

xmodmap -pke | grep Alt_R

फिर उस नंबर का उपयोग करें। (कुंजी सामान्य रूप से Alt_Rमेरे द्वारा ज्ञात प्रणालियों पर कहलाती है।)

वैकल्पिक रूप से, यह तब भी काम कर सकता है जब Alt_R को अभी कुछ और सौंपा नहीं गया है:

xmodmap -e "keysym Alt_R = Mode_switch Mode_switch Mode_switch Mode_switch"

आपका AltGr संशोधक अब आपकी संशोधक सूची में स्थिति 3 (Shift: 4) के साथ काम करेगा।

चरण दो: आवश्यकतानुसार कुंजियाँ असाइन करें

आप अपनी इच्छानुसार कीबोर्ड की किसी भी कुंजी के लिए AltGr-varants असाइन कर सकते हैं। यदि आपके पास अन्य कुंजी हैं, जो अभी वांछित कोड के अनुरूप नहीं हैं, तो आपको अपनी अन्य कुंजियों (जैसे परीक्षण किए गए) की तरह इन्हें फिर से असाइन करने की आवश्यकता है।

चरण तीन: इसे एक स्क्रिप्ट में परिवर्तित करें

अब बस अपनी xmodmapआज्ञा लें और अपने डिफ़ॉल्ट कीबोर्ड में सभी (लेकिन केवल) संशोधनों को एक फ़ाइल में लिखें - जो एक पूर्ण कीमैप लोड करने की तुलना में तेज़ है। प्रत्येक लॉगिन के बाद एक बार इस स्क्रिप्ट को शुरू करें और जब भी कीमैप किसी प्रक्रिया से रीसेट हो जाए।

मैंने सोलारिस, आईआरआईएक्स और लिनक्स के तहत पिछले कुछ वर्षों में इस पर बहुत प्रयोग किए हैं, और मेरी जानकारी में यह AltGr काम करने का एकमात्र समाधान है - और इसने मेरे लिए 20 से अधिक वर्षों तक अच्छा काम किया है।


1
इसके साथ, सही विंडो कुंजी ने "1" के बजाय "3" के रूप में अभिनय करना शुरू कर दिया। हालाँकि, अब सभी मौजूदा ऑलग्रेट मॉडिफायर्स ने काम करना बंद कर दिया (मुझे लगता है कि उन्हें काम करने के लिए "3" के बजाय "5" होना ज़रूरी था?)
hugomg

इस कोशिश के लिए धन्यवाद। कृपया पोस्ट करें xmodmap -pmऔर xmodmap -pke | grep -w SOMECHANGEDKEYइस स्थिति में, एक कुंजी के लिए जो अब काम नहीं करती है।
नेड64

(तब हमें xmodmapआपके आउटपुट के अनुसार नए मॉडिफायर को जोड़ने की आवश्यकता होगी )
नेड64

xmodmap -pke | grep Alt_Rमेरे सिस्टम पर कोई परिणाम नहीं देता है। मेरा सिस्टम Gentoo स्थिर के साथ लेनोवो थिंकपैड X230 है। मैंने भी grep -iकोई फायदा नहीं हुआ।
पावेल Paमेरदा

मैंने इसकी कोशिश की और समस्या यह है कि us(cz_sk_de)मेरे लिए काम करना बंद कर दिया गया है। इसलिए यह जवाब मेरे लिए काम नहीं करता है और कई अन्य लोगों के लिए काम नहीं करेगा।
पावेल Paमरदा

1

जाहिरा तौर पर, xmodmap डिफ़ॉल्ट AltGR को नहीं पढ़ता है जैसा कि इसे होना चाहिए, यह विशिष्ट कीबोर्ड लेआउट तक सीमित हो सकता है, शायद यह सभी गैर-यूएस लेआउट हैं, किसी भी तरह से, वास्तविक समस्या टी हैट है जबकि आप अपने कीबोर्ड लेआउट को बदल सकते हैं, कुछ हो सकता है वास्तव में ऐसा नहीं करना चाहते हैं क्योंकि उन्हें लेआउट में विशेष वर्णों का उपयोग करने की आवश्यकता होती है (जैसे स्कैंडिनेवियाई कीबोर्ड लेआउट, जिसमें ðþæöáííóåů और इतने पर जैसे चरित्र होते हैं) जो कि अन्य लेआउट लेआउट के लिए कॉन्फ़िगर करने के लिए एक दर्द होगा।

तुम दौड़ सकते हो

xmodmap -e "keycode 108 = Mode_switch"

AltGR को किसी चीज से रिबंड करने के लिए xmodmap के साथ काम कर सकते हैं, और वास्तव में, keycoad का 3rd असाइनमेंट आउटपुट होगा जब आप AltGR को दबाएंगे, हालांकि यह मूल कीबोर्ड लेआउट को पूरी तरह से तोड़ देगा क्योंकि कोई AltGR कीबाइंडिंग AltGR कुंजी के साथ काम नहीं करेगा।

मुझे दो वर्कअराउंड मिले हैं जो मेरे मौजूदा कीबोर्ड लेआउट को नहीं तोड़ते हैं और स्विचिंग लेआउट को शामिल नहीं करते हैं , एक को किसी अन्य कुंजी में Mode_switch को बांधना है।

इसके लिए आदर्श कुंजी Super_R है जो AltGR के ठीक बगल में है, इसके लिए कीकोड 134 है। हालांकि सभी कीबोर्ड में उनके नहीं हैं और एक लैपटॉप पर मेरे मामले में मेरे पास या तो नहीं है, इसलिए मैंने इसे आखिरी में बांधने का फैसला किया शेष कुंजी जिसका मैं व्यावहारिक रूप से कभी उपयोग नहीं करता, राइट कंट्रोल।

xmodmap -e "keycode 105 = Mode_switch"

मेरे पास एक अमेरिकी भौतिक कीबोर्ड लेआउट है, लेकिन यूरोपीय लेआउट कॉन्फ़िगरेशन, और कम / अधिक / बार कुंजी (जिसे ISO_Backslash के रूप में भी जाना जाता है, हालांकि यह xmodmap द्वारा स्वयं मान्यता प्राप्त नहीं है) आमतौर पर ऐसे कीबोर्ड पर जेड के बगल में गायब है। मैंने उसे मेनू (135) के लिए बाध्य किया लेकिन यह R_Ctrl और Super_R के विकल्प के रूप में काम कर सकता है

यह एक गंदा फिक्स है जो मुझे लगता है।

दूसरे वर्कअराउंड को पता लगाने में थोड़ा अधिक समय लगा। Sxhkd (xbindkeys वैकल्पिक) का उपयोग करना

यदि आप इसे ~ / .config / sxhkd / sxhkdrc में जोड़ते हैं :

~ISO_Level3_Shift
    xdotool key Mode_switch

आपका AltGR सामान्य रूप से कार्य करेगा, लेकिन जब इसे दबाया जाता है, तो Mode_switch टॉगल हो जाता है (थोड़े जैसे कैप्स लॉक, लेकिन Mode_switch के लिए) और इसका उपयोग करने वाले किसी भी xmodmap कुंजियों को AltGR मोड में तब तक लॉक किया जाएगा, जब तक कि आप AltGR को फिर से अनचेक करने के लिए नहीं। यह एक साधारण बात होनी चाहिए कि कुंजी जारी होने पर इसे स्वचालित रूप से अनचेक करने के लिए एक स्क्रिप्ट बनाना चाहिए लेकिन ऐसा करने के मेरे प्रयास काफी कम थे, कम से कम कहने के लिए।

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