使用 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选项。只有在为大写字母定义单独的两级修饰符后,模拟箭头键才能与其他修饰符(例如 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    ]   };

};

相关内容