Caps 수정자를 사용하는 XKB 레이아웃, 일부 조합이 다른 수정자와 충돌함

Caps 수정자를 사용하는 XKB 레이아웃, 일부 조합이 다른 수정자와 충돌함

화살표 키를 시뮬레이션하고 다음 위치에 넣기 위해 xkb 형식의 사용자 정의 키보드 레이아웃을 만들었습니다 /usr/share/X11/xkb/symbols/custom.

xkb_symbols {

    name[Group1]= "English (US) with Caps mod";
    key <ESC>  {    [   Escape, asciitilde, grave                       ]   };
    key <INS>  {    [   Insert, Insert, Caps_Lock                       ]   };
    key <TAB>  {    [   Tab, ISO_Left_Tab, Menu                         ]   };
    key <AC06> {    [   h, H, Left                                      ]   };
    key <AC07> {    [   j, J, Down                                      ]   };
    key <AC08> {    [   k, K, Up                                        ]   };
    key <AC09> {    [   l, L, Right                                     ]   };
};

다음 명령으로 활성화한 후: setxkbmap -layout custom -option lv3:caps_switch성가심을 제외하면 예상대로 작동합니다. Caps+{H,J,K,L}시뮬레이션된 화살표 키를 사용하여 탐색할 수 있지만 다른 수정자와 결합하는 것은 불가능합니다. 예를 들어, 또는 )
조합이 작동하지 않아 일반 화살표 키를 사용해야 합니다.Super+Caps+{H,J,K,L}Ctrl+Shift+Caps+{H,J,K,L}

작동하게 하는 방법이 있습니까? 아니면 이것이 xkb의 제한 사항입니까?

답변1

두 사람이 그 옵션을 사용하도록 할 수는 없었습니다 lv3:caps_switch. 아날로그 화살표 키는 대문자에 대해 별도의 2단계 수정자가 정의된 경우에만 다른 수정자(예: SUPER)와 함께 사용할 수 있습니다.

나는 de 레이아웃을 기본으로 사용했지만 다른 레이아웃에서도 작동해야 합니다. 내 새 /usr/share/X11/xkb/symbols/custom파일 은 다음과 같습니다 ( setxkbmap -layout custom -variant 5layer활성화할).

default partial alphanumeric_keys xkb_symbols "5layer" {

    include "de(basic)"
    include "ansi_hybrid(caps_layer)"
    include "ansi_hybrid(ralt_layers)"

};

partial modifier_keys xkb_symbols "caps_layer" {
    // caps layer key definitions

    replace key <CAPS> {
        type[Group1] = "TWO_LEVEL",
        symbols[Group1] = [ Overlay1_Enable, Overlay1_Enable ],
        actions[Group1] = [ SetControls(controls=Overlay1),
                            SetControls(controls=Overlay1) ]
    };

    key <LatH> { Overlay1 = <LEFT> };
    key <LatJ> { Overlay1 = <DOWN> };
    key <LatK> { Overlay1 = <UP>   };
    key <LatL> { Overlay1 = <RGHT> };

};

partial modifier_keys xkb_symbols "ralt_layers" {
    // base, shift, ralt, shift+ralt layers key definitions

    key <CODE> {   [   base, shift, ralt_base, ralt_shift_symbol    ]   };

};

관련 정보