cara terbaik adalah dengan tidak menggunakan skrip, tetapi untuk memuat keyboard dua lapis (misalnya :) setxmodmap "us,se"
dan mendefinisikan ulang Ctrl- Escuntuk mengirim ISO_Next_Group
Lihatlah jawaban ini di xkb untuk cara mendefinisikan kembali beberapa kunci tanpa perlu mengedit file default utama (dengan demikian, tidak perlu menjadi root). Dalam file simbol lokal (mis .:), ~/.xkb/symbols/mysymbols
letakkan bagian kecil sebagai:
partial modifier_keys
xkb_symbols "ctrl_esc_toggle" {
key <ESC> {
type[Group1]="PC_CONTROL_LEVEL2",
symbols[Group1]= [ Escape, ISO_Next_Group ]
};
};
PC_CONTROL_LEVEL2 memberi tahu bahwa simbol sencond untuk kunci tersebut didapat dengan Control (bukan Shift).
dan di file keymap lokal (misalnya :; ~/.xkb/keymap/mykbd
Anda dapat membuatnya dengan setxkbmap "us,se" ; setxkbmap -print > ~/.xkb/keymap/mykbd
) ubah baris xkb_symbols untuk menambahkan "mysymbols (ctr_esc_toggle)" sehingga Anda akan memiliki sesuatu seperti:
xkb_symbols { include "pc+us+se:2+inet(evdev)+terminate(ctrl_alt_bksp)+compose(rwin)+mysymbols(ctr_esc_toggle)" };
(perhatikan "se: 2", ": 2" memberitahu untuk memuat definisi simbol "se" sebagai Group2; Anda dapat menumpuk berbagai grup).
Anda sekarang dapat memuatnya dengan: xkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd $DISPLAY
lalu Ctrl-Esc akan beralih antara tata letak "us" dan "se".
Perhatikan bahwa Anda perlu menekan Ctrl (dan tahan) sebelum Esc; cara lain itu tidak bekerja (itu akan memerlukan mendefinisikan pengubah virtual untuk Escape, dan saya tidak tahu bagaimana melakukannya)