web-dev-qa-db-fra.com

Comment faire pour que les touches Hyper et Super ne fassent pas la même chose?

J'ai utilisé xkb pour remapper la clé Windows droite (RWIN) sur Hyper_R parce que je veux l'utiliser avec la clé automatique pour certains raccourcis spéciaux. Je l'ai fait en éditant

/usr/share/X11/xkb/symbols/pc

modifier la ligne RWIN:

  key <RWIN> {  [ Hyper_R   ]   };

( Voici la réponse qui m'a guidé )

D'après ce que je peux dire, cela fonctionne et la touche Windows appropriée déclenche maintenant Hyper_R. Cependant, il semble que dans Ubuntu (Xubuntu pour être exact), Hyper et Super font en quelque sorte la même chose. Super + e lance donc l'éditeur, tout comme Hyper + e.

Je ne sais pas pourquoi et où je peux changer ce comportement. Je veux que Hyper et Super soient des modificateurs différents.

8
Alexander Rechsteiner

Pour une raison quelconque, Ubuntu assigne actuellement Super et Hyper à Mod4. Vous pouvez le voir dans/usr/share/X11/xkb/symboles/pc:

 key <SUPR> {   [ NoSymbol, Super_L ]   };
 modifier_map Mod4   { <SUPR> };

 key <HYPR> {   [ NoSymbol, Hyper_L ]   };
 modifier_map Mod4   { <HYPR> };

J'ai été capable de changer cela pour mettre super et hyper sur des modificateurs séparés sans avoir besoin d'être root ou de modifier les fichiers système. Je ne suis pas sûr que ce soit la meilleure solution car je ne suis certainement pas un expert en xkb, mais c'est une méthode qui a été fiable pour moi.

Commencez par créer un fichier de symboles locaux. J'ai le mien dans $ {HOME} /. Config/xkb/symboles/local. Cela assigne Super à Mod3 et 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> };
};

Recompilez ensuite la carte existante pour ajouter un "local":

setxkbmap -print | sed -e '/xkb_symbols/s/"[[:space:]]/+local&/' | xkbcomp -I${HOME}/.config/xkb - ${DISPLAY}

Mettez ceci dans un script à exécuter lorsque vous vous connectez. Vous pouvez l'exécuter en tant qu'utilisateur ordinaire.

10
ergosys

Avec xmodmap, vous pouvez modifier ce comportement avec 2 commandes:

## Hyper_L is mod4 by default, we will "move" it to Mod3
xmodmap -e "remove mod4 = Hyper_L"
xmodmap -e "add mod3 = Hyper_L"
2
Alex Stragies