Bagaimana cara mengubah tata letak keyboard yang saat ini dipilih dari baris perintah?

12

Saya memiliki tata letak keyboard (dua di antaranya) dan beralih di antaranya dikonfigurasi melalui perintah berikut:

setxkbmap -layout us,ru -option -option "grp:lctrl_lshift_toggle,ctrl:nocaps"

Sekarang saya ingin beralih ke ustata letak, menggunakan beberapa perintah baris perintah. Apakah itu mungkin?

Rogach
sumber

Jawaban:

13

Anda dapat menggunakan xkb-switch ( -nberalih ke tata letak berikutnya):

xkb-switch -n

atau xkblayout-state (dengan set +1untuk membungkus, dalam kasus Anda):

xkblayout-state set +1

atau xtedari xautomation untuk mensimulasikan tombol Control_L+ Shift_Ltekan / lepaskan:

xte 'keydown Control_L' 'keydown Shift_L' 'keyup Shift_L' 'keyup Control_L'
don_crissti
sumber
xkblayout-state sangat bagus, terima kasih! Saya hanya menggunakan xkblayout-state set 1, dan saya langsung mendapatkan ustata letak.
Rogach
2

Pencarian Stack Exchange untuk kbdmap menemukan halaman ini tanpa menyebutkan kata itu. Untuk kejelasan, inilah jawabannya (tidak persis pas dengan tag X11 dari pertanyaan, tetapi seharusnya membantu seseorang) ...

Ketika terbatas pada konsol virtual

- tanpa X.

kbdmap (1)

kbdmap, vidfont- ujung depan untuk syscons dan vt

... memungkinkan pengaturan mudah keymaps yang tersedia ...

Sungguh, itu mudah dan (bagi saya, mengubah ke tata letak keyboard Inggris) efektif.

Saat menggunakan X

- misalnya, dengan TrueOS Desktop berbasis FreeBSD.

Dari pos 5 di bawah Ubah tata letak keyboard? | Forum FreeBSD (2015-08-03):

kbdmapuntuk konsol. setxkbmapadalah utilitas yang Anda inginkan untuk X11. ...

Ada peringatan, misalnya ketika mengubah ke U nited Kingdom:

$ kbdmap
kbdcontrol: getting keymap: Inappropriate ioctl for device
You are not on a virtual console - expect certain strange side-effects
lang_default = en
dialect = en_...UTF-8
lang_abk = en

…

keymap="uk.kbd"
$ 
Graham Perrin
sumber
1

Bergantung pada distro untuk tata letak keyboard, perintahnya adalah

loadkeys <path/to/file>

loadkey /lib/kbd/keymaps/i386/qwerty/pt_PT.map.gz

Jika saya ingat dengan benar. Juga periksa manual untuk memuat kunci jika Anda ingin menetapkan kunci spesifik untuk perilaku tertentu.

BitsOfNix
sumber
Masalahnya adalah bahwa setelah saya lakukan (misalnya) loadkeys us, itu me-reset pengaturan yang saya buat dengan setxkbmap (dua tata letak dan beralih di antara mereka)
Rogach
Sejauh yang saya tahu ini adalah perintah untuk mengubah tata letak, jika Anda memiliki yang spesifik, maka saya kira cara terbaik adalah dengan memiliki alias di shell Anda yang akan memanggil loadkeys dengan pengaturan Anda. ex: load_us akan memuat keyboard kita dan sebenarnya akan memanggil loadkey /lib/kbd/keymaps/i386/qwerty/us.map.gz atau serupa. Dan hal yang sama untuk tata letak lainnya.
BitsOfNix
Tapi bagaimana cara saya mengubah pengaturan keyboard setelahnya? Saat ini, saya mengubah tata letak dengan menekan Ctrl-Shift, menggunakan sekrup loadkeys itu.
Rogach
biarkan membuat langkah kembali ke sini, dari baris perintah Saya berasumsi bahwa Anda menyebutkan terminal tty. Berarti Anda tidak menggunakan xterm / terminology / gnome-terminal atau emulator lainnya tetapi pada kenyataannya Anda berada di lingkungan tanpa X server. Mengambil ini maka Anda perlu menggunakan loadkeys, sesuai pertanyaan Anda, saya memberi Anda baris perintah, apa yang sebenarnya Anda inginkan tampaknya menjadi jalan pintas kunci. Jika Anda memiliki kunci khusus yang akan dipetakan, maka Anda perlu membuat tata letak dan memuat sendiri lalu atas permintaan dengan memuat kunci dari sudut pandang cli. Jika Anda ingin pintasan, perbarui pertanyaan Anda.
BitsOfNix
Tidak, saya memang menggunakan lingkungan grafis dan terminal gnome pada khususnya. Hanya saja saya perlu mengubah program tata letak X, sebagai reaksi terhadap beberapa peristiwa - dengan demikian, tty stuff tidak akan berfungsi.
Rogach
0

Lihatlah artikel howto forge ini berjudul: Mengubah Tata Letak Bahasa & Keyboard Pada Berbagai Distribusi , untuk berbagai perintah untuk mengubah tata letak keyboard Anda pada distro yang berbeda.

Sebagian besar perintah ini hadir sebagai GUI tetapi jika Anda melihatnya sebagian besar dapat dijalankan dari baris perintah juga. Misalnya saya menggunakan Fedora (distro berbasis Red Hat). Perintah system-config-keyboardsaat dijalankan tanpa argumen menunjukkan kepada saya GUI.

Tetapi jika saya menjalankannya system-config-keyboard --helpdapat dijalankan dari baris perintah juga:

$ system-config-keyboard --help
Usage: system-config-keyboard [--help] [--noui] [--text] [<keyboardtype>]
       --help            Print out this message.
       --noui            Run in command line mode.
       --text            Run in text interface mode.

       <keyboardtype> options are: ar-azerty, ar-azerty-digits, ar-digits, ar-qwerty, ar-qwerty-digits, be-latin1, ben, ben-probhat, bg_bds-utf8, bg_pho-utf8, br-abnt2, cf, croat, cz-lat2, cz-us-qwertz, de, de-latin1, de-latin1-nodeadkeys, dev, dk, dk-latin1, dvorak, es, et, fi, fi-latin1, fr, fr-latin1, fr-latin9, fr-pc, fr_CH, fr_CH-latin1, gr, guj, gur, hu, hu101, ie, is-latin1, it, it-ibm, it2, jp106, ko, la-latin1, mk-utf, nl, no, pl2, pt-latin1, ro, ro-cedilla, ro-std, ro-std-cedilla, ru, sg, sg-latin1, sk-qwerty, slovene, sr-cy, sr-latin, sv-latin1, tj, tml-inscript, tml-uni, trq, ua-utf, uk, us, us-acentos

Jadi untuk mengubah tata letak keyboard saya ke bahasa Rusia, saya dapat menjalankan perintah berikut:

$ system-config-keyboard ru
slm
sumber