सवाल मैं कुछ चाबियाँ या डिवाइस कैसे रीमेप करूं?


मैं उबंटू में कुछ कुंजियों को रीमेप करने का एक तरीका खोज रहा हूं।

अर्थात।

मैं बदलना चाहता हूँ PgUp सेवा मेरे होम या PgDown सेवा मेरे समाप्त

क्या अंतर्निहित कमांड या टूल उबंटू / गनोम में पुनः निर्दिष्ट कुंजी मौजूद है?


214
2018-02-05 13:20


मूल


मेरा जवाब चेकआउट करें यहाँ। यह प्रतिलिपि बनाने और समान जवाब पेस्ट करने लायक नहीं है। शायद यह आपकी मदद करेगा। - Rahul Virpara
यूनिट चरणों के लिए CTRL-P / N के लिए यहां कोई भी Emacs- जैसे बाइंडिंग? - Léo Léopold Hertz 준영
कुछ समय से xmodmap वंचित है! एक सिस्टम चौड़ी सेटिंग प्राप्त करने के लिए आपको उपयोग करना होगा xkb। तो भाषा फ़ाइल को संपादित करें /usr/share/X11/xkb/symbols/ वहां अपने बदलाव जोड़ने के लिए। देख askubuntu.com/a/898462/34298 - rubo77


जवाब:


सूचना: 2013 तक, उबंटू और डेरिवेटिव्स अब उपयोग नहीं करते हैं xmodmap, लेकिन इसके बजाय उपयोग करें xkb। अधिक जानकारी के लिए देखें यह जवाब। नीचे दिए गए उत्तर वर्तमान रिलीज के लिए अब प्रासंगिक नहीं हैं।


कुछ कुंजियों को रीपैप करने के लिए आपको दो टूल्स की आवश्यकता है। प्रथम xev (कमांड लाइन उपकरण) और दूसरा xmodmap (कमांड लाइन उपकरण भी)। दोनों को उबंटू में अतिरिक्त स्थापित किए बिना उपलब्ध होना चाहिए।

  1. टर्मिनल विंडो शुरू करें और चलाएं xev। अब यह सक्रिय है और एक कुंजी दबाए रखने के लिए इंतजार कर रहा है। फिर उस कुंजी को दबाएं जिसका व्यवहार आप बदलना चाहते हैं। अर्थात। PgUp

  2. xev दबाए गए कुंजी के बारे में कुछ जानकारी आउटपुट करेगा। तीसरी पंक्ति महत्वपूर्ण है। यह इसी तरह दिखना चाहिए:

    state 0x10, keycode 110 (keysym 0xff55, Prior), same_screen YES,
    

    इस उदाहरण में Prior इस समय कुंजी को असाइन किए गए व्यवहार का नाम है, कुंजी कुंजीकोड कुंजी पहचानने के लिए आंतरिक आईडी है। अब यह एक और कुंजी के साथ करें i.e. PgDown यह आउटपुट दें

    state 0x10, keycode 115 (keysym 0xff56, Next), same_screen YES,
    

    यहां फिर से हमारे लिए दिलचस्प हिस्सा है keycode 115 तथा Next - व्यवहार का नाम।

  3. अब जब आप दो चाबियों का उपयोग स्वैप करना चाहते हैं xmodmap

     xmodmap -e "keycode 110 = Next"
    

    यह क्रिया के लिए आपके कीबोर्ड पर कीकोड 110 के साथ कुंजी बदलता है Next। यह बहुत आसान है।

    ध्यान दें कि यदि आपके द्वारा उपयोग की जाने वाली कुंजी का उपयोग अलग-अलग अर्थ होना चाहिए खिसक जाना कुंजी (उदाहरण के लिए ब्रिटिश कीबोर्ड लेआउट के लिए, खिसक जाना+2 उद्धरण चिह्न देता है) तो आप पहले के बाद द्वितीयक कमांड को सूचीबद्ध कर सकते हैं। उदाहरण के लिए यदि आप सामान्य रूप से बैकस्लैश पर मैप करने के लिए कोड 53 के साथ कुंजी चाहते हैं, लेकिन शिफ्ट के साथ उपयोग किए जाने पर बार प्रतीक पर, आप ऐसा कर सकते हैं:

     xmodmap -e "keycode 53 = backslash bar"
    

