रीमैपिंग कीज़ जो कई स्कैन कोड उत्पन्न करती हैं


33

मेरे पास एक थिंकपैड W540 है। इसके की-बोर्ड पर अंकपैड के ऊपर चार मल्टीमीडिया की हैं। उन कुंजियों में से दो कीकोड उत्पन्न करते हैं (और, जाहिरा तौर पर, स्कैन्कोड) जो कुंजियों के संयोजन के अनुरूप हैं, Win_L+ Lऔर Win_L+ E। दूसरे शब्दों में, उस कुंजी के लिए जो Win_L+ उत्पन्न करता है L, इसे
showkey --scancodesलौटाता है:

0xe0 0x5b 0x26 0xa6 0xe0 0xdb

setkeycodesआदेश या तो एकल बाइट नहीं छोड़ा जाएगा की आवश्यकता है या कोड स्कैन निरूपित करने के लिए दो-बाइट दृश्यों बच गए, और showkeyमुझे जिस तरह से उसकी तुलना में अधिक देता है, तो मैं नहीं काफी सरल के साथ अपने सिस्टम में नि: शुल्क keycodes से एक के लिए है कि कुंजी फिर से मैप कर सकते हैं setkeycodes <scancode> <keycode>

मैं वास्तव में किसी भी संकेत की सराहना करता हूं कि मैं उस कुंजी को किसी और चीज़ के लिए कैसे हटा सकता हूं जो कि मेरे कीबोर्ड पर मौजूद कुंजी संयोजनों में से किसी एक को डुप्लिकेट नहीं करता है।


1
: आप इस पर एक नजर है करने के लिए चाहते हो सकता है शॉर्टकट कुंजी है कि कीबोर्ड लेआउट करने के लिए स्वतंत्र हैं
terdon

1
मुझे लगता है कि यह मुश्किल हो सकता है: कम से कम पुराने थिंकपैड पर, इस तरह की मैपिंग ऑन-बोर्ड कंट्रोलर द्वारा की जाती है, ओएस पर नहीं।
mirabilos

1
मेरे पास एक Microsoft ऑल-इन-वन मीडिया कीबोर्ड है जिसमें एक ही समस्या है, क्या आप एक समाधान खोजने में सक्षम थे?
ओस्लोमाज़

5
मैंने कुछ समय पहले थिंकपैड t61 पर कुछ ऐसा ही किया था, /etc/acpi/events जिसमें कुंजी का उपयोग करके मैपिंग की गई थी, जो कि acpidपैकेज में है और उन फ़ंक्शन कुंजियों को दबाए जाने पर एक क्रिया को परिभाषित कर रहा है।
सीजर

2
क्या आपके पास Win_L सेटअप एक्स-विंडो में एक संशोधक के रूप में है? यह मेरे लिए डिफ़ॉल्ट है।
एमसीआर

जवाबों:


1

आप इसे दो चरणों में कर सकते हैं:

  1. कुंजी संयोजनों को पकड़ने के लिए
  2. विभिन्न कुंजी टाइप करने के लिए अनुकरण करने के लिए।

आप उपयोग कर सकते हैं xchainkeysके लिए 1. और [xdotool][2]के लिए 2. :

साथ नकली नया कुंजी बनाने के लिए xdotool, विकल्प --clearmodifiersकी keyमूल नकली संशोधक प्रेस बेअसर करने के लिए महत्वपूर्ण हो सकता है:

xdotool key --clearmodifiers Shift+a

यह Aएक परीक्षण के रूप में एक पूंजी टाइप करना चाहिए ।

के कॉन्फ़िगरेशन xchainkeysमें ~/.config/xchainkeys/xchainkeys.conf, हम कमांड को एक प्रमुख संयोजन से बांध सकते हैं:

W-l :exec xdotool key --clearmodifiers Shift+a

अब, कुंजी संयोजन Winऔर l( Winबाएं या दाएं समान), साथ ही वह कुंजी जो Win_L + L उत्पन्न करती है, उसे एक पूंजी बनाना चाहिए A

(दोनों भागों के लिए कई अन्य कार्यक्रम उपलब्ध हैं। पहली बार, कोई डेस्कटॉप वातावरण के हॉटकी कॉन्फ़िगरेशन का उपयोग कर सकता है, लेकिन मैं इसे डीई से स्वतंत्र रखना पसंद करता हूं।)


