Я использую GNOME 3.22.1, но проблема существует с 3.18.
До этого (не помню точную версию) я мог переключать раскладку клавиатуры, используя xkb-witch , простое приложение, которое использует привязки X.org под капотом.
После 3.18, если вы запустите xkb-switch, раскладка клавиатуры не будет переключаться в gnome. Дальнейшие исследования показали, что переключение раскладки работает, но в течение очень короткого промежутка времени.
Если вы запустите этот скрипт:
for i in $(seq 1000); do
lang=$(xkb-switch -s ru; xkb-switch);
if [[ "$lang" == "ru" ]]; then
echo $lang;
fi;
done
Вы получите от 3 до 20 «удачных» переключений раскладки, в зависимости от того, насколько вам повезло.
После поиска этой проблемы я получил следующий совет :
gsettings set org.gnome.desktop.input-sources current 0
Настройка изменяется, но макет остается прежним.
Я нашел один «хакерский» метод для изменения макета:
setxkbmap us,ru
setxkbmap ru,us
но оболочка gnome не знает об этом изменении и показывает неверный язык в индикаторе макета.
Я написал об этой проблеме (извините, недостаточно репутации, https: //bbs.archlinux.org/viewtopic.php? Pid = 1657582 https: //github.com/ierton/xkb-switch/issues/15), но не повезло получить хорошие ответы.
И в этот момент я застрял. Я не достаточно опытен, чтобы определить проблему в коде оболочки gnome. Я даже не уверен, что это проблема гномов.
То , что я хочу , это гном-Aware способ переключения раскладки клавиатуры от терминала. Может ли кто-нибудь указать мне правильное направление? Должен ли я регистрировать это как ошибку (особенно тот факт, что раскладка клавиатуры не может быть изменена с помощью gsettings)?
gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager()._mruSources[1].activate()"
Если вы используете IBus в качестве метода ввода (который, вероятно, используется по умолчанию), вы можете изменить свой ввод с помощью
ibus
команды:Вы можете увидеть все доступные макеты с помощью
ibus list-engine
команды.Следует отметить, что этот подход не меняет языковой индикатор, хотя в противном случае он работает надежно.
источник
setxkbmap us
- без способа изменить макет с помощью стандартных ярлыков после этого.setxkbmap
. Кроме того,setxkbmap
в современных средах WM могут работать ошибки, см. Вопрос для подробностей.Используя
gsettings
.Установка
org.gnome.desktop.input-sources.sources
в нулевой список «[]» позволяет вам использовать конфигурацию клавиатуры X-сервера, не пытаясь настроить ее с помощью gnome-shell , чтобы вы могли делать это, как и раньше.источник
setxkbmap
команд я набрал после этого, пока я не вернул источники входного сигнала обратно через диалог настроек.Я думаю тебе стоит попробовать
sudo dpkg-reconfigure keyboard-configuration
источник
Вы можете настроить и переключиться на метод ввода в командной строке, даже если вы ранее не настраивали этот метод ввода с помощью мыши:
gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'ru')]"
Для Dvorak, используйте
us+dvorak
(илиgb+dvorak
если вы находитесь в Великобритании, или что-то еще).источник