web-dev-qa-db-fra.com

Swap Alt et Super

J'ai un air MacBook qui exécute Linux. Je veux échanger les touches alt et super des deux côtés du clavier les uns avec les autres.

Comment puis-je faire cela avec des outils CLI?

Mise à jour

Après la réponse de Drav Sloan, j'ai utilisé ce qui suit:

keycode 64 = Alt_L
keycode 133 = Super_L
remove Mod1 = Alt_L
remove Mod4 = Super_L
add Mod1 = Super_L
add Mod4 = Alt_L

keycode 108 = Alt_R
keycode 134 = Super_R
remove Mod1 = Alt_R
remove Mod4 = Super_R
add Mod1 = Super_R
add Mod4 = Alt_R
28
user24483

Une façon de réaliser cela est via xmodmap. Vous pouvez exécuter xev pour obtenir des événements clés. En cours d'exécution xev, une boîte doit apparaître et vous pouvez la concentrer et appuyer sur les touches que vous souhaitez échanger. Il devrait produire des détails similaires à pour le Alt clé:

KeyPress event, serial 28, synthetic NO, window 0x8800001,
  root 0x25, subw 0x0, time 2213877115, (126,91), root:(1639,475),
  state 0x0, keycode 14 (keysym 0xffe9, Alt_L), same_screen YES,
  XLookupString gives 0 bytes: 
  XmbLookupString gives 0 bytes: 
  XFilterEvent returns: False

Je suis sur un PC et je n'ai pas de "clé de commande", mais j'ai la "clé Windows" équivalente et XEV donne:

KeyPress event, serial 28, synthetic NO, window 0x8000001,
  root 0x25, subw 0x0, time 2213687746, (111,74), root:(1624,98),
  state 0x0, keycode 93 (keysym 0xffeb, Super_L), same_screen YES,
  XLookupString gives 0 bytes: 
  XmbLookupString gives 0 bytes: 
  XFilterEvent returns: False

Parce que xmodmap n'a aucune idée de state, et peut facilement casser des mappages clés, je vous suggère de faire un:

xmodmap -pke > defaults

Ensuite, nous créons un fichier XModmap:

keycode 14 = Alt_L
keycode 93 = Super_L
remove Mod1 = Alt_L
remove Mod4 = Super_L
add Mod1 = Super_L
add Mod4 = Alt_L

Notez comment j'utilise les codes clés qui xev sont retournés. Aussi ici, je ne remplace que les touches de super et alt de gauche (et laissant les bonnes à leur ancien comportement). Ensuite, nous pouvons simplement exécuter xmodmap, pour définir ces touches:

$ xmodmap -v modmap.file
! modmap:
! 1:  keycode 14 = Alt_L
        keycode 0xe = Alt_L
! 2:  keycode 93 = Super_L
        keycode 0x5d = Super_L
! 3:  remove Mod1 = Alt_L
! Keysym Alt_L (0xffe9) corresponds to keycode(s) 0xe
        remove mod1 =  0xe
! 4:  remove Mod4 = Super_L
! Keysym Super_L (0xffeb) corresponds to keycode(s) 0x5d
        remove mod4 =  0x5d
! 5:  add Mod1 = Super_L
        add mod1 = Super_L
! 6:  add Mod4 = Alt_L
        add mod4 = Alt_L
!
! executing work queue
!
        keycode 0xe = Alt_L
        keycode 0x5d = Super_L
        remove mod1 =  0xe
        remove mod4 =  0x5d
        add mod1 = Super_L
        add mod4 = Alt_L

Vous pouvez courir sans le -v (Verbose) commutateur pour la course silencieuse, mais je le trouve utile si vous avez commis des erreurs dans votre fichier MODMAP. Si les choses vont en désordre, alors réappliquez simplement vos valeurs par défaut:

xmodmap defaults

ModMap est souvent couru au démarrage de X. Vous pouvez donc les appliquer comme des paramètres par défaut si vous mettez vos commandes ModMap dans ~/.xmodmaprc.

22
Drav Sloan

Si vous voulez seulement échanger Alt gauche et Super Key exécutez la commande dans votre terminal:

setxkbmap -option altwin:swap_alt_win

Pour restaurer le comportement par défaut, il suffit d'utiliser:

setxkbmap -option

NOTE: Ceci est temporaire. Si vous souhaitez que les effets l'ajoutent définitivement à votre fichier de démarrage.

19
coljamkop
$ xmodmap -pke

Prenez note que les codes clés Alt et Super sont liés à, puis dans votre dossier à domicile, ouvrez/créez un nouveau fichier .xmodmaprc. Par exemple, mes clés super/alt sont liées en tant que telle

keycode  64 = Alt_L Meta_L Alt_L Meta_L
keycode 108 = Alt_R Meta_R Alt_R Meta_R
keycode 133 = Super_L NoSymbol Super_L
keycode 134 = Super_R NoSymbol Super_R

Mais pour échanger les clés, vous mettriez ce qui suit dans .xmodmaprc

keycode  64 = Super_L NoSymbol Super_L
keycode 108 = Super_R NoSymbol Super_R
keycode 133 = Alt_L Meta_L Alt_L Meta_L
keycode 134 = Alt_R Meta_R Alt_R Meta_R
4
cepkos

Si vous êtes l'une des personnes malheureuses comme moi qui ne pouvaient pas obtenir xModmap pour passer à droite alt avec Ctrl droit, alors peut-être que cela aidera.

Si vous appuyez sur la droite ALT et E et vous obtenez que cette solution est pour vous (amélioration nécessaire).

Exécutez ceci dans le terminal (vérifiez vos codes clés avec Xev):

xmodmap -e "keycode 108 = Alt_R Meta_R Alt_R Meta_R"

ensuite, mettez ce code dans votre fichier .xmodmap:

remove Control = Control_R
remove Mod1 = Alt_R
keycode 105 = Alt_R
keycode 108 = Control_R
add Control = Control_R
add Mod1 = Alt_R

Ce code définit votre clé Alt_gr en Alt_R, puis il sonne Alt_R avec Ctrl_R.

Si vous voulez que cela reste après votre déconnexion, placez les commandes suivantes dans l'un de vos fichiers Shell de démarrage, par exemple ~/.profile:

if [ -f $HOME/.Xmodmap ]; then
  xmodmap -e "keycode 108 = Alt_R Meta_R Alt_R Meta_R"
  /usr/bin/xmodmap $HOME/.Xmodmap
fi

sources: Question1Question2

0
Mugur 'Bud' Chirica