2
इस समाधान के साथ समस्या है, अगर मैं गलत नहीं हूँ, तो एक कार्रवाई को ट्रिगर करने के लिए बस उक्त कुंजी संयोजन का उपयोग करने के समान होगा - यह क्रिया केवल उस कुंजी से शुरू नहीं होगी, कुंजी के वास्तविक संयोजन को दबाने से जो उत्पन्न होता है कोड भी समान परिणाम देंगे। दूसरे शब्दों में, यह "रीमैप कि कुंजी को किसी अन्य चीज़ से संतुष्ट नहीं करता है जो मौजूदा कुंजी संयोजनों में से किसी एक की नकल नहीं करता है"। लेकिन मैं प्रयास की सराहना करता हूं।
चाँदवल्कर

3
हां, यह सच है - मुझे यकीन नहीं था कि आपको उस वाक्य से क्या मतलब है, अब मुझे समझ में आया। लेकिन ऐसा लगता है कि आपकी कुंजी हार्डवेयर में दो प्रमुख कोड का उत्पादन करती है (जो कि कीबोर्ड फर्मवेयर में है) - इसलिए मुझे कोई युद्ध नहीं दिखता है, सिवाय इसके कि आप आर्टिफिशियल कुंजी दबाएं "संशोधक नीचे", "अन्य कुंजी", जैसे समय का पता लगाते हैं। "संशोधक"। हम्म ... शायद टांका लगाने से संबंधित एक उपाय अधिक सरल है;)
वोल्कर सेगेल

1
@moonwalker क्या आप अन्य कुंजी के बजाय Win_L को रीमैप करने का प्रयास कर सकते हैं, और जांचें कि क्या यह दूसरे के संशोधक को भी रद्द करता है?
वोल्कर सेगेल

1
उम, क्या मैं विन + आर, विन + ब्रेक, विन + एल, विन + आदि जैसे संयोजनों को नहीं गंवाऊंगा। उस स्तिथि में?
चांदवल्कर

1
नहीं, मुझे ऐसा नहीं लगता। विन-एल है, Win-Shift-lलेकिन आप एक कमांड के लिए मुख्य संयोजनों की श्रृंखला को भी मैप कर सकते हैं। जैसे Win-aऔर उसके बाद b। के साथ Win-a, bसामान्य व्यवहार करता है। xchainkeysमुझे लगता है कि अब तक का सबसे उपयोगी फीचर और बहुत ही अनोखा है।
वोल्कर सिएगल

-2

यह मैंने अपने थिंकपैड योग पर किया है ताकि सही कुंजी को बैकस्लैश / पाइप कुंजी को रिबंड करने के लिए। क्योंकि हर लिनक्स वर्चुअल मशीन में किसी कारण से यह बैकस्लैश \ पाइप (\ |) कुंजी की तुलना में कम (<) कुंजी के रूप में व्याख्या करता है।

पहले कमांड निष्पादित करें: xev

जिस कुंजी को आप रिवाइंड करना चाहते हैं उसके लिए कीकोड प्राप्त करने के लिए वांछित कुंजी दबाएं:

xev कीप्रेस ईवेंट आउटपुट

इस उदाहरण में कीकोड 94 है और कार्रवाई "कम" है, लेकिन हम चाहते हैं कि इसमें बैकस्लैश और बार उर्फ ​​"पाइप" की कार्रवाई हो।

बैककोड और बार कुंजी उर्फ ​​"पाइप" के लिए कीकोड 94 को रिमैप करें:

xmodmap -e 'keycode 94 = backslash bar'

अब इसे लगातार बनाए रखने दें:

xmodmap -pke | egrep "backslash|bar" | grep 94 > ~/.Xmodmap`

फ़ाइल में निम्न लौटाता है ~/.Xmodmap:

keycode  94 = backslash bar backslash bar

फिर आपको इसे लगातार बनाकर समाप्त करने के लिए निम्न फ़ाइल बनानी होगी:

echo "xmodmap .Xmodmap" > ~/.xinitrc

1
बैकस्लैश / पाइप कुंजी एक एकल स्कैन कोड उत्पन्न करता है, विषय कई स्कैन कोड उत्पन्न करने वाली कुंजियों को फिर से भरने के बारे में है।
चांदवॉकर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.