la meilleure façon serait de ne pas utiliser de script, mais de charger un clavier à deux couches (ex :) setxmodmap "us,se"
et de redéfinir le Ctrl- Escpour envoyer ISO_Next_Group
Regardez cette réponse sur xkb pour savoir comment redéfinir certaines clés sans avoir besoin de modifier les principaux fichiers par défaut (donc pas besoin d'être root). Dans le fichier de symboles locaux (par exemple:) ~/.xkb/symbols/mysymbols
mettez une petite section comme:
partial modifier_keys
xkb_symbols "ctrl_esc_toggle" {
key <ESC> {
type[Group1]="PC_CONTROL_LEVEL2",
symbols[Group1]= [ Escape, ISO_Next_Group ]
};
};
PC_CONTROL_LEVEL2 indique que le symbole sencond pour cette clé est obtenu avec Control (au lieu de Shift).
et dans le fichier keymap local (par exemple:; ~/.xkb/keymap/mykbd
vous pouvez le créer avec setxkbmap "us,se" ; setxkbmap -print > ~/.xkb/keymap/mykbd
) changez la ligne xkb_symbols pour ajouter "mysymbols (ctr_esc_toggle)" afin que vous ayez quelque chose comme:
xkb_symbols { include "pc+us+se:2+inet(evdev)+terminate(ctrl_alt_bksp)+compose(rwin)+mysymbols(ctr_esc_toggle)" };
(notez le "se: 2", le ": 2" indique de charger les définitions des symboles "se" en tant que Groupe2; vous pouvez empiler différents groupes).
vous pouvez maintenant le charger avec: xkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd $DISPLAY
alors Ctrl-Esc bascule entre les dispositions "us" et "se".
NOTEZ cependant que vous devez appuyer sur Ctrl (et maintenir) avant Esc; dans l'autre sens, cela ne fonctionne pas (il faudrait définir un modificateur virtuel pour Escape, et je ne sais pas comment le faire)