xkb で Caps Lock と Shift+Caps Lock を再マップします。

xkb で Caps Lock と Shift+Caps Lock を再マップします。

Caps LockがComposeキーにマップされ、Shift + Caps Lock機能が既存のCaps Lockとして機能するようにxkbを構成しようとしています。という名前の新しいファイルに入れました/usr/share/X11/xkb/symbols/gdwatson

partial modifier keys
xkb_symbols "compose" {
    key <CAPS> {
        type[Group1] = "TWO_LEVEL",
        symbols[Group1] = [ Multi_key, Caps_Lock ]
    };
};

その後、実行してsetxkbmap -symbols 'pc+us+gdwatson(compose)'正常に完了しました。 Caps Lockは作成として機能しますが、Shift + Caps LockはCaps Lockではなく作成として機能します。 xkbcomp :0.0以下の内容が公開されました。

key <CAPS> {
    type= "TWO_LEVEL",
    symbols[Group1]= [       Multi_key,       Multi_key ]
};

何らかの理由で、2番目のレベルのシンボルマップは、私が提供したい別の値の代わりに最初のレベルのシンボルマップをコピーしています。私が何を間違っているのか、それとも修正する方法を教えてくれるのに十分なxkb-fuを持っている人はいますか?

答え1

これはあなたが探しているものを達成するようです。

partial modifier_keys
xkb_symbols "compose" {
    key <CAPS> {
        type[Group1] = "TWO_LEVEL",
        symbols[Group1] = [ Multi_key, Caps_Lock ],
        actions[Group1] = [ NoAction(), LockMods(modifiers=Lock) ]
    };
};

次のリソースはXKBで作業するときに非常に重要です(今後の校正のためにこのページのWayBack Machineミラーに接続しました)。

関連情報