la mejor manera sería no usar un script, sino cargar un teclado de dos capas (por ejemplo :) setxmodmap "us,se"
y redefinir el Ctrl- Escpara enviar ISO_Next_Group
Mire esta respuesta en xkb para ver cómo redefinir algunas claves sin necesidad de editar los archivos predeterminados principales (por lo tanto, no es necesario ser root). En el archivo de símbolos locales (por ejemplo:) ~/.xkb/symbols/mysymbols
ponga una pequeña sección como:
partial modifier_keys
xkb_symbols "ctrl_esc_toggle" {
key <ESC> {
type[Group1]="PC_CONTROL_LEVEL2",
symbols[Group1]= [ Escape, ISO_Next_Group ]
};
};
PC_CONTROL_LEVEL2 dice que el segundo símbolo de esa tecla se obtiene con Control (en lugar de Shift).
y en el archivo de mapa de teclas local (por ejemplo: ~/.xkb/keymap/mykbd
puede crearlo con setxkbmap "us,se" ; setxkbmap -print > ~/.xkb/keymap/mykbd
) cambie la línea xkb_symbols para agregar "mysymbols (ctr_esc_toggle)" para que tenga algo como:
xkb_symbols { include "pc+us+se:2+inet(evdev)+terminate(ctrl_alt_bksp)+compose(rwin)+mysymbols(ctr_esc_toggle)" };
(tenga en cuenta que "se: 2", el ": 2" le indica que cargue las definiciones de símbolos "se" como Grupo2; puede apilar varios grupos).
ahora puede cargarlo con: xkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd $DISPLAY
luego Ctrl-Esc cambiará entre los diseños "nos" y "se".
Sin embargo, tenga en cuenta que debe presionar Ctrl (y mantener) antes de Esc; Por otro lado, no funciona (requeriría definir un modificador virtual para Escape, y no sé cómo hacerlo)