अतिरिक्त जानकारी: इन मैपिंग का अनुक्रम है कुंजी, Shift + कुंजी, mode_switch + कुंजी, mode_switch + Shift + कुंजी, AltGr + कुंजी, AltGr + Shift + कुंजी। कॉलम उपयोग को छोड़ने के लिए NoSymbol। इसके अलावा, यहाँ सभी कुंजीपटलों की एक व्यापक सूची है।

नोट: ये परिवर्तन केवल सक्रिय एक्स सत्र के लिए हैं और रीबूट के बाद खो जाएंगे। जब आप स्थायी रूप से परिवर्तनों को सहेजना चाहते हैं तो आपको ऊपर दिए गए आदेशों के बाद निम्न आदेशों को चलाया जाना चाहिए:

xmodmap -pke >~/.Xmodmap

(यह नाम की एक फाइल बनाता है .Xmodmap आपके घर निर्देशिका में (~))

फिर आपको नाम की एक फाइल बनाना होगा .xinitrc आपके घर निर्देशिका में जहां आप कमांड डालते हैं xmodmap .Xmodmap में।

अब आप संशोधित कर सकते हैं .Xmodmap और भाग खड़ा हुआ xmodmap .Xmodmap कंसोल से तुरंत परिवर्तन देखने के लिए। में परिवर्तन .Xmodmap जारी रहेगा।

स्रोत: उबंटू फोर्न्स

बोनस सामान:

यदि आप जिस कुंजी को रीमेप कर रहे हैं उसके पास एक राज्य के आधार पर अलग-अलग व्यवहार है ( जैसे न्यूमेरिक कीबोर्ड में कुंजियां न्यूमॉक पर निर्भर करती हैं) आपको बस करना है xmodmap -pmसंशोधक की सूची प्राप्त करने के लिए और फिर करें:

xmodmap -e "KEYCODE MODIFIER = behaviour behaviour_with_modifier"

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

xmodmap -e "keycode 91 mod2 = KP_Delete period"

mod2, इसलिये xmodmap -pm हमें बताता है कि mod2 है Num_Lock, अन्य नाम कुंजी दबाकर प्राप्त किए जाते हैं xev


233
2017-12-17 18:46



xev पकड़ने में सक्षम नहीं है Fn कुंजी प्रेसिंग - om-nom-nom
मुझे पसंद था कि आपने विकल्प के साथ सिंटैक्स को धुंधला करने के बजाए सबकुछ कैसे समझाया - Programming Noob
चयनित उत्तर उबंटू 12.10 पर मेरे लिए कैप्स-लॉक कुंजी को रीमेप करने के लिए काम नहीं करता था। मैं सिस्टम सेटिंग्स -> कीबोर्ड -> लेआउट सेटिंग्स -> विकल्प पर जाकर ऐसा करने में सक्षम था, जिसमें कुंजी और वैकल्पिक व्यवहार की एक सूची है। एकता और टर्मिनल में बेकार ढंग से काम किया। - Allyl Isocyanate
अजीब, मैंने सबकुछ किया, लेकिन मेरी कीमिंग्स अभी भी पुनरारंभ करने के बाद रीसेट हो गईं। - Costa
मुझे नहीं लगता कि मेरे पास है -event उबंटू 12.04 में ध्वज। यह एक त्रुटि फेंकता है और इसमें "घटना" का उल्लेख नहीं है man xev। - isomorphismes


यदि आप Shift कुंजी को स्थानांतरित करने का प्रयास कर रहे हैं, तो कुछ अतिरिक्त चरण हैं:

 xmodmap -e "keycode 62 = Up" # Shift => Up
 xmodmap -e "keycode 111 = Shift_R" # Up => Shift
 xmodmap -e "add shift = Shift_R" # Make the new Shift key actually do shifting
 xmodmap -e "remove shift = Up" # Prevent the old Shift key from shifting
 xset r 62 # Make the new Up key autorepeat
 xset -r 111 # Prevent the new Shift key from autorepeating

18
2018-02-05 14:04



+1 एक संशोधक के लिए उन सभी का सबसे यूनिक्स-वाई उत्तर (मैंने पहले से ही ऐसा किया था, मेरे आईबुक 2 के साथ वापस, जब मैं एंटर कुंजी को Control_R का कार्य करना चाहता था, लेकिन विवरण भूल गया था)। - rbrito
लेनोवो लैपटॉप पर कीबोर्ड का उपयोग करने वाले उपयोगकर्ताओं के लिए एक महत्वपूर्ण जवाब - Einar Ólafsson


