Переключение раскладки Linux

Обновлено: 30.06.2024

В этой статье описываются основы настройки клавиатуры Xorg. Дополнительные темы, такие как изменение раскладки клавиатуры или дополнительные сопоставления клавиш, см. в разделе Расширение клавиатуры X или Дополнительные клавиши клавиатуры соответственно.

Сервер Xorg использует расширение клавиатуры X (XKB) для определения раскладки клавиатуры. При желании xmodmap можно использовать для прямого доступа к внутренней таблице раскладок, хотя это не рекомендуется для сложных задач. Кроме того, localectl в systemd можно использовать для определения раскладки клавиатуры как для сервера Xorg, так и для виртуальной консоли.

Примечание. Параметры XKB могут быть переопределены инструментами, предоставляемыми некоторыми средами рабочего стола, такими как GNOME и KDE.

Содержание

Просмотр настроек клавиатуры

Вы можете использовать следующую команду, чтобы увидеть фактические настройки XKB:

Сторонние утилиты

Существуют некоторые "неофициальные" утилиты, которые позволяют печатать конкретную информацию об используемой в данный момент раскладке клавиатуры.

Настройка раскладки клавиатуры

Раскладку клавиатуры в Xorg можно настроить несколькими способами. Вот объяснение используемых опций:

Примечание. Необходимо указать столько вариантов, сколько указано макетов. Если вам нужен вариант по умолчанию, укажите в качестве варианта пустую строку (запятая должна остаться). Например, чтобы использовать макет us по умолчанию в качестве основного, а вариант макета dvorak в качестве вторичного, укажите us,us как XkbLayout и ,dvorak как XkbVariant .

Название макета обычно представляет собой двухбуквенный код страны. Чтобы просмотреть полный список моделей клавиатур, раскладок, вариантов и параметров вместе с кратким описанием, откройте /usr/share/X11/xkb/rules/base.lst . Кроме того, вы можете использовать одну из следующих команд, чтобы просмотреть список без описания:

  • localectl list-x11-keymap-models
  • localectl list-x11-keymap-layouts
  • localectl list-x11-keymap-variants [layout]
  • localectl list-x11-keymap-options

Примеры в следующих подразделах будут иметь тот же эффект, они будут устанавливать модель pc104, cz в качестве основной раскладки, us в качестве вторичной раскладки, вариант dvorak для раскладки us и комбинацию Win+Space для переключения между раскладками. См. xkeyboard-config(7) для более подробной информации.

Использование setxkbmap

Эту статью или раздел необходимо расширить.

Использование выглядит следующим образом (см. setxkbmap(1)):

Примечание: setxkbmap добавляет параметры, указанные в командной строке, к параметрам, которые были установлены ранее (сохраненные в свойствах корневого окна). Если вы хотите заменить все ранее указанные параметры, сначала используйте флаг -option с пустым аргументом.

Чтобы изменить только макет (-layout является флагом по умолчанию):

Для нескольких настроек:

Использование файлов конфигурации X

Вот пример:

Использование localectl

Для удобства можно использовать инструмент localectl вместо ручного редактирования файлов конфигурации X. Конфигурация будет сохранена в /etc/X11/xorg.conf.d/00-keyboard.conf , этот файл не следует редактировать вручную, поскольку localectl перезапишет изменения при следующем запуске.

Применение следующее:

Чтобы установить модель, вариант или параметры, необходимо указать все предыдущие поля, но предыдущие поля можно пропустить, передав пустая строка с "" . Если не указан параметр --no-convert, указанная раскладка также преобразуется в ближайшую подходящую раскладку консоли и применяется к конфигурации консоли в vconsole.conf . См. localectl(1) для получения дополнительной информации.

Чтобы создать файл /etc/X11/xorg.conf.d/00-keyboard.conf, как показано выше:

Часто используемые параметры XKB

Переключение между раскладками клавиатуры

Чтобы иметь возможность легко переключать раскладки клавиатуры, сначала укажите несколько раскладок, между которыми вы хотите переключаться (по умолчанию используется первая). Затем укажите клавишу (или комбинацию клавиш), которая будет использоваться для переключения. Например, чтобы переключаться между американской и шведской раскладкой с помощью клавиши CapsLock, используйте us,se в качестве аргумента XkbLayout и grp:caps_toggle в качестве аргумента XkbOptions. Количество XkbLayout s должно совпадать с XkbVariant s — если вы хотите переключаться только между разными вариантами, то соответствующим образом продублируйте макет (например, de,de ).

Вы можете использовать другие комбинации клавиш, кроме CapsLock , они перечислены в /usr/share/X11/xkb/rules/base.lst , начинаются с grp: и заканчиваются toggle . Чтобы получить полный список доступных параметров, выполните следующую команду:

Обратите внимание, что параметр grp:alts_toggle ненадежен и вряд ли будет исправлен; предпочитаю другие комбинации!

Завершение Xorg с помощью Ctrl+Alt+Backspace

