Jak zmienić klawiatury z wiersza poleceń?

65

Jak zmienić układ klawiatury z wiersza polecenia? Na przykład chcę przejść z języka angielskiego na hebrajski. Jestem w stanie to zrobić z lightdm z małą ikoną w rogu ekranu.

Eyal
źródło

Odpowiedzi:

43

Z terminala

Angielski na hebrajski i odwrotnie z Alt+Shift

setxkbmap -option grp:alt_shift_toggle us,il

Za pomocą tego polecenia możesz zobaczyć wszystkie aliasy regionalne

cat /etc/locale.alias

Więcej informacji o setxkbmap w instrukcji

man setxkbmap
NickTux
źródło
Informacje o tym, jak ustawić go przy rozruchu: wiki.gentoo.org/wiki/Keyboard_layout_switching
Adriano P
52

Wszystkie różne mapy klawiszy można znaleźć w następujących lokalizacjach:

/usr/share/keymaps/i386/
/usr/share/kbd/keymaps/i386/
/usr/share/X11/xkb/symbols/

Aby zmienić układ klawiatury (np. Na hiszpański) w wierszu poleceń systemu Linux, wpisz następujące polecenie:

loadkeys es

Dla X:

setxkbmap es

Aby wprowadzić te zmiany w całym systemie, zakładając, że używasz Ubuntu, możesz użyć:

sudo dpkg-reconfigure console-setup
Dr_Bunsen
źródło
Ma to wpływ na tty1, tty2 itp., Ale nie ma efektu w X. Chcę to zrobić w X, w taki sam sposób, jak działa przełącznik klawiatury w lightdm.
Oko
Dodałem polecenie w odpowiedzi, czy tego właśnie szukałeś?
Dr_Bunsen
TAK! Dzięki. Czy możesz również zaktualizować swoją odpowiedź, aby wspomnieć o klawiszach ładujących, pisanych za pomocą „s”?
Oko
2
tak zrobię i nie, dziękuję. Po prostu oznacz jako rozwiązany, aby wszyscy wiedzieli.
Dr_Bunsen
dla użytkowników redhat następujące cenne elementy: /usr/share/X11/xkb/symbols/isetxkbmap es
Peter Butkovic
13

Ubuntu 13.10 lub nowszy

Działa to lepiej niż setxkbmap ze wskaźnikiem układu klawiatury Gnome / Unity.

gsettings set org.gnome.desktop.input-sources current 0

0 to indeks układu (0 domyślny lub górny układ). Układy indeksowane od 0.

Dla łatwego użycia utwórz alias.

user.dz
źródło
2
Ta odpowiedź jest lepsza, ponieważ faktycznie zmienia wskaźnik. Właśnie tego szukałem.
Ainar-G
1
dzięki. użył twojej odpowiedzi również tutaj: askubuntu.com/a/984981/6193
Alexey
3
To nie działa w GNOME 3.26. Mówi: „Ten klucz jest przestarzały i ignorowany”.
hugomg
@hugomg, w tej chwili nie mam jeszcze dostępu do nowszego gnoma. ale możesz spróbować użyć dconf-editornarzędzia i sprawdzić /org/gnome/desktop/. mogą po prostu zmienić jego nazwę.
user.dz
12
setxkbmap us,il -option "lv3:ralt_alt,grp:alt_shift_toggle"

to polecenie pozwala przełączać się między angielskim a hebrajskim tylko przez right alt+ shifti uratować cię od left alt+ shift.

ansar313
źródło
3

Wydaje się, że nie ma standardowego narzędzia CLI, ale xkb-switch jest małym narzędziem typu open source do wykonywania tego zadania. Właśnie przetestowałem go z Ubuntu 16.04.4 LTS i działa bezbłędnie.

$ xkb-switch       # display current group
ua
$ xkb-switch -l    # list groups
us
ua
$ xkb-switch -s us # switch to a named group
$

Wygląda to lepiej niż inne rozwiązania, ponieważ setxkbmap <name>rujnuje wszystkie opcje i setxkbmap -layout <name>chociaż zachowuje opcje, nadal nie zmienia wskaźnika paska zadań ani ustawienia grp_ledif.


Zastrzeżenie

Jeśli twoje ~/.config/kxkbrczastosowania LayoutLoopCount(na przykład jest ona ustawiona na mniej niż całkowita liczba układów wymienionych w LayoutList), na przykład:

LayoutList=us,ua,th,de
LayoutLoopCount=2
Options=grp_led:scroll,grp:rwin_switch,compose:menu,lv3:ralt_switch,
        nbsp:level2,grp:rctrl_toggle,misc:typo

