Как мне изменить клавиатуру из командной строки?

Как я могу изменить раскладку клавиатуры из командной строки? Например, я хочу переключиться с английского на иврит. Я могу сделать это из lightdm с помощью маленького значка в углу моего экрана.

Вы можете найти все различные ключевые карты в следующих местах:

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

Чтобы изменить раскладку клавиатуры (например, на испанскую) в командной строке Linux, введите следующую команду:

loadkeys es

Для X:

setxkbmap es

Чтобы внести эти изменения в масштабах всей системы, предполагая, что вы используете Ubuntu, вы можете использовать следующее:

sudo dpkg-reconfigure console-setup

С терминала

С английского на иврит и наоборот с Alt + Shift

setxkbmap -option grp:alt_shift_toggle us,il

Вы можете увидеть все псевдонимы локали с помощью этой команды

cat /etc/locale.alias

Более подробная информация о setxkbmap приведена в руководстве пользователя

man setxkbmap

Ubuntu 13.10 или более поздней версии

Это работает лучше, чем setxkbmap с индикатором раскладки клавиатуры Gnome / Unity.

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

0 - это индекс макета (0 по умолчанию или верхний макет). Макеты индексируются, начиная с 0.

Для удобства использования создайте псевдоним.

setxkbmap us,il -option "lv3:ralt_alt,grp:alt_shift_toggle"

эта команда позволяет переключаться между английским и ивритом только с помощью right alt+shift и спасти тебя от left alt+shift.

Похоже, что стандартного инструмента CLI не существует, но xkb-переключатель это небольшой инструмент с открытым исходным кодом для выполнения этой работы. Только что протестировал его с Ubuntu 16.04.4 LTS, и он работает безупречно.

$ xkb-switch       # display current groupua$ xkb-switch -l    # list groupsusua$ xkb-switch -s us # switch to a named group$

Это выглядит лучше, чем другие решения, потому что setxkbmap <name> разрушает все варианты, и setxkbmap -layout <name>, хотя он сохраняет параметры, он по-прежнему не может изменить ни индикатор панели задач, ни grp_led если установлено.


Предостережение

Если ваш ~/.config/kxkbrc использует LayoutLoopCount (например, он установлен на меньшее значение, чем общее количество макетов, перечисленных в LayoutList), как это:

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

затем xkb-switch это позволит вам переключаться только между макетами в текущей группе.


Вызов при блокировке экрана

Я заметил ваш комментарий:

Прямо перед включением моей заставки я хочу переключиться на английский, чтобы было легко ввести свой пароль, когда я вернусь в систему.

Это было именно моей целью, так что вот ответ:
Чтобы сделать это, вам нужно только обернуть его в скрипт, подключающийся к dbus-monitor как обсуждалось здесь.

С помощью настройки gsettings в версии 18.04+ с Gnome вы можете как добавлять дополнительные раскладки клавиатуры, так и переключаться между ними из командной строки или с помощью переключателя раскладки клавиатуры на рабочем столе.

1.Представьте раскладки и опции клавиатуры:

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

2.Добавление раскладок клавиатуры:

$ 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.Изменение текущей раскладки клавиатуры из командной строки:

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

Поскольку теперь у нас есть 3 разных языка, у нас есть три варианта от 0 до 2: 1 - испанский, 2 - норвежский и 3 - греческий. Таким образом, установка текущий до 1 выше делает норвежский язык текущей раскладкой клавиатуры.

4.Список всех возможных раскладок клавиатуры:

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

5.Изменение раскладки клавиатуры с помощью сочетания клавиш:

Сочетание клавиш предварительно настроено для изменения раскладки клавиатуры. Настоящий ярлык:

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

Новый ярлык можно установить с помощью gsetting set, но будьте осторожны, чтобы не использовать ярлык, который уже используется. Чтобы перечислить все используемые ярлыки:

$ gsettings list-recursively org.gnome.desktop.wm.keybindingsorg.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']...

Для Ubuntu 18.04 + Gnome другие ответы не сработали для меня, но это сработало:

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()"

Аргумент в "inputSources[0]" - это индекс раскладки клавиатуры, такой же, как и для решения gsettings.

Нашел его на linux StackExchange.

Я смог найти лучшую и наиболее стабильную комбинацию xkb-switch, setxkbmap и ibus. IBus позволяет вводить пиньинь и xkb-switch является стабильным, в то время как setxkbmap возвращает обратно набор раскладок клавиатуры.

Это важно при непосредственном переключении на язык, например Shift+Alt+1...4. Почему бы не использовать только IBU? Он постоянно застревает, потому что требуется перезагрузка, чтобы вернуть раскладку клавиатуры к жизни после перехода на нелатинскую раскладку клавиатуры. По крайней мере, в FireFox, см. Мне нужно выйти и перезапустить ibus-daemon, чтобы заставить ibus-chewing работать. #2319.

Отказ от ответственности: Протестировано на openSUSE Leap 15.3 xfce4 и xkb-switch компилируется из исходного кода

Чтобы это сработало, вы должны создать файлы сценариев с этими командами и назначить сочетания клавиш для их запуска. Также вы можете отключить сочетание клавиш Alt + Shift в настройках переключения клавиатуры, чтобы устранить неожиданное поведение.

Итак, вот мой набор команд:

Shift+Alt+1 - переключитесь на английский:

killall ibus-daemonsetxkbmap us,ru,ptxkb-switch -s us

Shift+Alt+2 - переключиться на русский язык:

killall ibus-daemonsetxkbmap us,ru,ptxkb-switch -s ru

Shift+Alt+3 - переключитесь на китайский мандаринский Пиньинь:

ibus-daemon -dibus reset-configgsettings set org.freedesktop.ibus.general preload-engines "['libpinyin']"setxkbmap us,ru,ptxkb-switch -s usibus engine libpinyin

Shift+Alt+4 - переключитесь на португальский:

killall ibus-daemonsetxkbmap us,ru,ptxkb-switch -s pt

Также назначьте следующий скрипт для запуска при автозапуске системы.

killall ibus-daemon

Просто из любопытства, зачем тебе это делать? Зачем вам открывать терминал, и они вводят команду для переключения раскладки клавиатуры, когда вы можете сделать это с помощью простого сочетания клавиш! Предполагая, что вы используете Ubuntu, это выглядит следующим образом Windows + Space