Lier alt mais pas altgr dans i3

J'utilise Mod4 pour la plupart des keybindings dans i3, mais j'utilise Mod1 pour cela:

bindsym Mod1+a workspace a bindsym Mod1+b workspace b bindsym Mod1+c workspace c bindsym Mod1+d workspace d ... 

Cependant cela lie à la fois alt et altgr, ce qui est indésirable puisque j'utilise altgr + <letter> pour taper des caractères.

xev dit alt est Alt_L et altgr est Alt_R, mais bindsym Alt_L+a ne fonctionne pas

En fin de count cela dépend de ce que montre xmodmap pour mod1. Par exemple, s'il montre que Alt_L et Alt_R sont sur le même modificateur, vous devez déplacer ce dernier vers un autre (sur les 5 modificateurs disponibles) pour éviter les conflits.

Voici quelques pages donnant des exemples:

  • Remappage Alt_R avec xmodmap désactiver la commutation de terminal VC montre un exemple où l'user a déplacé Alt_R de mod1 à mod4 (et a rencontré des problèmes). Vous devriez revoir la sortie de xmodmap avant de la changer.
  • xmodmap sur ArchLinux montre un exemple détaillé de manipulation des modificateurs. Pour déplacer une key, vous devez l' append à un modificateur et l' effacer de l'autre.

L'un des xmodmap utilisation de xmodmap est qu'il ne connaît pas toujours le bon code d'un symbole de key (tel que Alt_R ). Quand je rencontre cela, je peux habituellement contourner ça en regardant dans la sortie de

 xmodmap -pk 

pour le symbole de key et dans le script, affectez ce code de key. Par exemple, sur une machine xmodmap -pk montre

 108 0xffea (Alt_R) 0x0000 (NoSymbol) 0xffea (Alt_R) 

et en utilisant ce script

 keycode 108 = Alt_R remove mod1 = Alt_R add mod3 = Alt_R 

change la sortie de ceci:

 xmodmap: up to 4 keys per modifier, (keycodes in parentheses): shift Shift_L (0x32), Shift_R (0x3e) lock Caps_Lock (0x42) control Control_L (0x25), Control_R (0x69) mod1 Alt_L (0x40), Alt_R (0x6c), Meta_L (0xcd) mod2 Num_Lock (0x4d) mod3 mod4 Super_L (0x85), Super_R (0x86), Super_L (0xce), Hyper_L (0xcf) mod5 ISO_Level3_Shift (0x5c), Mode_switch (0xcb) 

pour ça:

 xmodmap: up to 4 keys per modifier, (keycodes in parentheses): shift Shift_L (0x32), Shift_R (0x3e) lock Caps_Lock (0x42) control Control_L (0x25), Control_R (0x69) mod1 Alt_L (0x40), Meta_L (0xcd) mod2 Num_Lock (0x4d) mod3 Alt_R (0x6c) mod4 Super_L (0x85), Super_R (0x86), Super_L (0xce), Hyper_L (0xcf) mod5 ISO_Level3_Shift (0x5c), Mode_switch (0xcb) 

(Pour cette machine particulière, la solution de contournement n'est pas nécessaire).