
私は、AutoKeyで特別なショートカットに使用したいので、xkbを使用して右のWindowsキー(RWIN)をHyper_Rに再マップしました。
/usr/share/X11/xkb/symbols/pc
RWIN 行を変更します。
key <RWIN> { [ Hyper_R ] };
私の知る限り、これは機能し、右の Windows キーで Hyper_R が起動します。ただし、Ubuntu (正確には Xubuntu) では、Hyper と Super が何らかの理由で同じ動作をしているようです。そのため、Super + e でエディターが起動し、Hyper + e でもエディターが起動します。
なぜそうなるのか、またこの動作をどこで変更できるのかはわかりません。Hyper と Super を異なる修飾子にしたいです。
答え1
何らかの理由で、Ubuntu は現在 Super と Hyper の両方を Mod4 に割り当てています。これは /usr/share/X11/xkb/symbols/pc で確認できます。
key <SUPR> { [ NoSymbol, Super_L ] };
modifier_map Mod4 { <SUPR> };
key <HYPR> { [ NoSymbol, Hyper_L ] };
modifier_map Mod4 { <HYPR> };
これを変更して、root になる必要も、システム ファイルを変更する必要もなく、super と hyper を別々の修飾子に配置することができました。私は xkb の専門家ではないので、これが最善の方法かどうかはわかりませんが、私にとっては信頼できる方法です。
まず、ローカル シンボル ファイルを作成します。私のファイルは ${HOME}/.config/xkb/symbols/local にあります。これにより、Super が Mod3 に、Hyper が Mod4 に割り当てられます。
default partial modifier_keys
xkb_symbols "superhyper" {
modifier_map Mod3 { Super_L, Super_R };
key <SUPR> { [ NoSymbol, Super_L ] };
modifier_map Mod3 { <SUPR> };
key <HYPR> { [ NoSymbol, Hyper_L ] };
modifier_map Mod4 { <HYPR> };
};
次に、既存のマップを再コンパイルして「ローカル」を追加します。
setxkbmap -print | sed -e '/xkb_symbols/s/"[[:space:]]/+local&/' | xkbcomp -I${HOME}/.config/xkb - ${DISPLAY}
これをログイン時に実行されるスクリプトに組み込みます。通常のユーザーとして実行できます。
答え2
次の 2 つのコマンドを使用してxmodmap
この動作を変更できます。
## Hyper_L is mod4 by default, we will "move" it to Mod3
xmodmap -e "remove mod4 = Hyper_L"
xmodmap -e "add mod3 = Hyper_L"