По умолчанию комбинация клавиш Ctrl+Alt+Backspace отключена. Вы можете включить его, передав команду terminate:ctrl_alt_bksp в XkbOptions. Это также можно сделать, привязав ключ к Terminate_Server в xmodmap (что отменяет любую существующую настройку XkbOptions).Чтобы любой из этих методов работал, также необходимо, чтобы DontZap был отключен в ServerFlags: с 2004 года [1] это значение по умолчанию.

Поменять местами Caps Lock и Left Control

Чтобы заменить Caps Lock левой клавишей Control, добавьте Ctrl:swapcaps в XkbOptions . Выполните следующую команду, чтобы увидеть похожие параметры вместе с их описаниями:

Включение клавиш мыши

Клавиши мыши, не путать с клавишами мыши, по умолчанию отключены, и их необходимо включить вручную, передав keypad:pointerkeys в XkbOptions . Это заставит сочетание клавиш Shift+NumLock переключать клавиши мыши.

Настройка ключа создания

Хотя это обычно не происходит на традиционных клавиатурах, клавиша "Создать" может быть настроена на существующую клавишу.

Клавиша Compose начинает последовательность нажатий клавиш, которая включает (обычно два) дополнительных нажатия клавиш. Обычно используется либо для ввода символов на языке, для которого клавиатура не предназначена, либо для других менее используемых символов, которые не покрываются модификатором AltGr. Например, если нажать Compose ' e , появится é , а Compose -- - выдаст "длинное тире": — .

Хотя еще несколько эксцентричных клавиатур имеют клавишу Compose, ее доступность обычно обеспечивается заменой уже существующей клавиши. Например, чтобы сделать клавишу Menu клавишей Compose, используйте конфигурацию среды рабочего стола или передайте compose:menu в XkbOptions (или setxkbmap: setxkbmap -option compose:menu ). Разрешенные замены ключей определены в /usr/share/X11/xkb/rules/base.lst:

Если нужное сопоставление не найдено в этом файле, альтернативой является использование xmodmap для сопоставления нужного ключа с символом ключа Multi_key, который по умолчанию действует как ключ создания (обратите внимание, что настройки xmodmap сбрасываются с помощью setxkbmap).

Сочетания клавиш

Комбинации по умолчанию для ключей создания зависят от локали, настроенной для сеанса, и хранятся в /usr/share/X11/locale/used_locale/Compose , где used_locale например en_US.UTF-8 .

Вы можете определить свои собственные комбинации клавиш, скопировав файл по умолчанию в ~/.XCompose и отредактировав его. В качестве альтернативы создайте пустой ~/.XCompose и включите файл по умолчанию, используя include "%L", например:

Ключ компоновки (обозначенный как в файле ~/.XCompose) работает с любым из тысяч допустимых символов Юникода, в том числе за пределами базовой многоязычной плоскости. Взгляните на справочную страницу Compose(5), там объясняется формат файлов XCompose.

Однако GTK по умолчанию не использует XIM и, следовательно, не использует ключи ~/.XCompose. Это можно исправить, заставив GTK использовать XIM, добавив export GTK_IM_MODULE=xim и/или export XMODIFIERS="@im=none" в ~/.xprofile .

Совет: XIM очень старый, возможно, вам повезет больше с другими методами ввода: SCIM, Uim, IBus и т. д. Подробнее см. в разделе Метод ввода.

Знак валюты на другом ключе

На большинстве европейских клавиатур на клавише 5 напечатан знак евро (€). Например, чтобы получить к нему доступ с помощью Alt+5 , используйте параметры lv3:lalt_switch и eurosign:5.

Знак рупии (₹) можно использовать таким же образом с rupeesign:4 .

Состояние переключения сразу после нажатия Caps Lock

Те, кто предпочитает вводить заглавные буквы с помощью клавиши Caps Lock, могут столкнуться с небольшой задержкой при переключении состояния Caps Lock, что приводит к появлению двух или более заглавных букв (например, THe, ARch LInux< /я>). Это происходит потому, что Caps Lock включается сразу после нажатия клавиши Caps Lock, но отключается только после отпускания второго нажатия клавиши. Такое поведение связано с пишущими машинками, в которых функция Caps Lock достигалась путем физической блокировки сдвинутых печатных полос на месте, а отпускание клавиши Shift вызывало снятие блокировки.

Некоторые более популярные операционные системы удалили это поведение либо добровольно (поскольку это может сбить некоторых с толку), либо по ошибке, однако это вопрос предпочтений. Отчеты об ошибках были отправлены в систему отслеживания ошибок Xserver, поскольку в настоящее время нет простого способа переключиться на поведение, отражаемое этими другими операционными системами. Для тех, кто хотел бы следить за проблемой, отчеты об ошибках и последний рабочий прогресс можно найти по адресу [2] и [3].

Временное решение

Сначала экспортируйте настройки клавиатуры в файл:

В файле xkbmap найдите раздел Caps Lock, который начинается с key :

