एक्स के तहत तीर कुंजी के लिए सुपर + hjkl मैपिंग


23

मैं मैप करने की कोशिश कर रहा हूं:

Super+h -> Left
Super+j -> Down
Super+k -> Up
Super+l -> Right

एक्स के तहत विश्व स्तर पर। विचार यह है कि मैं अपने घर की पंक्ति को छोड़ना नहीं चाहता हूं जो कि अक्सर तीर कुंजियों का उपयोग करने के लिए होता है, इसलिए मैं एक्स के तहत तीर कुंजी का अनुकरण करने के लिए सुपर संशोधक + hjkl का उपयोग करूंगा। क्या ऐसा करने का कोई तरीका है। ?

एक चीज़ जो मैंने कोशिश की है, इस विन्यास का उपयोग करके xbindkeys + xte है:

"xte 'keydown Up' 'keyup Up'"
  Mod4+k

"xte 'keydown Down' 'keyup Down'"
  Mod4+j

"xte 'keydown Left' 'keyup Left'"
  Mod4+h

"xte 'keydown Right' 'keyup Right'"
  Mod4+l

लेकिन मुझे कुंजी दबाने और किसी भी परिणाम को नोटिस करने के बीच एक बड़ी देरी लगती है, और अधिकांश समय कुछ भी नहीं होता है।

क्या ऐसा करने का एक और अधिक सुंदर तरीका है जो वास्तव में बिना किसी देरी के काम करता है?


2
इस तरह की चीज़ करने के लिए इसे महान पाया गया: code.google.com/p/autokey
टॉम पावर

OS क्या है? मुझे भी लगता है कि आप कंट्रोल-सुपर या इस तरह के कुछ कॉम्बो का उपयोग करके बेहतर हो सकते हैं।
हरमिक्क

जवाबों:


15

कैप्सलॉक + HJKL तीर कुंजी के लिए

  1. ~ / .Xmodmap बनाएं और इसे अंदर डालें:

    clear Lock 
    keycode 66 = ISO_Level3_Shift
    
  2. जोड़े Left, Down, Up, Rightज, J, K, एल कुंजी में प्रविष्टियों के लिए एक तिहाई आइटम के रूप में /usr/share/X11/xkb/symbols/us(प्रथम खंड):

    key { [ h, H, Left, Left ] }; 
    key { [ j, J, Down, Down ] };
    key { [ k, K, Up, Up ] }; 
    key { [ l, L, Right, Right ] };
    
  3. Daud xmodmap ~/.Xmodmap

वैकल्पिक: तीर कुंजी के नियंत्रण और Control_L + HJKL के रूप में कैप्सलॉक

यह मेरा वर्तमान सेटअप है। मैंने Control_L को नियंत्रण कुंजी के रूप में अनमैप किया और इसे एक विशेष संशोधक (ISO_Level3_Shift) के रूप में उपयोग किया, जो /usr/share/X11/xkb/symbols/ushjkl मैपिंग के लिए फ़ाइल में तीसरी प्रविष्टि से मेल खाती है ।

  1. मैंने पहले की तरह / usr / share / X11 / xkb / प्रतीकों / के पहले श्लोक को संशोधित किया:

    key { [ h, H, Left, Left ] }; 
    key { [ j, J, Down, Down ] };
    key { [ k, K, Up, Up ] }; 
    key { [ l, L, Right, Right ] };
    
  2. फिर मैंने इसे अपनी ~ / .Xmodmap फ़ाइल में डाल दिया:

    clear Control
    keycode 66 = Control_L
    add Control = Control_L
    add Control = Control_R
    keycode 37 = ISO_Level3_Shift
    

keycode 66कैप्सलॉक है और keycode 37बाएं नियंत्रण है

  1. xmodmap ~ / .Xmodmap चलाएं

इस सेटअप के साथ, मैं Control_L + hjkl के साथ तीर कुंजियों का उपयोग कर सकता हूं और साथ ही Control_L + caps + hl के साथ शब्दों को छोड़ सकता हूं। आसान!


1
यह आर्क लिनक्स पर भी काम करता है, लेकिन xmodmap कमांड के तुरंत बाद नहीं। रिबूट के बाद, लगभग पूरी तरह से काम करता है। बस CTRL + SHIFT + तीर CTRL + SHIFT + CAPS + hjkl के साथ नहीं कर सकते, आमतौर पर शब्दों को हटाने के लिए। कोई आईडिया कि इसे कैसे किया जाए?
कोस

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