मैंने अभी एक विचार किया है .. मुझे लगता है कि आप "रीमेप" द्वारा पूरी तरह से कुछ अलग कर सकते हैं .. लेकिन मैं अपना जवाब छोड़ दूंगा ... (मुझे नहीं पता कि एक कुंजी को फिर से असाइन कैसे करें एक और व्यवहार करें)

अद्यतन करें: मेरी 'आफ्टरथॉट' की पुष्टि हुई है; (मैंने गलत प्रश्न का उत्तर दिया है:) ... कृपया एनईएस के सामुदायिक विकी उत्तर (ऊपर स्वीकार किए गए) देखें।

इसके दो सामान्य तरीके हैं remap एक कुंजी rebind।

  • स्थानीय रूप से एक विशेष कार्यक्रम के लिए
    (अलग-अलग ऐप्स / विंडोज़ में विभिन्न चीजों के लिए एक कुंजी का उपयोग किया जा सकता है)
  • एक विशिष्ट उपयोगकर्ता के लिए वैश्विक स्तर पर
    (सभी खिड़कियों में एक कुंजी एक ही कार्य है)

'स्थानीय कार्यक्रम के लिए' विधियों के लिए, कभी-कभी ऐप द्वारा प्रदान की जाने वाली कीबाइंडिंग को बदलने का एक तरीका होता है ... उदाहरण के लिए।

Firefox एक addon कहा जाता है keyconfig ... कुछ जानकारी के लिए यह देखें MozillZine पोस्ट 

अधिकांश उबंटू प्रोग्राम जीनोम आधारित हैं और इन जीनोम ऐप्स के किसी भी मेनू आइटम के लिए कीबाइंडिंग को संशोधित करने के लिए एक विशिष्ट उपयोगिता है ... इसे कहा जाता है Editable Menu Accelerator ... यह एक बहुत ही 'स्पर्शपूर्ण' उपकरण है, लेकिन काफी शक्तिशाली है .. आप इसे चलाकर सक्षम कर सकते हैं gconf-editor (टर्मिनल या Alt + F2 के माध्यम से) ... नेविगेट करें desktop-gnome-interface और चयन करें can_change_accels .... फिर आप मेनू आइटम को अपनी पसंद की वर्चुअल चीज़ (प्रति प्रोग्राम / विंडो) में बदल सकते हैं ... मेरा सुझाव है कि आप जितनी जल्दी हो सके उतनी जल्दी इसे अक्षम कर दें ..

अन्यथा आप ग्लोबल हॉटकी सेट अप कर सकते हैं। मैं एक कार्यक्रम का उपयोग करता हूं xbindkeys  Install xbindkeys, और मुख्य मेनू - वरीयताओं के माध्यम से भी एक विकल्प उपलब्ध है Keyboard Shortcuts 

यदि आप xbindkeys का उपयोग करते हैं, तो आपको इसे अपने "स्टार्टअप एप्लिकेशन" (मुख्य मेनू - प्राथमिकताएं) में जोड़ना होगा ... साथ ही (स्टीफानो पलाज्जो द्वारा सुझाए गए अनुसार) मैंने पहले इस पर एक जवाब में xbindkeys का एक और विस्तृत विवरण लिखा है askubuntu पेज


16
2018-01-27 03:04



