xkbでCaps LockとShift + Caps Lockの両方を再マッピングする


13

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はComposeとして機能しますが、Shift + Caps LockはCaps LockではなくComposeとして機能します。 xkbcomp :0.0以下を明らかにします。

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

第2レベルのシンボルマッピングは、何らかの理由で、私がそれを与えようとした個別の値ではなく、第1レベルのシンボルマッピングを複製しています。誰かが私が間違ったことやそれを修正する方法を教えてくれるほど強力なxkb-fuを持っていますか?


1
Xmodmapではこれを行うことができますが、xkbではできません。これが必要な場合@mirabilosは、コメントで積極的に応答し(応答を書くことを忘れないようにしてください)、このコメントを削除して回答として書き込みます(コメント応答も削除する必要があります)。
ミラビロス14

1
あなたの最初の行では、partial modifier keys実際にあるべきpartial modifier_keysですか?この変更がないと、setxkbmap -symbols 'pc+us+gdwatson(compose)'実際にはエラーで終了しますが、変更すると、から目的の出力が得られxkbcomp :0.0ます。ただし、Capslockを押すとCapslockモードとキー作成モードが同時に実行されるという望ましくない副作用があります。
billyjmc 14年

回答:


11

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

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のミラーにリンクしています)。


また、あなたが最初の行を作る場合default partial modifier_keys、あなたは明示的に指定する必要はありませんsetxkbmap -symbols 'pc+us+gdwatson(compose)'、あなたは簡単に行うことができますsetxkbmap -symbols 'pc+us+gdwatson'
billyjmc
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.