и замените весь раздел следующим кодом:

Сохранить и перезагрузить конфигурации клавиатуры:

Рассмотрите возможность запуска службы после запуска X, поскольку повторно загруженные конфигурации не сохраняются после перезагрузки системы.

Функции клавиш быстрого доступа

Чтобы назначить дополнительную функцию одним щелчком клавише-модификатору, вы можете использовать xcape . Например, CapsLock может работать как Escape при нажатии отдельно и как Control при использовании с другой клавишей.Сначала установите перестановку элементов управления с помощью setxkbmap, как упоминалось ранее, и xcape, чтобы установить ассоциацию Escape:

Вы можете установить несколько ассоциаций, разделенных точкой с запятой, например: Caps_Lock=Escape;Shift_L=Escape .

Если вы удерживаете клавишу дольше времени ожидания (по умолчанию 500 мс), xcape не будет генерировать событие нажатия клавиши.

Настройка задержки и скорости набора текста

задержка ввода указывает количество времени (обычно в миллисекундах), в течение которого необходимо нажать и удерживать клавишу, чтобы начался повторяющийся процесс. После запуска процесса повторения символ будет повторяться с определенной частотой (обычно задается в Гц), определяемой частотой набора текста. Обратите внимание, что эти параметры настраиваются отдельно для Xorg и для виртуальной консоли.

Использование xset

Инструмент xset можно использовать для установки задержки ввода и скорости для активного X-сервера, хотя определенные действия во время выполнения могут привести к тому, что X-сервер сбросит эти изменения и вместо этого вернется к своему места по умолчанию.

Например, чтобы установить задержку набора текста на 200 мс и частоту набора текста на 30 Гц, используйте следующую команду (используйте xinitrc, чтобы сделать ее постоянной):

Выполнение команды без указания задержки и скорости приведет к сбросу типизированных значений до соответствующих значений по умолчанию; задержка 660 мс и частота 25 Гц:

Использование параметров запуска XServer

Более стойкий способ установить задержку и скорость набора текста – сделать их местами по умолчанию, передав нужные параметры X-серверу при его запуске с помощью следующих параметров:

  • -ardelay миллисекунды — устанавливает задержку автоповтора (время в миллисекундах, в течение которого клавиша должна быть нажата до запуска автоповтора).
  • -arinterval миллисекунды — устанавливает интервал автоповтора (промежуток времени в миллисекундах, который должен пройти между нажатиями клавиш, генерируемыми автоповтором).

См. Xserver(1) для получения полного списка опций X-сервера и обратитесь к вашему диспетчеру дисплея за информацией о том, как передать эти опции.

Сопоставления клавиатуры (keymaps), консольные шрифты и сопоставления консоли для консоли Linux предоставляются пакетом kbd (зависимость от systemd), который также предоставляет множество низкоуровневых инструментов для управления текстовой консолью. Кроме того, systemd также предоставляет инструмент localectl, который может управлять как языковым стандартом системы, так и настройками раскладки клавиатуры как для консоли, так и для Xorg.

Содержание

Просмотр настроек клавиатуры

Используйте статус localectl для просмотра текущих конфигураций клавиатуры.

Раскладки

Файлы раскладок хранятся в дереве каталогов /usr/share/kbd/keymaps/. Обычно один файл раскладки соответствует одной раскладке клавиатуры (оператор include может использоваться для совместного использования общих частей, а файл раскладки может содержать несколько раскладок с некоторой комбинацией клавиш, используемой для переключения). Для получения дополнительной информации см. keymaps(5) .

Список раскладок

Соглашения об именах раскладок консоли несколько произвольны, но обычно они основаны на:

Чтобы получить список всех доступных раскладок, используйте команду:

Чтобы найти раскладку клавиатуры, используйте следующую команду, заменив search_term кодом вашего языка, страны или раскладки:

В качестве альтернативы можно использовать поиск:

Ключи загрузки

Можно установить раскладку только для текущего сеанса. Это полезно для тестирования различных раскладок, решения проблем и т. д.

Для этой цели используется инструмент loadkeys, он используется внутри systemd при загрузке раскладки, настроенной в /etc/vconsole.conf . Его можно использовать очень просто для этой цели:

Постоянная конфигурация

Постоянная раскладка может быть установлена ​​в /etc/vconsole.conf , которая считывается systemd при запуске. Переменная KEYMAP используется для указания раскладки. Если переменная пуста или не установлена, в качестве значения по умолчанию используется раскладка us. Смотрите vconsole.conf(5) для всех опций. Например:

Для удобства localectl можно использовать для установки раскладки консоли. Это изменит переменную KEYMAP в /etc/vconsole.conf, а также установит раскладку для текущего сеанса:

Опция --no-convert может использоваться, чтобы запретить localectl автоматически изменять раскладку Xorg до ближайшего совпадения. См. localectl(1) для получения дополнительной информации.