+1, बहुत अच्छा! एक सुझाव: आपको अपना एकीकृत करना चाहिए एक और सवाल से महान जवाब इस में, शायद xbindkeys के कॉन्फ़िगरेशन प्रारूप को थोड़ा सा समझाएं। - Stefano Palazzo♦
अन्य चाबियों को आवंटित करने के बारे में थोड़ा सा संभाला जा सकता है xdotool, मैन पेज को देखें, मैंने इसे हल करने के लिए उपयोग किया है यह समस्या। - Stefano Palazzo♦
मैंने हाल ही में xm नामक उपकरण के साथ संयोजन में xmodmap नामक टूल के साथ एक और दृष्टिकोण पाया। मुझे नहीं पता कि xmodmap और xbindkeys के बीच अंतर क्या हैं, लेकिन यह मेरे लिए बहुत अच्छा काम करता है। नामित दो पसंद करने के लिए उपकरण के साथ कुछ सलाह? यहां चरण मार्गदर्शिका द्वारा एक बहुत ही उपयोगी कदम है जो xmodmap और xev का वर्णन करता है ubuntuforums.org/showpost.php?p=7675138&postcount=2 - NES
@ एनईएस .. ऐसा प्रतीत होता है कि मैंने गलत बिंदु को संबोधित किया है .. आप वास्तव में ओएस द्वारा एक विशेष कुंजी का अर्थ समझने के तरीके को रीमेप करना चाहते हैं, यानी, एक गैर मानक कुंजीपटल व्याख्या, जबकि मैं एक प्रतिबिंबित कर रहा हूं मानक कीबोर्ड-व्याख्या, और डिफ़ॉल्ट कुंजी-असाइनमेंट को ओवरलोड करना। (मुझे लगता है कि आप बाद में क्या बाएं और दाएं माउस बटन स्वैप करने के समान हैं) .. ठीक है ऐसा लगता है कि मेरा जवाब गलत चीज़ के लिए अच्छा था :) - Peter.O
हाँ, लेकिन कोई समस्या नहीं है। जवाब भी दिलचस्प है। चरण-दर-चरण मार्गदर्शिका मैंने ऊपर दिए गए लिंक को सही तरीके से पोस्ट किया था। तो मैं समाधान के साथ एक छोटा सा जवाब पोस्ट करूंगा कि अन्य उपयोगकर्ताओं के पास एक अच्छी मार्गदर्शिका है। धन्यवाद फ्रेड - NES


यहां बताया गया है कि मैंने मैपिंग को कैसे स्विच करने की कोशिश की दर्ज कुंजी की कुंजी खिसक जाना कुंजी (और इसके विपरीत):

$ uname -a

रिपोर्ट:

Linux box 2.6.32-37-generic #81-Ubuntu SMP Fri Dec 2 20:35:14 UTC 2011 i686 GNU/Linux

$ which xmodmap

रिपोर्ट:

/usr/bin/xmodmap

$ which xev

रिपोर्ट:

/usr/bin/xev

$ xev

(अगली पचास लाइनों या तो अनदेखा करें)

PRESS THE ENTER KEY (notice the third line):
KeyPress event, serial 33, synthetic NO, window 0x5600001,
    root 0x110, subw 0x0, time 263441120, (738,242), root:(771,314),
    state 0x0, keycode 36 (keysym 0xff0d, Return), same_screen YES,
    XLookupString gives 1 bytes: (0d)
    XmbLookupString gives 1 bytes: (0d)
    XFilterEvent returns: False

KeyRelease event, serial 33, synthetic NO, window 0x5600001,
    root 0x110, subw 0x0, time 263441271, (738,242), root:(771,314),
    state 0x0, keycode 36 (keysym 0xff0d, Return), same_screen YES,
    XLookupString gives 1 bytes: (0d)
    XFilterEvent returns: False

PRESS THE SHIFT KEY (notice the third line):
KeyPress event, serial 30, synthetic NO, window 0x5600001,
    root 0x110, subw 0x0, time 263592202, (464,368), root:(497,440),
    state 0x0, keycode 62 (keysym 0xffe2, Shift_R), same_screen YES,
    XLookupString gives 0 bytes:
    XmbLookupString gives 0 bytes:
    XFilterEvent returns: False

KeyRelease event, serial 33, synthetic NO, window 0x5600001,
    root 0x110, subw 0x0, time 263592298, (464,368), root:(497,440),
    state 0x1, keycode 62 (keysym 0xffe2, Shift_R), same_screen YES,
    XLookupString gives 0 bytes:
    XFilterEvent returns: False

प्रत्येक कुंजीपटल की तीसरी पंक्ति क्या महत्वपूर्ण है:

FOR:
state 0x0, keycode 36 (keysym 0xff0d, Return), same_screen YES,
The name "Return" is the name of the behavior of the key pressed.
The number of the key pressed is "36".

state 0x0, keycode 62 (keysym 0xffe2, Shift_R), same_screen YES,
The name "Shift_R" is the name of the behavior of the key pressed.
The number of the key pressed is "62".

मानचित्रण को वापस करें:

$ xmodmap -e "keycode 62 = Return"
$ xmodmap -e "keycode 36 = Shift_R"

परिणाम बचाएं:

$ xmodmap -pke > ~/.Xmodmap
$ vi ~/.xinitrc

