
Ich habe xkb verwendet, um die rechte Windows-Taste (RWIN) auf Hyper_R umzuordnen, da ich sie mit AutoKey für einige spezielle Tastenkombinationen verwenden möchte. Ich habe dies getan, indem ich
/usr/share/X11/xkb/symbols/pc
Ändern der RWIN-Zeile:
key <RWIN> { [ Hyper_R ] };
(Hier ist die Antwort, die mich geleitet hat)
Soweit ich das beurteilen kann, funktioniert das und die rechte Windows-Taste löst jetzt Hyper_R aus. Es scheint jedoch, dass Hyper und Super in Ubuntu (genauer gesagt in Xubuntu) irgendwie dasselbe tun. Super + e startet also den Editor, und Hyper + e tut das auch.
Ich bin mir nicht sicher, warum das so ist oder wo ich dieses Verhalten ändern kann. Ich möchte, dass Hyper und Super unterschiedliche Modifikatoren sind.
Antwort1
Aus irgendeinem Grund weist Ubuntu derzeit sowohl Super als auch Hyper Mod4 zu. Sie können dies in /usr/share/X11/xkb/symbols/pc sehen:
key <SUPR> { [ NoSymbol, Super_L ] };
modifier_map Mod4 { <SUPR> };
key <HYPR> { [ NoSymbol, Hyper_L ] };
modifier_map Mod4 { <HYPR> };
Ich konnte dies ändern, um Super und Hyper auf separate Modifikatoren zu setzen, ohne Root sein oder Systemdateien ändern zu müssen. Ich bin mir nicht sicher, ob dies der beste Weg ist, da ich definitiv kein XKB-Experte bin, aber es ist ein Weg, der für mich zuverlässig war.
Erstellen Sie zunächst eine lokale Symboldatei. Meine befindet sich in ${HOME}/.config/xkb/symbols/local. Dadurch wird Super Mod3 und Hyper Mod4 zugewiesen.
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> };
};
Kompilieren Sie dann die vorhandene Karte neu, um eine „lokale“ Karte hinzuzufügen:
setxkbmap -print | sed -e '/xkb_symbols/s/"[[:space:]]/+local&/' | xkbcomp -I${HOME}/.config/xkb - ${DISPLAY}
Fügen Sie dies in ein Skript ein, das bei der Anmeldung ausgeführt wird. Sie können es als normaler Benutzer ausführen.
Antwort2
Mit xmodmap
können Sie dieses Verhalten mit 2 Befehlen ändern:
## Hyper_L is mod4 by default, we will "move" it to Mod3
xmodmap -e "remove mod4 = Hyper_L"
xmodmap -e "add mod3 = Hyper_L"