При необходимости раскладку из /etc/vconsole.conf можно загрузить в раннем пользовательском пространстве с помощью хука mkinitcpio.

Совет. Если вы сохранили свою пользовательскую раскладку не в /usr/share/kbd/keymaps/ , она должна быть указана полным путем к файлу в vconsole.conf или при использовании localectl команда выше.

Создание пользовательской раскладки

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

Одним из способов сделать это является редактирование файла раскладки. Однако, поскольку он будет перезаписан каждый раз при обновлении пакета, к которому он принадлежит, редактирование этого файла не рекомендуется. Лучше интегрировать существующую раскладку с личной раскладкой. Это может сделать утилита loadkeys.

Сначала создайте файл раскладки. Этот файл раскладки может быть где угодно, но один из способов — имитировать иерархию каталогов в /usr/local: создайте каталог /usr/local/share/kbd/keymaps, затем отредактируйте /usr/local/share/kbd/keymaps/personal. .карта .

В качестве примечания стоит отметить, что такая персональная раскладка полезна также для переопределения поведения клавиш, уже обработанных раскладкой по умолчанию: при загрузке с помощью loadkeys директивы в раскладке по умолчанию будут заменены, когда они конфликтуют. с новыми директивами и сохранены в противном случае. Таким образом, в личной раскладке должны быть указаны только изменения в раскладке.

  • Вы также можете отредактировать существующую раскладку, расположенную в дереве каталогов /usr/share/kbd/keymaps/. Раскладки имеют расширение .map.gz, например, us.map.gz — американская раскладка. Просто скопируйте раскладку в /usr/local/share/kbd/keymaps/personal.map.gz и gunzip ее.
  • Пользовательскую раскладку можно сделать постоянной, установив ее в /etc/vconsole.conf . Учитывая это, если вы используете хук sd-vconsole mkinitcpio вместо keymap, вы можете поместить свой собственный файл раскладки в /usr/share/kbd/keymaps/. Таким образом, его зависимости от /usr/share/kbd/keymaps будут автоматически добавлены к начальному образу виртуального диска с помощью ловушки. С другой стороны, если вы поместите свой файл пользовательской раскладки в /usr/local/ , тогда его зависимости необходимо будет указать вручную в массиве FILES в mkinitcpio.conf .

Добавление директив

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

Большинство символов клавиш интуитивно понятны. Например, чтобы настроить клавишу 112 для вывода «e», директива будет такой:

Чтобы настроить клавишу 112 для вывода символа евро, директива будет следующей:

Некоторые символы клавиш не сразу связаны с действиями клавиатуры. В частности, символы клавиш с префиксом заглавной буквы F и от одной до трех цифр (F1-F246), составляющие число больше 30, всегда бесплатны. Полезно указать горячую клавишу для вывода последовательности символов и других действий:

Затем можно связать F70 для вывода определенной строки:

При нажатии клавиши 112 выводится содержимое F70. Чтобы выполнить напечатанную команду в терминале, в конец командной строки должен быть добавлен escape-символ новой строки. Например, чтобы перевести систему в спящий режим, добавляется следующая раскладка клавиш:

Другие примеры

  • Чтобы сделать правую клавишу Alt такой же, как левую клавишу Alt (для Emacs), используйте следующую строку в вашей раскладке. Он будет включать файл /usr/share/kbd/keymaps/i386/include/linux-with-two-alt-keys.inc , подробности см. в нем.
  • Чтобы заменить CapsLock на Escape (для Vim), переназначьте соответствующие коды клавиш:
  • Чтобы сделать CapsLock другой клавишей Control, переназначьте соответствующий код клавиши:
  • Чтобы заменить CapsLock левой клавишей Control, переназначьте соответствующие коды клавиш:

Сохранение изменений

Чтобы использовать персональную раскладку, ее необходимо загрузить с помощью loadkeys:

Однако эта раскладка активна только для текущего сеанса. Для того, чтобы загружать раскладку при загрузке, укажите полный путь к файлу в переменной KEYMAP в /etc/vconsole.conf. Файл не обязательно сжимать с помощью gzip, поскольку это официальные карты ключей, предоставляемые kbd .

Настройка задержки и скорости набора текста

задержка ввода указывает количество времени (обычно в миллисекундах), в течение которого необходимо нажать и удерживать клавишу, чтобы начался повторяющийся процесс. После запуска процесса повторения символ будет повторяться с определенной частотой (обычно задается в Гц), определяемой частотой набора текста. Эти значения можно изменить с помощью команды kbdrate. Обратите внимание, что эти параметры настраиваются отдельно для консоли и для Xorg.

Например, чтобы установить задержку набора текста на 200 мс и частоту набора текста на 30 Гц, используйте следующую команду:

Выполнение команды без указания задержки и скорости приведет к сбросу типизированных значений до соответствующих значений по умолчанию; задержка 250 мс и частота 11 Гц:

Раскладка клавиатуры преобразует скан-коды с клавиатуры в символы, отправляемые в приложение. Раскладки клавиатуры также могут выполнять более сложные преобразования с помощью так называемых мертвых клавиш, которые не выводят символы сами по себе, а изменяют вывод последующих клавиш. Соответствующая раскладка клавиатуры требуется для поддержки как клавиатур, отличных от QWERTY, так и клавиатур QWERTY для ввода символов, не входящих в набор ASCII.

Содержание

Текстовый режим

OpenRC

Раскладка клавиатуры по умолчанию устанавливается в файле /etc/conf.d/keymaps путем назначения соответствующей раскладки в качестве значения для keymap . Значения раскладки определены в /usr/share/keymaps, и большинство пользователей будут использовать значение из /usr/share/keymaps/i386/qwerty/. При желании установите значение для переменной extended_keymaps из соответствующего каталога включения, например /usr/share/keymaps/i386/include . Например, задайте extension_keymaps="euro2", чтобы получить евро и цент с сочетанием клавиш Alt-Gr на позициях, где на многих клавиатурах есть E и C.

Наконец добавьте /etc/init.d/keymaps на уровень выполнения загрузки.

Перезапустить раскладки для применения изменений

Если вам нужно, чтобы терминал отображал символы, отличные от ASCII, вы должны отредактировать /etc/conf.d/consolefont и изменить шрифт

И добавить на уровень запуска загрузки

Пользовательская раскладка

Чтобы создать пользовательскую раскладку, просмотрите предоставленные раскладки в /usr/share/keymaps:

Вот пример пользовательской раскладки, которая совпадает с раскладкой QWERTY в США, за исключением того, что косая черта и апостроф поменялись местами:

Чтобы найти коды клавиш, сопоставленные с клавишами, просмотрите выходные данные dumpkeys :

Если ключ не может быть найден с помощью приведенной выше команды, запустите:

Просто нажмите клавишу, и отобразится ее код. Когда закончите, подождите несколько секунд, и showkey закроется.

системный

systemd использует файл /etc/vconsole.conf и включает в себя как шрифт терминала, так и настройки раскладки клавиатуры, но не имеет расширенных настроек, имеющихся в OpenRC. Допустимые значения должны соответствовать тому, что OpenRC поддерживает для соответствующей переменной.

Современные приложения X11 обычно используют x11-libs/libxklavier («klavier» в переводе с немецкого означает «клавиатура») и могут быть настроены с помощью setxkbmap . Кроме того, X11 поддерживает гораздо более широкий набор раскладок клавиатуры, чем для виртуальных терминалов. Следует иметь в виду, что правильная среда рабочего стола сама управляет раскладкой клавиатуры. Нет необходимости напрямую использовать вышеупомянутое приложение, но оно может пригодиться при работе со сломанным или отсутствующим управлением раскладкой клавиатуры.

KDE4 / Плазма

Откройте Системные настройки и перейдите к модулю «Устройства ввода».

Чтобы сделать дополнительные языки доступными в диспетчере входа SDDM, отредактируйте файл /usr/share/sddm/scripts/Xsetup и добавьте команду setxkbmap, за которой следует список языков, разделенных запятыми, которые вы хотите выбрать.

Например, чтобы включить немецкий язык по умолчанию и указать США в качестве раскладки клавиатуры, добавьте следующее:

Общая среда рабочего стола

Отредактируйте ~/.xprofile и вызовите оттуда setxkbmap или настройте клавиатуру в файле конфигурации Xorg (примеры см. ниже).

Примечание
Последние версии GNOME 3 больше не используют x11-libs/libxklavier, поэтому это может вообще не работать или может быть переопределено GNOME. Точно так же любая другая среда рабочего стола может также переопределить конфигурацию x11-libs/libxklavier как часть инициализации или изменения макета.

Предупреждение
~/.xprofile — это нестандартный файл, который загружается только при входе в систему через диспетчер отображения, который его поддерживает (проверено только на GDM, KDM, LightDM, LXDM и SDDM). зависит от дистрибутива, хотя кажется, что все распространенные дистрибутивы поддерживают этот файл.

Универсальный X11

Использование setxkbmap

Эти изменения не являются постоянными и сохранятся только до тех пор, пока пользователь не перезапустит X11. Естественно, эту команду можно вызвать из сценария запуска, чтобы установить соответствующие параметры при каждом запуске X-сервера.

Чтобы запросить существующую конфигурацию:

Настройка раскладки клавиатуры:

Настройка раскладки клавиатуры, ее варианта и модели:

Настройка двух раскладок клавиатуры со светодиодной индикацией:

Рекомендуется прочитать руководство по xkeyboard-config для получения полного списка параметров конфигурации клавиатуры:

Поиск поддерживаемых макетов и вариантов или значений других свойств xkb в этом приложении невозможен, хотя большинство из них перечислены в файле /usr/share/X11/xkb/rules/base.lst. Получить наиболее полный список можно, только изучив другие файлы в /usr/share/X11/xkb/. Ради здравого смысла рекомендуется использовать подходящую среду рабочего стола с собственным управлением раскладкой клавиатуры.

Использование общесистемных макетов и ярлыков

Этот метод рекомендуется для конфигураций без среды рабочего стола, другими словами, только для X11 с оконным менеджером.Поскольку Gnome удалил возможность изменять раскладки клавиатуры в GDM с помощью gnome-control-center, GDM также полагается на этот метод в системах без systemd. Создайте файл 10-keyboard.conf и настройте в нем соответствующие параметры клавиатуры. Вы можете создать каталог /etc/X11/xorg.conf.d, если он не существует.

В приведенном выше примере настраиваются раскладки клавиатуры для США и Бразилии с сочетанием клавиш «Shift влево» и «Shift вправо» для переключения между ними. На бразильскую раскладку указывает индикатор Scroll Lock на клавиатуре.

Примечание
При использовании кириллической раскладки и клавиатуре с клавишами «Windows®» может потребоваться добавить адаптивные «,winkeys» к параметру XkbVariant.

Дополнительные возможности настройки

Существует ряд доступных вариантов и параметров, которые можно использовать при настройке раскладок клавиатуры. Большинство из них можно найти в файле /usr/share/X11/xkb/rules/base.lst.

Например, раскладку для США с возможностью написания некоторых международных символов можно настроить с помощью варианта altgr-intl :

Затем правый Alt используется как модификатор для ввода международных символов.

Xorg предоставляет возможность вводить международные и различные символы символов по композиции, что означает нажатие клавиши ввода, за которой следует последовательность символов. Чтобы включить композицию, добавьте параметр compose::

Опция compose:sclk выше настраивает блокировку прокрутки в качестве клавиши создания. С этой настройкой:

  • Нажмите Scroll Lock, затем введите "oo", чтобы получить знак градуса "°".
  • Нажмите Scroll Lock, затем введите "oc", чтобы получить знак авторского права "©".
  • Нажмите Scroll Lock, затем введите ':)', чтобы получить улыбающееся лицо '☺'
  • Нажмите Scroll Lock, затем введите '^2', чтобы получить верхний индекс 2 ('²').
  • Нажмите Scroll Lock, затем введите "_2", чтобы получить индекс 2 ("₂").
  • Нажмите Scroll Lock, затем введите "di", чтобы получить знак диаметра "⌀"
<р>. и многое другое. В файле /usr/share/X11/locale/compose.dir перечислены все возможные источники композиций.

Улучшение раскладки клавиатуры X

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

Основы

Соответствующий пакет Gentoo — x11-misc/xkeyboard-config. Настроить клавиатуру под X сложнее, чем сделать то же самое для виртуальной консоли. Соответствующие файлы конфигурации можно найти в /usr/share/X11/xkb в следующих подкаталогах:

keycodes Эти файлы связывают коды клавиш с символическими именами — маловероятно, что кто-то захочет это изменить. геометрия Это физическая форма клавиатуры, используемая некоторым программным обеспечением для рисования ее схем - также маловероятно, что кто-то захочет это изменить. типы Файлы здесь создают "типы". Используемый в объявлении ключа тип указывает, какие комбинации клавиш Shift можно использовать с ключом. символы Эти файлы определяют фактические назначения клавиш. compat Файлы здесь определяют «действия» (например, переключение на виртуальный терминал), давая им имена, которые можно назначать клавишам. rules Эти файлы с такими параметрами, как тип клавиатуры и язык, активируют соответствующие спецификации в других каталогах.

Добавление назначений клавиш

Например, в этом разделе будет улучшена раскладка клавиатуры для британского английского, так что при вводе a, o или u с помощью AltGr будут генерироваться немецкие буквы умлаут ä, ö и ü. Это также должно поступать правильно для версий в верхнем регистре. Клавиши для повышения - A (), O () и U (). (Символ ß уже назначен AltGr + S .)

Названия букв с умлаутом в xkb - "adiaeresis" и так далее. Эти имена можно найти в файле /usr/include/X11/keysymdef.h , хотя для получения имен необходимо удалить ведущие «XK_».

Определите нужный файл в каталоге символов. Большинство этих файлов называются двухбуквенными кодами стран (например, gb для Великобритании), поэтому угадайте тот, который соответствует раскладке клавиатуры, выбранной в данный момент в X. В этом примере расширены символы/gb.

Используя приведенную выше информацию, создайте новые записи, скопировав существующую схему в symbols/gb . В этом примере эти записи должны быть добавлены в раздел под названием «основной». По его содержанию легко догадаться, что четыре элемента в скобках и квадратных скобках в записи для каждой клавиши предназначены для обычных (без других комбинаций клавиш), Shift , AltGr и Shift + AltGr соответственно:

После внесения дополнений раздел выглядит так:

