Xkbを使用して右ウィンドウキー(RWIN)をHyper_Rに再マップしました。これは、いくつかの特別なショートカットにAutoKeyで使用したいためです。編集してやった
/usr/share/X11/xkb/symbols/pc
rWIN行の変更:
key <RWIN> { [ Hyper_R ] };
( これが私を導いた答えです )
私の知る限り、これは機能し、正しいWindowsキーがHyper_Rを起動します。ただし、Ubuntu(正確にはXubuntu)では、HyperとSuperが何らかの形で同じことをしているようです。そのため、Super + eはエディターを起動し、Hyper + eも起動します。
これがなぜなのか、またはこの動作をどこで変更できるのかはわかりません。 HyperとSuperを異なる修飾子にしたいです。
何らかの理由で、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になったりシステムファイルを変更したりすることなく、スーパーとハイパーを別々の修飾子に配置することができました。私は間違いなく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}
ログイン時に実行するスクリプトにこれを配置します。通常のユーザーとして実行できます。
xmodmap
を使用すると、2つのコマンドでこの動作を変更できます。
## Hyper_L is mod4 by default, we will "move" it to Mod3
xmodmap -e "remove mod4 = Hyper_L"
xmodmap -e "add mod3 = Hyper_L"