Saya ingin skrip bash yang berganti-ganti antara:
setxkbmap se
dan setxkbmap us
.
Lalu, niat saya adalah memetakan skrip itu CtrlEscmelalui pintasan khusus> Keyboard.
Intinya adalah bahwa saya ingin mengganti tata letak keyboard dengan CtrlEscape. Bagaimana saya bisa menerapkannya?
shell-script
x11
keyboard-layout
xkb
Fredrik
sumber
sumber
Jawaban:
Saya tidak tahu Desktop Desktop apa yang Anda jalankan, bagaimana Anda akan menetapkan tombol pintas dapat bervariasi, tetapi skrip ini berfungsi secara global, setidaknya pada saya
Ubuntu 12.04 box
danArch Linux
:sumber
xmodmap
seperti pada jawaban saya di bawah ini.setxkbmap
. Hal yang sama berlaku jika saya mengganti tata letak menggunakan pintasan yang diatur melaluikeyboard shortcuts
GUI pada LMDE saya.setxkbmap
hanya berubah ketika saya beralih menggunakannya.Ada berbagai jawaban untuk pertanyaan serupa . Namun, tidak satupun dari mereka bekerja dengan baik untuk saya.
Skrip berikut harus berfungsi dalam semua kasus. Ini tentu berfungsi pada sistem debian saya saat mengganti tata letak dengan
setxkbmap
:Script mem-parsing output xmodmap untuk melihat apakah layout saat ini adalah "us" atau "se". Di tata letak "kami", SHIFT+ 7dipetakan ke "ampersand". Jika Anda hanya akan beralih antara tata letak "kami" dan "se", memiliki "ampersand" 7berarti Anda menggunakan tata letak "kami" dan skrip akan berubah menjadi "se". Jika Anda tidak mengaktifkan "ampersand" 7, skrip beralih ke "kami".
sumber
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_GroupLihatlah 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: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 dengansetxkbmap "us,se" ; setxkbmap -print > ~/.xkb/keymap/mykbd
) ubah baris xkb_symbols untuk menambahkan "mysymbols (ctr_esc_toggle)" sehingga Anda akan memiliki sesuatu seperti:(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)
sumber
leftwin+leftalt+space
kelihatannya?{ include "pc+us+ru:2+inet(evdev)+group(win_space_toggle)" };