następnie xkb-switchpozwolił tylko przełączać pomiędzy układami w obecnej grupie.


Wywołaj przy zablokowaniu ekranu

Zauważyłem twój komentarz:

Tuż przed włączeniem wygaszacza ekranu chcę przejść na angielski, aby po powrocie łatwo było wpisać hasło.

To był właśnie mój cel, więc oto odpowiedź:
Aby to zrobić, wystarczy tylko owinąć go w skrypt, który polubi dbus-monitoromawiany tutaj .

bytebuster
źródło
3

Korzystając z gsettings w wersji 18.04+ z Gnome, możesz zarówno dodawać układy klawiatury, jak i przełączać się między nimi z wiersza poleceń lub przełącznika układu klawiatury na pulpicie.

1. Przedstaw układy klawiatury i opcje:

$ gsettings list-recursively org.gnome.desktop.input-sources
org.gnome.desktop.input-sources show-all-sources false
org.gnome.desktop.input-sources xkb-options ['terminate:ctrl_alt_bksp']
org.gnome.desktop.input-sources per-window false
org.gnome.desktop.input-sources current uint32 1
org.gnome.desktop.input-sources mru-sources @a(ss) []
org.gnome.desktop.input-sources sources [('xkb', 'es'), ('xkb', 'no')]

2. Dodawanie układów klawiatury:

$ gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'us'), ('xkb', 'no'),('xkb','gr')]"
$ gsettings get org.gnome.desktop.input-sources sources
[('xkb', 'es'), ('xkb', 'no'), ('xkb', 'gr')]

3.Zmiana bieżącego układu klawiatury z wiersza poleceń:

$ gsettings set org.gnome.desktop.input-sources current 1

Ponieważ mamy teraz 3 różne języki, mamy trzy opcje od 0 do 2, z których 1 to hiszpański, 2 to norweski, a 3 grecki. Zatem ustawienie prądu na 1 powyżej powoduje, że norweski układ klawiatury jest obecny.

4. Lista wszystkich możliwych układów klawiatury:

cat //usr/share/X11/xkb/rules/base.lst

5.Zmiana układu klawiatury za pomocą skrótu klawiaturowego:

Skrót klawiaturowy jest wstępnie skonfigurowany do zmiany układu klawiatury. Obecny skrót:

$ gsettings get org.gnome.desktop.wm.keybindings switch-input-source
['<Super>space']

Nowy skrót można ustawić za pomocą zestawu gsetting, ale uważaj, aby nie używać już używanego skrótu. Aby wyświetlić listę wszystkich używanych skrótów:

$ gsettings list-recursively org.gnome.desktop.wm.keybindings
org.gnome.desktop.wm.keybindings cycle-windows-backward ['<Shift><Alt>Escape']
org.gnome.desktop.wm.keybindings minimize ['<Super>h']
org.gnome.desktop.wm.keybindings move-to-workspace-7 @as []
org.gnome.desktop.wm.keybindings move-to-workspace-8 @as []
org.gnome.desktop.wm.keybindings move-to-workspace-9 @as []
org.gnome.desktop.wm.keybindings move-to-monitor-left ['<Super><Shift>Left']
...
ElToro1966
źródło
To najbardziej wyczerpująca odpowiedź, za to.
Julien Chappuis
1

W przypadku Ubuntu 18.04 + Gnome inne odpowiedzi nie działały dla mnie, ale to:

gdbus call --session --dest org.gnome.Shell \
--object-path /org/gnome/Shell \
--method org.gnome.Shell.Eval \
 "imports.ui.status.keyboard.getInputSourceManager().inputSources[0].activate()"

Argument w „inputSources [0]” to indeks układu klawiatury, taki sam jak w przypadku rozwiązania gsettings.

Znalazłem go na linux StackExchange .

1 mil
źródło
-1

Właśnie z ciekawości, dlaczego miałbyś to zrobić? Po co otwierać terminal, a oni wpisują polecenie zmiany układu klawiatury, gdy można to zrobić za pomocą prostego skrótu klawiaturowego! Zakładając, że używasz Ubuntu, działa jak Windows+Space

EetSandhu
źródło
2
To wydaje się być raczej komentarzem, a nie odpowiedzią.
WinEunuuchs2Unix
Tuż przed włączeniem wygaszacza ekranu chcę przejść na angielski, aby po powrocie łatwo było wpisać hasło.
Eyal
jest także przydatny do tworzenia niestandardowych skrótów klawiaturowych
Vassilis
To nie działa w Ubuntu 16.04 na virtualbox.
Juha Untinen,