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

2人にそのオプションを使用させることはできませんでしたlv3:caps_switch。アナログ矢印キーは、大文字に対して別々の2段階修飾子が定義されている場合にのみ、他の修飾子(SUPERなど)と一緒に使用できます。

私はデフォルトのレイアウトを使用しましたが、他のレイアウトでも動作するはずです。私の新しい/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    ]   };

};

おすすめ記事