Сохранив этот файл, перезапустите X Windows. Типичная среда рабочего стола, XFCE, повторно считывает вышеуказанные файлы конфигурации при каждом запуске.В случае возникновения ошибок сообщения об ошибках будут записываться в обычный stderr — если X Windows запускается из командной строки, stderr будет виртуальным терминалом, с которого он был запущен.

Добавление действий к функциональным клавишам

Например, добавьте действия «переключиться на виртуальный терминал n» (где n > 12) к функциональным клавишам F1–F12, когда выбраны все клавиши Ctrl , Alt и Shift . Тот же эффект должен иметь место при выборе AltGr и Fn.

Сначала найдите файл в каталоге символов, который обрабатывает существующие назначения для функциональных клавиш. Этот файл — icons/srvr_ctrl. Запись в этом файле для F1 , которую предполагается изменить, выглядит следующим образом:

В отношении этой записи следует отметить две вещи:

  • Тип "CTRL+ALT"; таким образом, он принимает стандартные четыре настройки клавиши Shift с Shift и AltGr , а также пятую настройку Ctrl + Alt . Поскольку целью является использование Ctrl + Alt + Shift , а подходящего существующего типа нет, необходимо создать новый.
  • "Действие" XF86_Switch_VT_1 — это просто определенный символ в системе xkb. Его семантика задается записью в файле в каталоге compat, а именно compat/xfree86. Нет символа XF86_Switch_VT_13 (или выше) — вместо этого украсть неиспользуемые существующие символы F13, F14, . F24.
Создание нового типа CTRL+ALT+SHIFT

Найдя «CTRL+ALT» в types/pc , достаточно легко скопировать его, переименовать копию в «CTRL+ALT+SHIFT» и расширить это, чтобы разрешить комбинацию клавиш-модификаторов Ctrl + Alt + Shift . Результат выглядит следующим образом:

Активация символов F13, . F24

Символ XF86_Switch_VT_1 быстро находится в compat/xfree86 . Скопировать его форму несложно, создав назначения для символов F13, . Ф24. Определение первого из этих символов, F13, в compat/xfree86 выглядит следующим образом:

Аналогичные определения для F14, . F24 также должен быть помещен в файл.

Изменение записей в символах для клавиш F1 , . F12

Теперь, когда новый тип CTRL+ALT+SHIFT и определения символов F13, . F24 определены, измените определения функциональных клавиш в symbols/srvr_ctrl . Один для F1 упоминается ниже, аналогичные определения также необходимо вставить для других функциональных клавиш:

После внесения этих изменений в types/pc , compat/xfree86 и symbol/srvr_ctrl и перезапуска X-сервера теперь возможно переключение с X напрямую на виртуальные терминалы 13 и выше — при условии, что они были настроены в / etc/inittab (или аналог systemd), конечно.

Polyglot Tux

Изображение: Polyglot Tux (Лицензия: CC-BY-ND-SA Marcelo Canina)

Как настроить несколько раскладок клавиатуры из консоли.

Обзор

Руководство для полиглотов Linux по использованию кириллицы, китайских иероглифов, латинских букв и любого другого языка в Linux с возможностью легкого переключения между ними в графической среде X11 или консоли.

Сервер X11/Xorg использует XKB, Расширение клавиатуры X, для управления доступными раскладками клавиатуры.

Если мы хотим использовать несколько языков с одной и той же клавиатурой, нам придется рассмотреть четыре основные темы: модель, макет, вариант и параметры.

Чтобы указать разные языки, мы используем команду setxkbmap, которая устанавливает клавиатуру с помощью X Keyboard Extension.

Используется как: setxkbmap [-model xkb_model] [-layout xkb_layout] [-variant xkb_variant] [-option xkb_options], поэтому в каждой теме мы увидим, как выполнить каждый параметр.

1. Текущая конфигурация

Вы можете просмотреть текущую конфигурацию с помощью setxkbmap -query или для получения дополнительной информации setxkbmap -print -verbose 10 .

В системах Debian/Ubuntu раскладка клавиатуры по умолчанию описана в /etc/default/keyboard 1 .

На данном этапе мы уделяем особое внимание текущей «физической» модели клавиатуры.

XkbModel выбирает модель клавиатуры. Это влияет только на некоторые дополнительные клавиши, которые могут быть на вашей клавиатуре. Безопасный запасной вариант — pc104 или pc105. Но, например, у ноутбуков обычно есть несколько дополнительных клавиш, и иногда вы можете заставить их работать, просто установив соответствующую модель.

Конфигурация клавиатуры Xorg

2. Языки

Выберите необходимые раскладки клавиатуры, т. е. языки, которые вы будете использовать.

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

Конфигурация клавиатуры Xorg

Полный список раскладок клавиатуры и их описания см. в файле /usr/share/X11/xkb/rules/base.lst .

Название макета часто представляет собой типичный двухбуквенный код страны. например: для русского: ru.

3. Варианты

Для каждого макета можно выбрать вариант.

XkbVariant выбирает конкретный вариант макета. Например, вариант sk по умолчанию — qwertz, но вы можете вручную указать qwerty и т. д.

