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

8

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

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

modification de 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 bonne touche Windows déclenche désormais 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 c'est ou où je peux changer ce comportement. Je veux que Hyper et Super soient des modificateurs différents.

Alexander Rechsteiner
la source
Il y avait quelque chose là- dessus , bien que je ne pense pas que le dialogue existe maintenant en 13h10 ...
Wilf
Mais cela doit être configurable quelque part, non?
Alexander Rechsteiner
Vous pourrez peut-être les trouver dansdconf-editor
Wilf
1
Merci, mais pas de chance. Merde, tout ce truc de remappage de clavier sur Linux me donne du diabète.
Alexander Rechsteiner
+1: concordance (sur la partie diabète). Je n'ai pas pu trouver un guide agréable, complet et détaillé sur la gestion du clavier dans Ubuntu. Il existe une série d'interactions entre gnome-control-center, gnome-tweak-tool, xkbd, xmodmap qui sont assez complexes et, pire, non documentées. Si vous trouvez un lien, partagez-le! (Bien que je soupçonne que presque personne ne le sait pour de vrai. Il suffit de voir à l'impossibilité de bugs.launchpad.net/ubuntu/+source/gnome-settings-daemon/+bug/… )
Rmano

Réponses:

11

Pour une raison quelconque, Ubuntu attribue 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 pu 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 le meilleur moyen car je ne suis certainement pas un expert xkb, mais c'est un moyen qui a été fiable pour moi.

Créez d'abord un fichier de symboles locaux. J'ai le mien dans $ {HOME} /. Config / xkb / symboles / local. Cela affecte 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-le dans un script à exécuter lorsque vous vous connectez. Vous pouvez l'exécuter en tant qu'utilisateur ordinaire.

ergosys
la source
Est-il possible de simplement éditer ce fichier pour changer HYPR en Mod3?
Alex Moore-Niemi
3
Tu peux le faire. L'avantage de ne pas modifier en place est qu'une mise à jour du système n'écrasera pas vos modifications.
ergosys
Pour moi, je l'ai fait travailler brièvement avec raw.githubusercontent.com/jabbalaci/dotfiles/master/.Xmodmap bien qu'il continue de s'arrêter mystérieusement ...
Alex Moore-Niemi
Un autre inconvénient de la méthode de réponse que j'ai trouvée est que si votre clavier est débranché ou perd la communication USB en raison d'un problème aléatoire, le script doit être exécuté à nouveau. Il existe probablement un moyen de le réexécuter automatiquement, mais je ne l'ai pas examiné. Heureusement, le problème aléatoire ne se produit qu'une fois par mois pour moi. Si vous modifiez les fichiers système, cela ne devrait pas poser de problème. Il y a donc des avantages et des inconvénients.
ergosys
1
J'utilise ça aussi. Il existe déjà une configuration prédéfinie pour cela, donc j'utilise: setxkbmap -option 'caps: hyper'
ergosys
3

Avec xmodmapvous pouvez changer 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"
Alex Stragies
la source