जोड़ें

 xmodmap ~/.Xmodmap

$ sudo reboot

मुख्य समस्या यह थी कि उलटा काम नहीं किया। दर्ज कुंजी को मैप किया गया था SHIFT_R कुंजी; लेकिन वो SHIFT_R कुंजी को मैप नहीं किया गया था दर्ज कुंजी। जाओ पता लगाओ।


8
2018-01-20 05:30





एक्स के स्वतंत्र रूप से वैश्विक रीमेप्स करने के लिए, आप इसका उपयोग कर सकते हैं कंसोल-सेटअप (5) बजाय।

मेरे मामले में मैं remap करना चाहता था कैप्स लॉक इसकी कुंजी डी, मेरे बाद से डी-की टूट गई है :)

पहले मैंने इस्तेमाल किया dumpkeys (1) एक मैपिंग के लिए टेम्पलेट प्राप्त करने के लिए, के मामले में डी-की, दिलचस्प बिट कुंजीकोड 32 (मेरे कीबोर्ड पर) के लिए मैपिंग है; ध्यान दें कि grep पैटर्न में दो रिक्त स्थान हैं!

$ sudo dumpkeys | grep "keycode  32" > tempfile
$ cat tempfile
keycode  32 = +d
    shift   keycode  32 = +D
    altgr   keycode  32 = +eth
    shift   altgr   keycode  32 = +ETH
    control keycode  32 = Control_d
    shift   control keycode  32 = Control_d
    altgr   control keycode  32 = Control_d
    shift   altgr   control keycode  32 = Control_d
(121 lines total...)

लागू करने के लिए मानचित्र को बदलने के लिए कैप्स लॉक (मेरे कीबोर्ड पर keycode 58) इसके बजाए

sed 's/32/58/' -i tempfile

अब यह पढ़ता है

keycode  58 = +d
    shift   keycode  58 = +D
    altgr   keycode  58 = +eth
(etc...)

इस रीमेप को डिफ़ॉल्ट मानचित्र में जोड़ने के लिए, इसे केवल रीमेप में शामिल करने की आवश्यकता है जिसमें फ़ाइल शामिल है कंसोल-सेटअप

sudo sh -c 'cat tempfile >> /etc/console-setup/remap.inc'

तथा कंसोल-सेटअप पुन: कॉन्फ़िगर करने की आवश्यकता है (कम प्राथमिकता वाले प्रश्नों को छोड़ना -phigh)

sudo dpkg-reconfigure console-setup -phigh

अब रीमेप पूरा होना चाहिए, और बूट पर स्वचालित रूप से लोड किया जाना चाहिए।


6
2017-07-28 12:15





मैंने एक शॉर्टकट बनाने की कोशिश में एक पूरा दिन बिताया Ctrl+Pageup

मैंने पहले कोशिश की xmodmap लेकिन वह संशोधक घटनाएं उत्पन्न नहीं कर सकता है। तो उदाहरण के लिए उत्पन्न शॉर्टकट बनाना असंभव है Control घटना।

मैंने फिर कोशिश की xbindkeys साथ में xmacro। उस तरह के काम, लेकिन xbindkeys मेरे सिस्टम पर कुछ महत्वपूर्ण संयोजनों को कैप्चर करने में सक्षम नहीं है, जैसे कि Alt + ___

इसलिए मैंने अंततः अपने शॉर्टकट को सेट करने के लिए यूनिटी के अपने कीबोर्ड शॉर्टकट्स -> कस्टम शॉर्टकट का उपयोग किया।

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


3





मेरे लिए सॉफ्टवेयर सेंटर से ऑटोकी ने सबसे अच्छा काम किया। यह नया बाध्यकारी क्लिक नया अंतर्निहित जीयूआई है -> वाक्यांश और

  1. नाम जोड़ें, ठीक क्लिक करें
  2. "वाक्यांश सेटिंग्स" अनुभाग पर सुनिश्चित करें कि पेस्ट का उपयोग कीबोर्ड पर सेट है
  3. उस हॉटकी को जोड़ें जिसे आप उपयोग करना चाहते हैं
  4. टेक्स्ट फ़ील्ड में कमांड जोड़ें, उदाहरण के लिए बाएं तीर कुंजी का अनुकरण करने के लिए - यह होगा <left> (विशेष कुंजी की सूची है यहाँ)।

0