Конфигурация клавиатуры Xorg

Полный список вариантов также можно увидеть в /usr/share/X11/xkb/rules/base.lst .

Например, вы можете выбрать:

Для русской раскладки доступен фонетический вариант, который сделает написание русского языка на латинской/американской клавиатуре очень интуитивно понятным.

Чтобы увидеть конкретные сопоставления, обратитесь к соответствующему файлу макета, например. для русского (ru): /usr/share/X11/xkb/symbols/ru и найдите xkb_symbols "фонетический" . Он будет иметь все сопоставления клавиш, такие как: key < [ Cyrillic_te, Cyrillic_TE ] >; где указывается, что латинская клавиша T будет кириллической версией: т .

4. Переключение между макетами

XkbOptions содержит некоторые дополнительные параметры (разделенные запятыми). Используется для указания переключения раскладки, светодиодного индикатора уведомлений, режима создания и т. д.

Конфигурация клавиатуры Xorg

Чтобы переключаться между раскладками клавиатуры, мы полагаемся на параметр options XKB.

Он уже поставляется со списком возможных комбинаций клавиш, которые будут переключаться между всеми указанными макетами, перечисленными в /usr/share/X11/xkb/rules/base.lst, начиная с grp: и заканчивая toggle.

5. Тестирование

Чтобы проверить, как это работает, мы указываем команду и пытаемся переключаться между макетами.

Например, для переключения английской и русской (фонетической) клавиатур с одновременным нажатием обеих клавиш CTRL: setxkbmap -model pc105 -layout us,ru -variant ,phonetic -option grp:ctrls_toggle .

Затем нажимаем оба CTRL и начинаем вводить Русский.

6. Сохраняющиеся изменения

setxkbmap изменяет макет только для текущего сеанса X.

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

  • Изменение файлов конфигурации вручную:
    • xinitrc или
    • xprofile .

    6.1 Руководство

    Создайте файл конфигурации X11 /etc/X11/xorg.conf.d/00-keyboard.conf с новыми данными:

    6.2 Автоматически

    locatectl автоматически создает/обновляет необходимый файл конфигурации /etc/default/keyboard (в Ubuntu) или /etc/X11/xorg.conf.d/00-keyboard.conf .

    Используется следующим образом: $ localectl [--no-convert] set-x11-keymap layout [модель [вариант [опции]]]

    Следуя приведенному выше примеру:

    7. Графический индикатор

    Наконец мы добавляем индикатор клавиатуры X11 и переключатель.

    gxkb — это утилита, которая переключает язык, выбирая его из меню, и показывает значок с текущим активным макетом.

    Если вы измените макет с помощью вышеуказанной комбинации клавиш, gxkb также обновит и покажет текущий макет.

    скриншот 1

    Чтобы установить его в Debian/Ubuntu: sudo apt-get install gxkb .

    Ссылки на раскладку клавиатуры

    Чтобы сгенерировать любое графическое представление раскладки клавиатуры, используйте gkbd-keyboard-display -l " или xkbprint .

    • для английской версии для США: gkbd-keyboard-display -l us
    • для английского языка США с вариантом altgr-intl: gkbd-keyboard-display -l «us(altgr-intl)»

    С каждой буквой на клавиатуре может быть связано до 4 символов. Они определены в /usr/share/X11/xkb/symbols/ для каждого языка в виде ключа <[символ1,символ2,символ3,символ4]>; .

    Доступ к каждому символу можно получить с помощью:

    • без изменений
      • нажмите букву без каких-либо других модификаторов
      • нажмите SHIFT +
      • доступ к определению верхнего левого буквенного символа
      • нажмите ALT gr +
      • доступ к определению нижнего правого буквенного символа
      • нажмите SHIFT + ALT gr +
      • доступ к определению верхнего левого буквенного символа

      altgr означает Alt Graph и является правой альтернативной клавишей. «Клавиша-модификатор, используемая для ввода символов, необычных для локали раскладки клавиатуры». 2

      Пример расположения клавиш и доступ к каждому символу:

      SHIFT SHIFT + ALT gr
      без модификаторов ALT gr

      Арабская раскладка клавиатуры без вариантов.

      Арабская раскладка

      Бразильский

      Бразильская португальская раскладка клавиатуры.

      Бразильская раскладка

      Английский (США)

      Английская раскладка клавиатуры (США).

      Английский с международной раскладкой altgr

      Французский

      Французская раскладка клавиатуры.

      Французская раскладка

      Итальянский

      Итальянская раскладка клавиатуры.

      Итальянская раскладка

      Русский

      Основная раскладка русской клавиатуры называется ЙЦУКЕН 3, клавиатура с самой популярной раскладкой кириллицы.

      Русская раскладка

      Русская фонетика

      Русский фонетический вариант раскладки позволяет использовать обычную английскую раскладку (qwerty), но набирать фонетический эквивалент каждой буквы кириллицей.

      Читайте также: