Как я могу программно изменить раскладку клавиатуры?

Я хочу запустить команду оболочки или скрипт, который будет настраивать каждую из моих ящиков Ubuntu Precise, чтобы использовать раскладку клавиатуры Dvorak как макет по умолчанию (и только). С более ранними версиями я смог установить XKBVARIANT в / etc / default / keyboard, но, когда я делаю это изменение в Precise (и перезагружается), раскладка клавиатуры выглядит незатронутой (как в консоли, так и в gnome).

Я также попытался настроить XKBMODEL на pc105 и XKBLAYOUT, но это, похоже, не помогло.

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

Изменить:

Чтобы уточнить, я хочу знать, как я могу изменить (используя только скрипт или командную строку) раскладку клавиатуры Dvorak по умолчанию и только раскладка клавиатуры для Gnome и консоли. Я хочу, чтобы это изменение было постоянным (выжить при перезагрузке), так же, как это происходит, когда изменение производится с помощью инструмента «Макет клавиатуры».

Изменить:

Позвольте мне сказать по-другому. Если бы я сам установил операционную систему (чего я не сделал, потому что ОС была установлена ​​инфраструктурой виртуальной машины), я мог бы выбрать желаемую раскладку клавиатуры во время установки, и этот макет будет применяться постоянно, в масштабах всей системы. Как я могу изменить макет для отображения, как если бы я установил его во время процесса установки?

6
задан 21 May 2012 в 19:06

29 ответов

!!! Неоконченный ответ !!! (удалите это предупреждение, если знаете, как улучшить этот ответ)

Вы можете использовать команду setxkbmap. Например,

setxkbmap de

устанавливает текущий макет в немецкий язык. С помощью

setxkbmap us

вы можете установить его в макете США.

Предупреждение: Я думаю, что эта команда сбрасывает и другие параметры языка. Например, значок языка исчезает, когда я запускаю эту команду. Поэтому также очень сложно вернуться к макету с латинскими буквами, если вы изменили на что-то вроде кириллицы, китайца, греческого языка и т. Д. Но команда setxkbmap может быть хорошим советом продолжить исследование того, как переключать макет.

-1
ответ дан 25 July 2018 в 19:01

Если вы хотите изменить его в консолях tty (доступны через Ctrl + Alt + F1 или F2, ...), это:

loadkeys fr

для французского или для клавиатуры US:

loadkeys us

Хотя, я не уверен, что он работает для консолей, запущенных в X.org/graphical режиме (также как консольное приложение Unity / Gnome или Konsole из KDE). Вы должны попробовать.

-1
ответ дан 25 July 2018 в 19:01

Я тоже использую Ubuntu 12.04 и не согласен с этой проблемой. Используя ответ Джейсона Кумбса на свой вопрос в качестве отправной точки, я смог использовать / etc / default / keyboard для установки параметров клавиатуры (для меня, ctrl: nocaps и compose: menu), и они сохраняются при перезагрузках для консолей , Однако при перезагрузке параметр LightDM / Unity игнорируется. Чтобы уточнить, я не установил никаких настроек клавиатуры из Unity, поэтому Unity должен по умолчанию использовать настройки клавиатуры по умолчанию, но по какой-то причине он не использует параметры клавиатуры.

Я заметил, что если я запустил следующую команду после входа в систему, Unity вдруг начнет распознавать мои настройки по умолчанию для клавиатуры по умолчанию:

setxkbmap

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

Чтобы это произошло автоматически, когда какой-либо пользователь входит в систему (по крайней мере, любой пользователь с рабочим столом Gnome или Unity), я сделал следующий setxkbmap. который я поместил в каталог / etc / xdg / autostart /:

[Desktop Entry]
Type=Application
TryExec=/usr/bin/setxkbmap
Exec=/usr/bin/setxkbmap
Hidden=false
NoDisplay=true
X-GNOME-Autostart-enabled=true
Name[en_US]=System Keyboard Fix
Name=System Keyboard Fix
Comment[en_US]=Apply system-wide keyboard settings to the session
Comment=Applies system-wide keyboard settings to session

Это исправление, похоже, делает параметры клавиатуры согласованными в масштабе всей системы, за исключением кратковременного периода, который LightDM контролирует моего экрана, прежде чем я войду.

3
ответ дан 25 July 2018 в 19:01
setxkbmap -option grp:alt_shift_toggle en
-1
ответ дан 25 July 2018 в 19:01

!!! Неоконченный ответ !!! (удалите это предупреждение, если знаете, как улучшить этот ответ)

Вы можете использовать команду setxkbmap. Например,

setxkbmap de

устанавливает текущий макет в немецкий язык. С помощью

setxkbmap us

вы можете установить его в макете США.

Предупреждение: Я думаю, что эта команда сбрасывает и другие параметры языка. Например, значок языка исчезает, когда я запускаю эту команду. Поэтому также очень сложно вернуться к макету с латинскими буквами, если вы изменили на что-то вроде кириллицы, китайца, греческого языка и т. Д. Но команда setxkbmap может быть хорошим советом продолжить исследование того, как переключать макет.

-1
ответ дан 31 July 2018 в 12:27

Если вы хотите изменить его в консолях tty (доступны через Ctrl + Alt + F1 или F2, ...), это:

loadkeys fr

для французского или для клавиатуры US:

loadkeys us

Хотя, я не уверен, что он работает для консолей, запущенных в X.org/graphical режиме (также как консольное приложение Unity / Gnome или Konsole из KDE). Вы должны попробовать.

-1
ответ дан 31 July 2018 в 12:27

Я тоже использую Ubuntu 12.04 и не согласен с этой проблемой. Используя ответ Джейсона Кумбса на свой вопрос в качестве отправной точки, я смог использовать / etc / default / keyboard для установки параметров клавиатуры (для меня, ctrl: nocaps и compose: menu), и они сохраняются при перезагрузках для консолей , Однако при перезагрузке параметр LightDM / Unity игнорируется. Чтобы уточнить, я не установил никаких настроек клавиатуры из Unity, поэтому Unity должен по умолчанию использовать настройки клавиатуры по умолчанию, но по какой-то причине он не использует параметры клавиатуры.

Я заметил, что если я запустил следующую команду после входа в систему, Unity вдруг начнет распознавать мои настройки по умолчанию для клавиатуры по умолчанию:

setxkbmap

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

Чтобы это произошло автоматически, когда какой-либо пользователь входит в систему (по крайней мере, любой пользователь с рабочим столом Gnome или Unity), я сделал следующий setxkbmap. который я поместил в каталог / etc / xdg / autostart /:

[Desktop Entry]
Type=Application
TryExec=/usr/bin/setxkbmap
Exec=/usr/bin/setxkbmap
Hidden=false
NoDisplay=true
X-GNOME-Autostart-enabled=true
Name[en_US]=System Keyboard Fix
Name=System Keyboard Fix
Comment[en_US]=Apply system-wide keyboard settings to the session
Comment=Applies system-wide keyboard settings to session

Это исправление, похоже, делает параметры клавиатуры согласованными в масштабе всей системы, за исключением кратковременного периода, который LightDM контролирует моего экрана, прежде чем я войду.

3
ответ дан 31 July 2018 в 12:27
setxkbmap -option grp:alt_shift_toggle en
-1
ответ дан 31 July 2018 в 12:27

!!! Неоконченный ответ !!! (удалите это предупреждение, если знаете, как улучшить этот ответ)

Вы можете использовать команду setxkbmap. Например,

setxkbmap de

устанавливает текущий макет в немецкий язык. С помощью

setxkbmap us

вы можете установить его в макете США.

Предупреждение: Я думаю, что эта команда сбрасывает и другие параметры языка. Например, значок языка исчезает, когда я запускаю эту команду. Поэтому также очень сложно вернуться к макету с латинскими буквами, если вы изменили на что-то вроде кириллицы, китайца, греческого языка и т. Д. Но команда setxkbmap может быть хорошим советом продолжить исследование того, как переключать макет.

-1
ответ дан 2 August 2018 в 01:06

Если вы хотите изменить его в консолях tty (доступны через Ctrl + Alt + F1 или F2, ...), это:

loadkeys fr

для французского или для клавиатуры US:

loadkeys us

Хотя, я не уверен, что он работает для консолей, запущенных в X.org/graphical режиме (также как консольное приложение Unity / Gnome или Konsole из KDE). Вы должны попробовать.

-1
ответ дан 2 August 2018 в 01:06

Я тоже использую Ubuntu 12.04 и не согласен с этой проблемой. Используя ответ Джейсона Кумбса на свой вопрос в качестве отправной точки, я смог использовать / etc / default / keyboard для установки параметров клавиатуры (для меня, ctrl: nocaps и compose: menu), и они сохраняются при перезагрузках для консолей , Однако при перезагрузке параметр LightDM / Unity игнорируется. Чтобы уточнить, я не установил никаких настроек клавиатуры из Unity, поэтому Unity должен по умолчанию использовать настройки клавиатуры по умолчанию, но по какой-то причине он не использует параметры клавиатуры.

Я заметил, что если я запустил следующую команду после входа в систему, Unity вдруг начнет распознавать мои настройки по умолчанию для клавиатуры по умолчанию:

setxkbmap

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

Чтобы это произошло автоматически, когда какой-либо пользователь входит в систему (по крайней мере, любой пользователь с рабочим столом Gnome или Unity), я сделал следующий setxkbmap. который я поместил в каталог / etc / xdg / autostart /:

[Desktop Entry]
Type=Application
TryExec=/usr/bin/setxkbmap
Exec=/usr/bin/setxkbmap
Hidden=false
NoDisplay=true
X-GNOME-Autostart-enabled=true
Name[en_US]=System Keyboard Fix
Name=System Keyboard Fix
Comment[en_US]=Apply system-wide keyboard settings to the session
Comment=Applies system-wide keyboard settings to session

Это исправление, похоже, делает параметры клавиатуры согласованными в масштабе всей системы, за исключением кратковременного периода, который LightDM контролирует моего экрана, прежде чем я войду.

3
ответ дан 2 August 2018 в 01:06
setxkbmap -option grp:alt_shift_toggle en
-1
ответ дан 2 August 2018 в 01:06

!!! Неоконченный ответ !!! (удалите это предупреждение, если знаете, как улучшить этот ответ)

Вы можете использовать команду setxkbmap. Например,

setxkbmap de

устанавливает текущий макет в немецкий язык. С помощью

setxkbmap us

вы можете установить его в макете США.

Предупреждение: Я думаю, что эта команда сбрасывает и другие параметры языка. Например, значок языка исчезает, когда я запускаю эту команду. Поэтому также очень сложно вернуться к макету с латинскими буквами, если вы изменили на что-то вроде кириллицы, китайца, греческого языка и т. Д. Но команда setxkbmap может быть хорошим советом продолжить исследование того, как переключать макет.

-1
ответ дан 4 August 2018 в 16:38

Если вы хотите изменить его в консолях tty (доступны через Ctrl + Alt + F1 или F2, ...), это:

loadkeys fr

для французского или для клавиатуры US:

loadkeys us

Хотя, я не уверен, что он работает для консолей, запущенных в X.org/graphical режиме (также как консольное приложение Unity / Gnome или Konsole из KDE). Вы должны попробовать.

-1
ответ дан 4 August 2018 в 16:38
setxkbmap -option grp:alt_shift_toggle en
-1
ответ дан 4 August 2018 в 16:38

!!! Неоконченный ответ !!! (удалите это предупреждение, если знаете, как улучшить этот ответ)

Вы можете использовать команду setxkbmap. Например,

setxkbmap de

устанавливает текущий макет в немецкий язык. С помощью

setxkbmap us

вы можете установить его в макете США.

Предупреждение: Я думаю, что эта команда сбрасывает и другие параметры языка. Например, значок языка исчезает, когда я запускаю эту команду. Поэтому также очень сложно вернуться к макету с латинскими буквами, если вы изменили на что-то вроде кириллицы, китайца, греческого языка и т. Д. Но команда setxkbmap может быть хорошим советом продолжить исследование того, как переключать макет.

-1
ответ дан 6 August 2018 в 01:19

Если вы хотите изменить его в консолях tty (доступны через Ctrl + Alt + F1 или F2, ...), это:

loadkeys fr

для французского или для клавиатуры US:

loadkeys us

Хотя, я не уверен, что он работает для консолей, запущенных в X.org/graphical режиме (также как консольное приложение Unity / Gnome или Konsole из KDE). Вы должны попробовать.

-1
ответ дан 6 August 2018 в 01:19

Я тоже использую Ubuntu 12.04 и не согласен с этой проблемой. Используя ответ Джейсона Кумбса на свой вопрос в качестве отправной точки, я смог использовать / etc / default / keyboard для установки параметров клавиатуры (для меня, ctrl: nocaps и compose: menu), и они сохраняются при перезагрузках для консолей , Однако при перезагрузке параметр LightDM / Unity игнорируется. Чтобы уточнить, я не установил никаких настроек клавиатуры из Unity, поэтому Unity должен по умолчанию использовать настройки клавиатуры по умолчанию, но по какой-то причине он не использует параметры клавиатуры.

Я заметил, что если я запустил следующую команду после входа в систему, Unity вдруг начнет распознавать мои настройки по умолчанию для клавиатуры по умолчанию:

setxkbmap

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

Чтобы это произошло автоматически, когда какой-либо пользователь входит в систему (по крайней мере, любой пользователь с рабочим столом Gnome или Unity), я сделал следующий setxkbmap. который я поместил в каталог / etc / xdg / autostart /:

[Desktop Entry]
Type=Application
TryExec=/usr/bin/setxkbmap
Exec=/usr/bin/setxkbmap
Hidden=false
NoDisplay=true
X-GNOME-Autostart-enabled=true
Name[en_US]=System Keyboard Fix
Name=System Keyboard Fix
Comment[en_US]=Apply system-wide keyboard settings to the session
Comment=Applies system-wide keyboard settings to session

Это исправление, похоже, делает параметры клавиатуры согласованными в масштабе всей системы, за исключением кратковременного периода, который LightDM контролирует моего экрана, прежде чем я войду.

3
ответ дан 6 August 2018 в 01:19
setxkbmap -option grp:alt_shift_toggle en
-1
ответ дан 6 August 2018 в 01:19

!!! Неоконченный ответ !!! (удалите это предупреждение, если знаете, как улучшить этот ответ)

Вы можете использовать команду setxkbmap. Например,

setxkbmap de

устанавливает текущий макет в немецкий язык. С помощью

setxkbmap us

вы можете установить его в макете США.

Предупреждение: Я думаю, что эта команда сбрасывает и другие параметры языка. Например, значок языка исчезает, когда я запускаю эту команду. Поэтому также очень сложно вернуться к макету с латинскими буквами, если вы изменили на что-то вроде кириллицы, китайца, греческого языка и т. Д. Но команда setxkbmap может быть хорошим советом продолжить исследование того, как переключать макет.

-1
ответ дан 7 August 2018 в 18:43

Если вы хотите изменить его в консолях tty (доступны через Ctrl + Alt + F1 или F2, ...), это:

loadkeys fr

для французского или для клавиатуры US:

loadkeys us

Хотя, я не уверен, что он работает для консолей, запущенных в X.org/graphical режиме (также как консольное приложение Unity / Gnome или Konsole из KDE). Вы должны попробовать.

-1
ответ дан 7 August 2018 в 18:43
setxkbmap -option grp:alt_shift_toggle en
-1
ответ дан 7 August 2018 в 18:43

!!! Неоконченный ответ !!! (удалите это предупреждение, если знаете, как улучшить этот ответ)

Вы можете использовать команду setxkbmap. Например,

setxkbmap de

устанавливает текущий макет в немецкий язык. С помощью

setxkbmap us

вы можете установить его в макете США.

Предупреждение: Я думаю, что эта команда сбрасывает и другие параметры языка. Например, значок языка исчезает, когда я запускаю эту команду. Поэтому также очень сложно вернуться к макету с латинскими буквами, если вы изменили на что-то вроде кириллицы, китайца, греческого языка и т. Д. Но команда setxkbmap может быть хорошим советом продолжить исследование того, как переключать макет.

-1
ответ дан 10 August 2018 в 07:22

Если вы хотите изменить его в консолях tty (доступны через Ctrl + Alt + F1 или F2, ...), это:

loadkeys fr

для французского или для клавиатуры US:

loadkeys us

Хотя, я не уверен, что он работает для консолей, запущенных в X.org/graphical режиме (также как консольное приложение Unity / Gnome или Konsole из KDE). Вы должны попробовать.

-1
ответ дан 10 August 2018 в 07:22

Я тоже использую Ubuntu 12.04 и не согласен с этой проблемой. Используя ответ Джейсона Кумбса на свой вопрос в качестве отправной точки, я смог использовать / etc / default / keyboard для установки параметров клавиатуры (для меня, ctrl: nocaps и compose: menu), и они сохраняются при перезагрузках для консолей , Однако при перезагрузке параметр LightDM / Unity игнорируется. Чтобы уточнить, я не установил никаких настроек клавиатуры из Unity, поэтому Unity должен по умолчанию использовать настройки клавиатуры по умолчанию, но по какой-то причине он не использует параметры клавиатуры.

Я заметил, что если я запустил следующую команду после входа в систему, Unity вдруг начнет распознавать мои настройки по умолчанию для клавиатуры по умолчанию:

setxkbmap

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

Чтобы это произошло автоматически, когда какой-либо пользователь входит в систему (по крайней мере, любой пользователь с рабочим столом Gnome или Unity), я сделал следующий setxkbmap. который я поместил в каталог / etc / xdg / autostart /:

[Desktop Entry]
Type=Application
TryExec=/usr/bin/setxkbmap
Exec=/usr/bin/setxkbmap
Hidden=false
NoDisplay=true
X-GNOME-Autostart-enabled=true
Name[en_US]=System Keyboard Fix
Name=System Keyboard Fix
Comment[en_US]=Apply system-wide keyboard settings to the session
Comment=Applies system-wide keyboard settings to session

Это исправление, похоже, делает параметры клавиатуры согласованными в масштабе всей системы, за исключением кратковременного периода, который LightDM контролирует моего экрана, прежде чем я войду.

3
ответ дан 10 August 2018 в 07:22
setxkbmap -option grp:alt_shift_toggle en
-1
ответ дан 10 August 2018 в 07:22

!!! Неоконченный ответ !!! (удалите это предупреждение, если знаете, как улучшить этот ответ)

Вы можете использовать команду setxkbmap. Например,

setxkbmap de

устанавливает текущий макет в немецкий язык. С помощью

setxkbmap us

вы можете установить его в макете США.

Предупреждение: Я думаю, что эта команда сбрасывает и другие параметры языка. Например, значок языка исчезает, когда я запускаю эту команду. Поэтому также очень сложно вернуться к макету с латинскими буквами, если вы изменили на что-то вроде кириллицы, китайца, греческого языка и т. Д. Но команда setxkbmap может быть хорошим советом продолжить исследование того, как переключать макет.

-1
ответ дан 15 August 2018 в 19:24
  • 1
    Я могу использовать 'setxkbmap us dvorak', и он устанавливает макет для текущего сеанса X, но когда я перезагружаю компьютер, макет вернул. Я бы хотел, чтобы он был постоянным, как при использовании инструмента раскладки клавиатуры. Мне также хотелось бы, чтобы это повлияло на консоль, если это возможно. – Jason R. Coombs 21 May 2012 в 18:56

Если вы хотите изменить его в консолях tty (доступны через Ctrl + Alt + F1 или F2, ...), это:

loadkeys fr

для французского или для клавиатуры US:

loadkeys us

Хотя, я не уверен, что он работает для консолей, запущенных в X.org/graphical режиме (также как консольное приложение Unity / Gnome или Konsole из KDE). Вы должны попробовать.

-1
ответ дан 15 August 2018 в 19:24
  • 1
    Loadkeys работает в интерактивной консоли, но не влияет на терминалы Gnome или другие приложения Gnome. Тем не менее, я ценю подсказку, поскольку это может быть частью двухэтапного процесса, необходимого для воздействия на X и консоль. Куда эта настройка будет действовать, чтобы повлиять на все консоли (чтобы сделать это макет по умолчанию), например, если этот макет был выбран во время установки? – Jason R. Coombs 21 May 2012 в 19:05
  • 2
    Чтобы сделать это глобально и сохранить настройку при перезагрузке, вам нужно перенастроить консоль с помощью sudo dpkg-reconfigure console-data. Если вы добавляете новый язык в, скажем, систему только на английском языке, возможно, вам придется запустить sudo dpkg-reconfigure locales раньше (и, возможно, отредактировать /var/lib/locales/supported.d/local, см. этот пост ) – maximd 26 May 2012 в 12:50
  • 3
    И для X вы должны попробовать set-language-env -l fr (для французского), см. Man-страницу set-language-env – maximd 26 May 2012 в 13:06
setxkbmap -option grp:alt_shift_toggle en
-1
ответ дан 15 August 2018 в 19:24
  • 1
    – lumbric 17 May 2012 в 20:31
  • 2
    да вам не нужно sudo. – Octávio Filipe Gonçalves 17 May 2012 в 20:43
  • 3
    Я не хочу менять настройку один раз. Я использую систему в целом. Кроме того, я не думаю, что мне нужен вариант переключения с помощью shift-shift, потому что я хочу только одну раскладку клавиатуры. Я попытался прояснить вопрос, описав его несколькими разными способами. – Jason R. Coombs 21 May 2012 в 19:02

Другие вопросы по тегам:

Похожие вопросы: