विम में गलत शिफ्ट की ब्लॉक करें


7

मुझे पता है कि मुझे अपने बाएं हाथ से टाइप करने वाले अक्षरों के लिए दाईं ओर की कुंजी का उपयोग करना चाहिए। लेकिन मैं अक्सर दाएं हाथ से बृहदान्त्र को सम्मिलित करता हूं, अनामिका को स्थानांतरित करने के लिए और तर्जनी को बृहदान्त्र की ओर ले जाता हूं।

मैं खुद को रोकने के लिए मजबूर करना चाहता हूं, कम से कम विम के भीतर। उदाहरण के लिए "Q" के साथ "राइट-शिफ्ट" का उपयोग करने से खुद को रोकने का कोई तरीका है?


2
विम नहीं है (और शायद वास्तव में नहीं कर सकते हैं) बाईं और दाईं ओर शिफ्ट / मेटा कुंजी के बीच अंतर करते हैं, इसलिए आप वह नहीं कर सकते जो आप विम के भीतर चाहते हैं। मैं अनुमान लगा रहा हूं कि यदि यह संभव है, तो यह विम एप्लिकेशन स्तर की तुलना में "उच्च स्तर" पर होगा। आप किस ऑपरेटिंग सिस्टम का उपयोग करते हैं?
हेप्टाइट

1
+1 के लिए "मैं अक्सर दाहिने हाथ से बृहदान्त्र सम्मिलित करता हूं"
Sirex

@ हेपेटाइट: कुबंटू (केडीई के साथ लिनक्स)
मार्टिन यूडिंग

मेरा सबसे अच्छा सुझाव यह देखना है कि क्या आप अपने विंडो मैनेजर / डेस्कटॉप वातावरण को लेफ्ट-शिफ्ट + जो भी करें और राइट-शिफ्ट + जो भी करें और किसी प्रकार के अशक्त ऑपरेशन से बांध सकें।
हेपेटाइट

1
यह थोड़ा अधिक हो सकता है, लेकिन आपको यह दिलचस्प Xmodmap का उपयोग करने के विकल्प के रूप में मिल सकता है, जो मुझे बताया गया है कि यह पुराना है। madduck.net/docs/extending-xkb
jmathew

जवाबों:


4

Xmodmap वही कर सकता है जो आप पूछ रहे हैं, जब तक कि आपको अपनी CapsLockकुंजी को तोड़ने में कोई आपत्ति नहीं है ।

Xmodmap छोड़ दिया और सही shift कुंजी बीच भेद कर सकते, इसलिए हमने शुरुआत पुन: मैप कर सकते हैं RightShiftकरने के लिए ModeSwitchहमारे रास्ते पाने के लिए:

xmodmap -e "keysym Shift_R = Mode_switch"

एक कुंजी के व्यवहार को संशोधित करने के लिए मूल वाक्यविन्यास है

xmodmap -e "keycode  KEYCODE = KEYSYMBOL1 KEYSYMBOL1 KEYSYMBOL3 KEYSYMBOL4"
xmodmap -e "keysym KEYSYMBOL = KEYSYMBOL1 KEYSYMBOL1 KEYSYMBOL3 KEYSYMBOL4"

कहाँ पे

  • KEYSYMBOL2कुंजी दबाते समय ट्रिगर हो जाता है Shift
  • KEYSYMBOL3कुंजी दबाते समय ट्रिगर हो जाता है ModeSwitch
  • KEYSYMBOL4Shift+ दबाते समय कुंजी दबाने पर ट्रिगर हो जाता है ModeSwitch
  • KEYSYMBOL1 उपरोक्त में से किसी के साथ कुंजी दबाने पर ट्रिगर हो जाता है।
  • ModeSwitchहै AltGrडिफ़ॉल्ट रूप से (केवल कुछ कीबोर्ड लेआउट पर काम करता है)।

सिद्धांत के लिए इतना। व्यवहार में, ये संयोजन Shift+ Letterसंयोजन को संशोधित करते समय थोड़ा अलग व्यवहार कर सकते हैं । मैं कुबंटु के लिए नहीं बोल सकता, लेकिन कुछ एकता एप्लिकेशन इन मामलों में एक्समॉडमैप द्वारा निर्दिष्ट व्यवहार को ओवरराइड करेगा।

केवल उचित संशोधक को स्वीकार करने के लिए प्रत्येक कुंजी को फिर से कॉन्फ़िगर करने के लिए, मुझे निम्नलिखित होने का सबसे मजबूत तरीका मिला:

  • Rकेवल स्वीकार करने के लिए RightShift, निम्नलिखित कमांड निष्पादित करें:

    xmodmap r r R R
    
  • Lकेवल स्वीकार करने के लिए LeftShift, निम्नलिखित कमांड निष्पादित करें:

    xmodmap l L l l
    

सुझाव:

  • रीमैपिंग को स्थायी बनाने के लिए, इसमें एक शेल स्क्रिप्ट बनाएं / संपादित करें ~/.kde/Autostart/, इसे निष्पादन योग्य बनाएं और इसमें संबंधित कमांड को सेव करें।

  • सभी रीमैपिंग को पूर्ववत् करने के लिए, बस निम्नलिखित कमांड निष्पादित करें:

    setxkbmap
    

यह उल्लेखनीय लगता है। क्या यह सभी keas के लिए <kbd> AltGr </ kbd> को नहीं तोड़ता है, ताकि Vइसके बजाय <kbd> AltGr </ kbd> + <kbd> v </ kbd> दर्ज हो ? कैप्सलॉक को तोड़ा जा सकता है, मैंने इसे AltGr को वैसे भी मैप किया है।
मार्टिन उडिंग

आपको कोशिश करनी होगी। मेरी AltGrकुंजी ट्रिगर ISOLevel3Shift, नहीं ModeSwitch। यदि यह आपकी AltGrकुंजी को तोड़ता है , तो मुझे बताएं और मुझे बताएं कि आप किस कीबोर्ड लेआउट का उपयोग कर रहे हैं।
डेनिस

1

मैंने डेनिस के विचार को पूरा करने के लिए एक पटकथा लिखी (यह यूके की एएससीआई कीबोर्ड के लिए है, अमेरिकी कीबोर्ड के लिए संशोधित करना आसान होना चाहिए)

! A script to rebind all shifted keys to force you to use the correct shift
! button for minimum risk of rsi.

! Buttons not really on either side, make either shift work:
keysym 6 = 6 asciicircum asciicircum asciicircum
keysym y = y Y Y Y
keysym b = b B B B


! Might need to replace 0x3571 with a keysym which is not used elsewhere in
! your key map so that pressing the wrong key generates nothing. This
! keysym should be fine for most people. Note: this may interfere with
! emacs in annoying ways because emacs because it print warnings when
! undefined keys are pressed, the answer is to learn not to press them!


! Set right shift to be a sort of temporary caps lock (only on while button held)
keysym Shift_R = Mode_switch


! Bind lhs of keyboard to only work with this "temporary caps lock
! modifier" as shift and rhs to only work with Shift_L.

! lhs letters
keysym q = q 0x3571 Q Q
keysym w = w 0x3571 W W
keysym e = e 0x3571 E E
keysym r = r 0x3571 R R
keysym t = t 0x3571 T T
keysym a = a 0x3571 A A
keysym s = s 0x3571 S S
keysym d = d 0x3571 D D
keysym f = f 0x3571 F F
keysym g = g 0x3571 G G
keysym z = z 0x3571 Z Z
keysym x = x 0x3571 X X
keysym c = c 0x3571 C C
keysym v = v 0x3571 V V

! lhs symbols
keysym backslash = backslash 0x3571 bar bar
keysym grave = grave 0x3571 notsign notsign
keysym 1 = 1 0x3571 exclam
keysym 2 = 2 0x3571 quotedbl
keysym 3 = 3 0x3571 sterling
keysym 4 = 4 0x3571 dollar
keysym 5 = 5 0x3571 percent

! rhs letters
keysym u = u U 0x3571 U
keysym i = i I 0x3571 I
keysym o = o O 0x3571 O
keysym p = p P 0x3571 P
keysym h = h H 0x3571 H
keysym j = j J 0x3571 J
keysym k = k K 0x3571 K
keysym l = l L 0x3571 L
keysym n = n N 0x3571 N
keysym m = m M 0x3571 M

! rhs symbols
keysym 7 = 7 ampersand 0x3571 ampersand
keysym 8 = 8 asterisk 0x3571 asterisk
keysym 9 = 9 parenleft 0x3571 parenleft
keysym 0 = 0 parenright 0x3571 parenright
keysym minus = minus underscore 0x3571 underscore
keysym equal = equal plus 0x3571 plus
keysym bracketleft = bracketleft braceleft 0x3571 braceleft
keysym bracketright = bracketright braceright 0x3571 braceright
keysym semicolon = semicolon colon 0x3571 colon
keysym apostrophe = apostrophe at 0x3571 at
keysym numbersign = numbersign asciitilde 0x3571 asciitilde
keysym comma = comma less 0x3571 less
keysym period = period greater 0x3571 greater
keysym slash = slash question 0x3571 question

इसका उपयोग करने के लिए: एक पाठ फ़ाइल में सहेजें और इसके साथ चलाएँ:

xmodmap [script_name]

इसके अलावा अधिक प्रतिष्ठा वाले कोई व्यक्ति डेनिस के जवाब को बदल सकता है

xmodmap r r R R

साथ में

xmodmap -e 'keysym r = r r R R'

और इसी तरह L, इसके लिए आवश्यक वास्तविक कमांड है।

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