यह मेरे लिए काफी अच्छा काम करता है। मेरे पास एकमात्र समस्या, यह क्रोम में काम नहीं करता है और यह एक उपद्रव है।
मूड

/var/lib/xkb/*.xkmपरिवर्तनों को /usr/share/X11/xkb/symbols/usप्रभावी करने के लिए आपको कैश्ड xkb फ़ाइलों को साफ़ करने की आवश्यकता हो सकती है।
सोलो

1
यह Ubuntu 14.04 पर काम करता है। मुझे xmodmap /home/alex/.Xmodmapएक स्टार्टअप एप्लिकेशन बनाना था , और सभी * .xkm फाइलें फॉर्म / var / lib / xkb को हटाना था। चेतावनी: मैंने एक उबंटू वीएम को अंतिम चरण में रौंद दिया और फिर मेरा कीबोर्ड किसी भी तरह से काम नहीं करेगा, इसलिए सावधान रहें और बैकअप के लिए तैयार रहें :-) Shift + Control + Caps + hjkl पाठ को फ़ायरफ़ॉक्स में अच्छी तरह से काम करने के लिए चुनें थंडरबर्ड, लेकिन कुछ अनुप्रयोगों में यह (उदाहरण के लिए क्रोम) नहीं है
अलेक्जेंडर रीचस्टिनर

8

उपर्युक्त परिवर्तन / usr / share / X11 / xkb / प्रतीकों / हमारे लिए मेरे लिए काम नहीं करते:
नया कीबोर्ड विवरण लोड करने में त्रुटि

लेकिन हाउटोस के विरोधाभास के बहुत से देखने के बाद, मैं एक समाधान के साथ आया हूं, जो बाएं सुपर कुंजी (बाएं विंडोज़ की / मॉड 4) को hjkl के साथ मिलकर लेफ्ट, डाउन, अप, राइट में मैप करता है। यह एक सिस्टम-वाइड सेटिंग है।

इस खंड को };अपने / usr / शेयर / X11 / xkb / प्रतीकों / के पहले खंड (दाईं ओर ) के अंत में जोड़ें :

//hjkl
//AltGr + hjkl
key <AC06> {        [         h, H, Left            ]       };
key <AC07> {        [         j, J, Down            ]       };
key <AC08> {        [         k, K, Up              ]       };
key <AC09> {        [         l, L, Right           ]       };
//Super_L -> Alt Gr
key <LWIN> { [ ISO_Level3_Shift ] }; //see below!

पहली प्रमुख लाइन मैप्स AltGr + h से लेफ्ट है।
अंतिम कुंजी लाइन AltGr की तरह बाईं सुपर कुंजी का व्यवहार करती है।
हेयर यू गो:

सुपर + एच -> लेफ्ट
सुपर + जे -> डाउन
सुपर + के ->
सुपर + एल -> राइट

नई सेटिंग्स को लागू करने के लिए, setxkbmap चलाएं या अपने सिस्टम को पुनरारंभ करें।

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

key <CAPS> { [ ISO_Level3_Shift ] };

यहां मेरी कॉन्फ़िग फ़ाइल का पूरा पहला भाग है:

default
partial alphanumeric_keys modifier_keys
xkb_symbols "basic" {

    name[Group1]= "English (US)";

    // Alphanumeric section
    key <TLDE> {        [     grave,    asciitilde      ]       };
    key <AE01> {        [         1,    exclam          ]       };
    key <AE02> {        [         2,    at              ]       };
    key <AE03> {        [         3,    numbersign      ]       };
    key <AE04> {        [         4,    dollar          ]       };
    key <AE05> {        [         5,    percent         ]       };
    key <AE06> {        [         6,    asciicircum     ]       };
    key <AE07> {        [         7,    ampersand       ]       };
    key <AE08> {        [         8,    asterisk        ]       };
    key <AE09> {        [         9,    parenleft       ]       };
    key <AE10> {        [         0,    parenright      ]       };
    key <AE11> {        [     minus,    underscore      ]       };
    key <AE12> {        [     equal,    plus            ]       };

    key <AD01> {        [         q,    Q               ]       };
    key <AD02> {        [         w,    W               ]       };
    key <AD03> {        [         e,    E               ]       };
    key <AD04> {        [         r,    R               ]       };
    key <AD05> {        [         t,    T               ]       };
    key <AD06> {        [         y,    Y               ]       };
    key <AD07> {        [         u,    U               ]       };
    key <AD08> {        [         i,    I               ]       };
    key <AD09> {        [         o,    O               ]       };
    key <AD10> {        [         p,    P               ]       };
    key <AD11> {        [ bracketleft,  braceleft       ]       };
    key <AD12> {        [ bracketright, braceright      ]       };

    key <AC01> {        [         a,    A               ]       };
    key <AC02> {        [         s,    S               ]       };
    key <AC03> {        [         d,    D               ]       };
    key <AC04> {        [         f,    F               ]       };
    key <AC05> {        [         g,    G               ]       };
    key <AC06> {        [         h,    H               ]       };
    key <AC07> {        [         j,    J               ]       };
    key <AC08> {        [         k,    K               ]       };
    key <AC09> {        [         l,    L               ]       };
    key <AC10> {        [ semicolon,    colon           ]       };
    key <AC11> {        [ apostrophe,   quotedbl        ]       };

    key <AB01> {        [         z,    Z               ]       };
    key <AB02> {        [         x,    X               ]       };
    key <AB03> {        [         c,    C               ]       };
    key <AB04> {        [         v,    V               ]       };
    key <AB05> {        [         b,    B               ]       };
    key <AB06> {        [         n,    N               ]       };
    key <AB07> {        [         m,    M               ]       };
    key <AB08> {        [     comma,    less            ]       };
    key <AB09> {        [    period,    greater         ]       };
    key <AB10> {        [     slash,    question        ]       };

    key <BKSL> {        [ backslash,         bar        ]       };
    // End alphanumeric section

    //hjkl
    //AltGr + hjkl
    key <AC06> {        [         h, H, Left            ]       };
    key <AC07> {        [         j, J, Down            ]       };
    key <AC08> {        [         k, K, Up              ]       };
    key <AC09> {        [         l, L, Right           ]       };
    //Super_L -> Alt Gr
    key <LWIN> { [ ISO_Level3_Shift ] };


};

मुझे उम्मीद है कि यह किसी को वहाँ मदद करता है ...

अगर किसी के पास कोई बेहतर उपाय है, तो कृपया मुझे बताएं।

संपादित करें: फेडोरा पर परीक्षण किया गया।


मैंने यह दृष्टिकोण स्वयं किया है, लेकिन यह सभी अनुप्रयोगों के लिए काम नहीं कर रहा है! xevस्पष्ट रूप से कहता है Leftऔर यह अधिकांश अनुप्रयोगों के लिए काम करता है। लेकिन कुछ कार्यक्रम केवल "वास्तविक" तीर कुंजी पर प्रतिक्रिया करते हैं, जैसे कि उदात्त पाठ संपादक और अन्य।
टार्च

1
Redhat 6.2 पर वर्णित के रूप में काम करता है। मेरी दुखती कलाई धन्यवाद!
BuckFilledPlatypus

बुनियादी 6 धन्यवाद, यह नीचे वर्णित चरणों के बाद उबंटू पर काम करता है। उबंटू पर एक मुद्दा है (उबंटू 14.04 पर परीक्षण किया गया) कि .xkm फाइलें फिर से नहीं बनाई जाती हैं, और इस प्रकार / usr / share / X11 / xkb / प्रतीकों / * में कोई प्रभाव नहीं पड़ता है। इसे बेहतर बनाने के लिए सभी * .xkm फ़ाइलों को / var / lib / xkb और रिबूट सिस्टम से हटा दें। उसके बाद * .xkm फ़ाइलों को फिर से जोड़ दिया जाएगा। अधिक जानकारी के लिए कृपया देखें: ubuntuforums.org/showthread.php?t=1589744
MPtr

3

मैंने खुद यह कोशिश नहीं की है, लेकिन ऐसा लगता है कि एक्सबीएक्स वह कर सकता है जो आप चाहते हैं http://en.wikipedia.org/wiki/X_keyboard_extension

मेरे पास Ubuntu में एक पैकेज है जिसे x11-xkb-utils कहा जाता है जो आशाजनक लगता है :)


xkb सुपर कुंजी के साथ संशोधक के रूप में काम नहीं कर सकता है। xkb केवल (क्रम में) Unmodified, Shift, AltGr, Shift-AltGr के साथ काम करता है। उच्च-स्तरीय संशोधक भी सौंपे जा सकते हैं (जैसे कि बिल कैसरिन के कैप्सलॉक उदाहरण में) लेकिन वे एक मानक कीबोर्ड पर नहीं आते हैं। सुपर को एक उच्च संशोधक में मैप करना इसे सुपर के रूप में कार्य करने से हटा देता है (जैसा कि मूल 6 के उदाहरण में)।
23

3

कोई सूडो की जरूरत नहीं है , यहां से व्युत्पन्न है , इसे तब भी काम करने के लिए संशोधित किया जाता है जब इसके साथ संयुक्त होता है Alt

एक filew निम्नलिखित सामग्री बनाएँ :

! remove Caps Lock
clear lock
! remove Lock = Caps_Lock
! remove Shift = Caps_Lock
keycode 66 = NoSymbol NoSymbol
keycode 66 = ISO_Level3_Shift

keysym h = h H NoSymbol NoSymbol Left Left
keysym j = j J NoSymbol NoSymbol Down Down
keysym k = k K NoSymbol NoSymbol Up Up
keysym l = l L NoSymbol NoSymbol Right Right

! some sugar
keysym o = o O NoSymbol NoSymbol BackSpace NoSymbol
keysym i = i I NoSymbol NoSymbol Delete NoSymbol`

आह्वान

xmodmap file

यह नक्शे AltGrके Capsबजाय Superहै, तो आप के बजाय सेट कर सकते हैं

keycode 66 = Super_L

(या watever xevआपको मारने पर देता है Super)

चीनी का हिस्सा बैकस्पेस और डेल को i और o के लिए एक विशेष असाइनमेंट के रूप में देता है, आप इसे छोड़ सकते हैं, या इसे अपने स्वयं के विस्तार / समायोजित करने के लिए बोनस या प्रेरणा के रूप में देख सकते हैं;)

पुनश्च: यदि इसके साथ प्रयोग किया जाता है, तो "डिफ़ॉल्ट" मैपिंग को रीसेट करके रीसेट करें

setxkbmap

यह मेरे काम नहीं आया, लेकिन मुझे सही रास्ते पर ले गया। यह मेरे लिए काम करता है: github.com/sblask/dotfiles/commit/…
सेबस्टियन ब्लाक

2

अंत में ऐसा लगता है कि मुझे ऐसा समाधान मिला जो सभी मॉडिफायर्स (Ctrl +, Shift +, Ctrl + Shift +) और Sublive Text 2 के साथ काम करता है।

सभी महिमा इस मणि विन्यास पर जाती है जो मुझे हाल ही में http://www.spinics.net/lists/xorg/msg35931.html पर मिली । यह ijkl तीर का वर्णन करता है, लेकिन इसे hjkl नेविगेशन के लिए आसानी से संशोधित किया जा सकता है। आपको अपनी कीबोर्ड लेआउट फ़ाइल (ओं) / usr / share / X11 / xkb / प्रतीकों / * (Personaly, मैं / usr / share / X11 / xkb / प्रतीकों / टाइपो को अपडेट करने की आवश्यकता है, जिसे मैं Xkb के लिए अपने कीबोर्ड लेआउट में शामिल करता हूं) विकल्प "मिसक: टाइपो", इसलिए यह किसी भी कीबोर्ड लेआउट के लिए काम करता है)। कॉन्फ़िगरेशन मानता है कि संशोधक कुंजी ISO_Level3_Shift भेजती है (ISO_Level3_Shift पर सुपर या Alt को कैसे बाँधना है इसके कई तरीके हैं)।

मुख्य परिभाषाएँ दिखनी चाहिए (यदि आप संशोधित कर रहे हैं तो NoSymbol का उपयोग करें ../symbols/typo):

key <AC07> {    
    type="MOD5_NAV",
    [NoSymbol, NoSymbol, Down, Down],   
    actions[Group1] = [NoAction(), NoAction(), RedirectKey(key=<DOWN>, clearmods=ISO_Level3_Shift)]
};

इसके अलावा, आपको / usr / share / X11 / प्रकार / बुनियादी और घोषित प्रकार "MOD5_NAV" को संपादित करने की आवश्यकता है:

type "MOD5_NAV" {
    modifiers = Shift+Mod5;
    map[None] = level1;
    map[Shift] = level2;
    map[Mod5] = level3;
    map[Mod5+Shift] = level3;
    level_name[Level1] = "Base";
    level_name[Level2] = "Caps";
    level_name[Level3] = "Arrows";
};

उदात्त पाठ 2 के लिए समाधान अधिक पेचीदा और हैकिश है। जैसा कि ऊपर उल्लेख किया गया है, उदात्त पाठ 2 डिवाइस से सीधे कीकोड पढ़ता है और इसलिए एक्सबीएक्स की कुछ विशेषताओं को अनदेखा करता है (और तीर के साथ xkb चाल का कोई प्रभाव नहीं है)। लगभग परित्यक्त लेकिन अभी भी काम कर रहे प्रोजेक्ट, Gizmo Daemon http://gizmod.sourceforge.net/ है । कुछ संघर्ष और गुगली के बाद मैंने इसे सफलतापूर्वक अपने डेबियन व्हीजी पर संकलित किया। फिर मैंने इस गिज़मोड स्क्रिप्ट को बनाया और इसे ~ / .gizmod / मॉड्यूल.d / 010-KeyboardViMode-SublimeText2.py http://pastebin.com/HNQgGEwD पर रखा।

लिनक्स पर PS मुझे कभी-कभी KeyboardRemap4MacBook की याद आती है। ओएस एक्स सॉफ्टवेयर की यह महान शांति ऐसे नेविगेशन (और अन्य बहुत सी चीजों) को केवल कुछ चेकबॉक्स के साथ सक्षम कर सकती है।


1

मैं डेबियन / उबंटू पर एक एचएचकेबी उपयोगकर्ता हूं और यह समाधान मेरे लिए काम करता है।

Left Ctrlसक्रिय कुंजी का उपयोग करें।

$ vi ~/.Xmodmap
keycode 37 = ISO_Level3_Shift

इस कोड // End alphanumeric sectionको मूल ब्लॉक में / usr / share / X11 / xkb / प्रतीकों / हमें जोड़ें

//hjkl
//Ctrl + hjkl
key <AC06> {    [   h,  H,  Left    ]   };
key <AC07> {    [   j,  J,  Down    ]   };
key <AC08> {    [   k,  K,  Up      ]   };
key <AC09> {    [   l,  L,  Right   ]   };

अब, आप, छोड़ दिया करने के लिए उपयोग नीचे, ऊपर और साथ सही कुंजी में सक्षम होना चाहिए Ctrl+ h, j, k, l

वैसे, अगर आप का इस्तेमाल किया है pentadactyl Firefox पर, तो आप इस कोड जोड़ सकते हैं में ~ / .pentadactylrc

map -modes=i,c <C-down> <down>
map -modes=i,c <C-up> <up>


1

यह एक आर्क पर मेरे लिए काम करता है। यह कैप्स + hjkl को एरो कीज़, और Shift + कैप्स को कैप्स में बदल देता है।

निम्नलिखित डालें ~/.Xmodmap:

! Remap caps lock to special modifier, but still allow shift+caps to 
toggle caps lock
clear lock
clear mod5
add lock = Mode_switch
keycode 66 = Mode_switch Caps_Lock NoSymbol NoSymbol
keycode 43 = h H Left Left
keycode 44 = j J Down Down
keycode 45 = k K Up Up
keycode 46 = l L Right Right

रिबूट या इसके साथ सेट करें xmodmap ~/.Xmodmap

यदि आपको कोई त्रुटि मिलती है जैसे:

X Error of failed request:  BadValue (integer parameter out of range for operation)

इसका शायद मतलब है कि आपको इसके अलावा कुछ भी साफ़ करने की ज़रूरत है mod5(जो भी वर्तमान में सेट है Mode_switch)। के साथ अपने वर्तमान संशोधक मैपिंग की जाँच करें xmodmap

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