X 아래의 화살표 키에 Super + hjkl 매핑


23

지도를 작성하려고합니다.

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

아이디어는 필자가 화살표 키를 자주 사용하는 홈 행을 남기고 싶지 않기 때문에 Super modifier + hjkl을 사용하여 X 아래의 화살표 키를 에뮬레이션합니다. ?

내가 시도한 한 가지는이 구성을 사용하는 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 란 무엇입니까? 또한 Control-Super 또는 이와 같은 콤보를 사용하는 것이 더 나을 것이라고 생각합니다.
harrymc

답변:


15

Capslock + HJKL-화살표 키

  1. ~ / .Xmodmap을 만들고 이것을 안에 넣으십시오.

    clear Lock 
    keycode 66 = ISO_Level3_Shift
    
  2. 추가를 Left, Down, Up, Right에 H, J, K, L 키 항목에 대한 제 3의 항목으로 /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. 운영 xmodmap ~/.Xmodmap

대안 : 화살표 키에 Control 및 Control_L + HJKL로 Capslock

이것은 내 현재 설정입니다. Control_L을 제어 키로 매핑 해제하고 특수 수정 자 (ISO_Level3_Shift)로 사용 /usr/share/X11/xkb/symbols/us합니다. 이는 hjkl 매핑 에 대한 파일 의 세 번째 항목에 해당 합니다.

  1. 이전과 같이 / 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 ] };
    
  2. 그런 다음 이것을 ~ / .Xmodmap 파일에 넣습니다.

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

keycode 66Capslock이며 keycode 37제어 권한이 유지됩니다.

  1. xmodmap ~ / .Xmodmap을 실행하십시오.

이 설정으로 Control_L + hjkl과 함께 화살표 키를 사용하고 Control_L + caps + hl로 단어를 건너 뛸 수 있습니다. 쉬운!


1
이것은 아치 리눅스에서도 작동하지만 xmodmap 명령 직후에는 작동하지 않습니다. 재부팅 후 거의 완벽하게 작동합니다. CTRL + SHIFT + CAPS + hjkl을 사용하여 CTRL + SHIFT + 화살표를 사용할 수 없습니다. 이 작업을 수행하는 방법을 알고 있습니까?
koss

흠, 당신이 맞아요, 내가 할 수있는 최선은 다른 열에 다시 왼쪽, 아래쪽, 위쪽, 오른쪽을 추가하는 것입니다. 이것은 강조 표시가 작동하지 않지만 정상적인 단어는 건너 뜁니다. 이것에 대해 더 조사해야 할 것입니다.
William Casarin

이것은 나를 위해 충분히 작동합니다. 내가 가진 유일한 문제는 Chrome에서 작동하지 않으며 성가신 것입니다.
Mood

/var/lib/xkb/*.xkm변경 사항을 적용 하려면 캐시 된 xkb 파일을 지워야 할 수도 있습니다 /usr/share/X11/xkb/symbols/us.
솔로

1
이것은 우분투 14.04에서 작동합니다. xmodmap /home/alex/.Xmodmap시작 응용 프로그램 을 만들고 / var / lib / xkb에서 모든 * .xkm 파일을 제거해야했습니다. 경고 :이 마지막 단계를 수행하는 우분투 VM을 휴지통에 버린 다음 키보드가 더 이상 작동하지 않으므로주의하고 백업을 준비하십시오 :-) Shift + Control + Caps + hjkl 텍스트를 선택하여 Firefox에서 잘 작동합니다. 썬더 버드하지만, 그렇지 않은 (예를 들어, 크롬) 일부 응용 프로그램에서
알렉산더 RECHSTEINER

8

위에서 언급 한 / usr / share / X11 / xkb / symbols / us의 변경 사항이 작동하지 않습니다.
새 키보드 설명을로드하는 동안 오류가 발생했습니다 .

그러나 모순되는 많은 하우투를 살펴본 후 hjkl과 함께 왼쪽 슈퍼 키 (왼쪽 창 키 / Mod4)를 왼쪽, 아래로, 위로, 오른쪽으로 매핑하는 솔루션을 찾았습니다. 이것은 시스템 전체 설정입니다.

이 블록을 / usr / share / X11 / xkb / symbols / us 의 첫 번째 섹션 (바로 앞 };) 끝에 추가 하십시오 .

//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처럼 동작하게합니다.
여기 있습니다 :

Super + h-> Left
Super + j-> Down
Super + k-> Up
Super + l-> 오른쪽

새 설정을 적용하려면 setxkbmap을 실행하거나 시스템을 다시 시작하십시오.

중요 : 이것은 분명히 슈퍼 키를 비활성화 시키므로 실제로 다른 목적으로 슈퍼 키를 사용하는 경우 (예 : 창을 다른 작업 공간으로 이동) 이와 같이 다시 매핑해서는 안됩니다.
Super 대신 Caps Lock을 사용하려면 다음을 사용하여 마지막 키 라인을 변경하십시오.

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 ] };


};

나는 이것이 누군가를 도울 수 있기를 바랍니다 ...

더 나은 해결책이 있다면 알려주세요.

편집 : Fedora에서 테스트되었습니다.


이 접근법을 직접 수행했지만 모든 응용 프로그램에서 작동하지는 않습니다! xev명확하게 말하고 Left대부분의 응용 프로그램에서 작동합니다. 그러나 일부 프로그램은 숭고한 텍스트 편집기 및 기타와 같은 "실제"화살표 키에만 반응 합니다.
Tarrasch

1
Redhat 6.2에 설명 된대로 작동합니다. 손목이 아프다!
BuckFilledPlatypus

basic6 감사합니다. 아래 설명 된 단계 후에 Ubuntu에서 작동합니다. Ubuntu (. Ubuntu 14.04에서 테스트)에 .xkm 파일이 다시 컴파일되지 않아 / usr / share / X11 / xkb / symbols / *의 변경 사항이 적용되지 않는 문제가 있습니다. 이를 개선하려면 / var / lib / xkb에서 모든 * .xkm 파일을 제거하고 시스템을 재부팅하십시오. 그런 다음 * .xkm 파일이 다시 컴파일됩니다. 자세한 내용은 ubuntuforums.org/showthread.php?t=1589744
MPtr

3

나는 이것을 직접 시도하지 않았지만 xkb가 http://en.wikipedia.org/wiki/X_keyboard_extension 원하는 것을 할 수있는 것처럼 보입니다 .

우분투에는 x11-xkb-utils라는 패키지가 있습니다.


xkb는 수정 자로 Super 키와 함께 사용할 수 없습니다. xkb는 수정되지 않은, Shift, AltGr, Shift-AltGr에서만 (순서대로) 작동합니다. Bill Casarin의 CapsLock 예제와 같이 상위 레벨 수정자를 지정할 수도 있지만 표준 키보드에는 제공되지 않습니다. Super를 더 높은 수정 자로 매핑하면 Basic6의 예에서와 같이 Super로 기능하지 않습니다.
dotancohen

3

여기 에서 파생 된 sudo가 필요 없으며 와 결합하여 작동하도록 수정했습니다 Alt.

file다음 내용을 작성하십시오 .

! 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

이 매핑 AltGrCaps대신 Super오히려 설정할 수 있도록,

keycode 66 = Super_L

(또는 watever xev는 타격을줍니다 Super)

설탕 부분은 i 및 o에 대한 특별 할당으로 백 스페이스 및 Del을 제공합니다.

추신 : 그것을 실험하면 호출하여 "기본"매핑을 재설정

setxkbmap

이것은 나를 위해 작동하지 않았지만 올바른 길로 나를 데려갔습니다. 이것은 나를 위해 작동합니다 : github.com/sblask/dotfiles/commit/…
Sebastian Blask

2

마침내 모든 수정 자 (Ctrl +, Shift +, Ctrl + Shift +) 및 Sublime Text 2에서 작동하는 솔루션을 찾았습니다.

모든 영광은 최근에 http://www.spinics.net/lists/xorg/msg35931.html 찾은이 gem 구성에 적용 됩니다. ijkl 화살표를 설명하지만 hjkl 탐색을 위해 쉽게 수정할 수 있습니다. 키보드 레이아웃 파일을 업데이트해야합니다. / usr / share / X11 / xkb / symbols / * (개인적으로, / usr / share / X11 / xkb / symbols / typo를 사용합니다. 옵션 "misc : typo"이므로 모든 키보드 레이아웃에서 작동합니다. 구성은 수정 자 키가 ISO_Level3_Shift를 전송한다고 가정합니다 (Super 또는 Alt를 ISO_Level3_Shift에 바인딩하는 방법에는 여러 가지가 있음).

키 정의는 다음과 같아야합니다 (../symbols/typo를 수정하는 경우 NoSymbol 사용).

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

또한 / usr / share / X11 / types / basic을 편집하고 "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";
};

Sublime Text 2의 경우 솔루션이 더 까다 롭고 해킹 적입니다. 위에서 언급했듯이 Sublime Text 2는 장치에서 직접 키 코드를 읽으므로 Xkb의 일부 기능을 무시합니다 (화살표가있는 xkb 트릭은 효과가 없습니다). 거의 포기되었지만 여전히 작동중인 프로젝트 인 Gizmo Daemon http://gizmod.sourceforge.net/이 있습니다. 고군분투하고 인터넷 검색을 한 후 데비안 Wheezy에서 성공적으로 컴파일했습니다. 그런 다음이 gizmod 스크립트를 만들어 ~ / .gizmod / modules.d / 010-KeyboardViMode-SublimeText2.py http://pastebin.com/HNQgGEwD에 배치했습니다 .

추신 Linux에서 KeyboardRemap4MacBook이 때때로 누락됩니다. OS X 소프트웨어의 이러한 평화는 확인란을 거의 사용하지 않고도 이러한 탐색 (및 기타 여러 가지)을 가능하게합니다.


1

Debian / Ubuntu의 HHKB 사용자이며이 솔루션이 적합합니다.

사용 Left Ctrl활성 키에.

$ vi ~/.Xmodmap
keycode 37 = ISO_Level3_Shift

/ usr / share / X11 / xkb / symbols / us// End alphanumeric section기본 블록 아래에이 코드를 추가 하십시오.

//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.

그런데 Firefox에서 pentadactyl 을 사용한 경우 ~ / .pentadactylrc 에이 코드를 추가 할 수 있습니다.

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


1

이것은 아치에서 나를 위해 일합니다. Caps + hjkl을 화살표 키로, Shift + Caps를 Caps로 다시 매핑합니다.

다음을 넣습니다 ~/.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.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.