Настройка клавиш для переключения языка в Linux (+ что делать, если нет значка языка Ru/En на панели задач). Авто-смена раскладки при наборе текста

Доброго дня!
Многие начинающие пользователи при знакомстве с определенными дистрибутивами Linux сталкиваются с проблемой переключения раскладки (с русского на английский, и наоборот). Причем, иногда в трее (на панели задач) даже нет такого значка!
Собственно, сегодня в этой небольшой заметке решил показать, как это можно достаточно легко исправить (причем, попутно мы сможем «включить» авто-смену раскладки: т.е. система будет определять сама, на каком языке вы сейчас печатаете. В некоторых случаях — это очень удобно!).
Теперь о том, что и как настроить.

Пример (о чем идет речь) // дистрибутив Xubuntu
Решение вопросов с раскладкой
ШАГ 1: параметры системы
Важно: этот шаг (в принципе) можно пропустить. Но привожу его я из-за того, что в некоторых случаях вопрос можно решить через параметры системы (без доп. приложений).
Первое, что очень желательно сделать — открыть параметры системы / настройки клавиатуры ( по англ. : Settings / Keyboard). В зависимости от используемого дистрибутива Linux — нужная вкладка может находиться несколько в отличных разделах.

Открываем настройки клавиатуры / дистрибутив Xubuntu
После нужно перейти во вкладку «раскладка» (англ.: «layout») и проверить, чтобы у вас в системе было как минимум 2 раскладки (английская и русская / кому нужно — могут добавить и больше). Обычно, в этом же разделе настроек можно сменить клавиши для переключения языка (по англ.: «Change layout option» ).
Примечание: в ряде дистрибутивов Linux по умолчанию ставится только 1 раскладка. И, разумеется, пока их не будет хотя бы 2 — сменить клавиши для ее переключения нельзя! Ну и на панели задач никаких языковых значков не отображается. В общем-то логично.

Добавляем нужные языки и устанавливаем клавиши для переключения языка
Есть еще один момент.
Необходимо открыть настройки панели задач (по англ.: «Panel»). Обычно данная вкладка находится среди прочих параметров системы.
В настройках панели необходимо добавить новый значок (по англ.: «Add new item») — среди списка найти нужно что-то похожее на «Keyboard layouts».
Собственно, теперь языковой значок (с флажком) будет отображаться в трее, кнопки для переключения раскладки настроены. Задача решена.

Добавляем на панель текущую раскладку
ШАГ 2: установка доп. приложения X Neural Switcher
Если в шаге 1 (выше) у вас возникли вопросы, и вы не смогли через параметры системы настроить раскладку, ее переключение, и значок на панели задач — вопрос можно решить иначе. Для этого нам понадобиться приложение xneur .
X Neural Switcher (xneur) — архи-полезное приложение (в Linux) для автоматического переключения раскладки клавиатуры (те. при вашей печати — оно само будет определять язык. Аналог Punto Switcher для Windows).
Кроме этого, приложение создаст значок с флажком выбранного языка на панели задач, позволит вручную задать сотни комбинаций клавиш (в т.ч. и для смены раскладки), исправлять ошибки и опечатки при наборе текста, и многое другое.
Для его установки, как правило, достаточно открыть магазин приложений (менеджер ПО) и ввести в поисковую строку «xneur». Пример ниже.

Либо установить можно также через терминал (вызов по Win+T или по Ctrl+Alt+T), команда:

На всякий stable-версия (если предыдущая команда не установила приложение):
sudo add-apt-repository ppa:andrew-crew-kuznetsov/xneur-stable
sudo apt-get update
sudo apt-get install gxneur
ШАГ 3: настройка X Neural Switcher
Т.к. приложение X Neural Switcher поддерживает русский язык на 100% и по умолчанию вполне корректно работает (и выводит значок с текущей выбранной раскладкой на панель задач) — то скорее всего, никаким специальном образом настраивать его не придется.
Однако, я бы всё же порекомендовал, во-первых, во вкладке «Общее / основное и типографика» настроить базовые правила. Например, весьма удобно откл. случайные нажатия на CapsLock, разрешить исправление грубых опечаток и пр.

Во-вторых, также посоветовал бы в разделе «Комбинации клавиш» задать свои клавиши для переключения раскладки. Мне, например, удобно работать с Alt+Shift.

Переключение раскладки — комбинация клавиш
В-третьих, хорошо бы приложению X Neural Switcher разрешить запускаться вместе с Linux (чтобы не открывать его каждый раз вручную самостоятельно). Обычно, для этого достаточно просто поставить соответствующий флажок в параметрах запуска.
Также на всякий случай приведу ссылку на альтернативные способы добавления приложения в автозагрузку.
В помощь!
Добавление приложения в автозагрузку Linux (как запускать программу автоматически при старте ОС Linux)

Запускать автоматически при старте
Собственно, на этом вроде как и всё — первоначальная задача решена полностью!

Теперь значок языка есть
На сим пока всё. Удачной работы!
Как поменять раскладку в линукс
Программа предназначена для переключения раскладок клавиатуры. Основана на расширении XKB для X11. Позволяет использовать различные раскладки клавиатуры.
Главное окно программы приведено на рис. 1.

-
Окно содержит вкладки «Раскладка» (Вкладка «Раскладка») и «Опции XKB» (Вкладка «Опции XKB»), а также следующие управляющие элементы:
флаг «Изменить раскладки клавиатуры по умолчанию» — включает режим переопределения раскладок клавиатуры. В этом режиме управляющие элементы вкладок становятся доступными для установки нужных раскладок клавиатуры и их параметров.
При выключенном флаге используется конфигурация раскладок X11;
Вкладка «Раскладка»
-
Вкладка «Раскладка» (см. рис. 1) содержит следующие управляющие элементы:
- «Модель клавиатуры» — устанавливается модель клавиатуры (не зависит от раскладок);
- «Доступные раскладки» — в табличном виде отображается список доступных раскладок. Столбцы:
- «Название раскладки» — национальный флаг и название языка раскладки;
- «Раскладка» — буквенный код раскладки.
Элемент списка (раскладка) выделяется щелчком любой кнопки мыши;
- «Название раскладки» — национальный флаг и название языка раскладки;
- «Раскладка» — буквенный код раскладки;
- «Варианты» — вариант раскладки;
- «Метка» — метка для варианта раскладки.
Первая раскладка в списке является раскладкой по умолчанию. Порядок переключения активных раскладок соответствует порядку следования их в списке. Элемент списка (раскладка) выделяется щелчком любой кнопки мыши;
Вкладка «Опции XKB»
Вкладка «Опции XKB» приведена на рис. 2.

-
Окно содержит следующие управляющие элементы:
- поле «Комбинации переключения раскладки»:
- «Основные комбинации» — кнопкой справа устанавливается комбинация клавиш для переключения раскладок. По щелчку левой кнопки мыши на данной кнопке в поле «Опции XKB» вверху открывается категория «Клавиши для смены раскладки». Если у описания комбинации клавиш устанавливается флаг, то это описание отображается на данной кнопке, и отмеченные клавиши устанавливаются в качестве основной комбинации переключения клавиатуры. Справа от данной кнопки располагается кнопка ее очистки — надпись на кнопке заменяется на «Нет», и отменяется установка соответствующего флага в поле «Опции XKB»;
- «Комбинации клавиш для 3 уровня» — кнопкой справа устанавливается комбинация клавиш для переключения раскладки клавиатуры на третий уровень. По щелчку левой кнопки мыши на данной кнопке в поле «Опции XKB» вверху открывается категория «Клавиши для выбора третьего уровня». Если у описания комбинации клавиш устанавливается флаг, то это описание отображается на данной кнопке, и отмеченные клавиши устанавливаются в качестве основной комбинации переключения для переключения раскладки клавиатуры на третий уровень. Справа от данной кнопки располагается кнопка ее очистки — надпись на кнопке заменяется на «Нет», и отменяется установка соответствующего флага в поле «Опции XKB»;
- «Команда» — отображается вместе с опциями команда setxkbmap для установки параметров XKB настройки клавиатуры. Через эту команду выполняются действия программы.
Как поменять раскладку в линукс
Поменять горячие клавиши для переключения языка можно с помощью утилиты Gnome Tweak Tool.
[С помощью команды apt install]
$ sudo apt install gnome-tweaks
[С помощью Менеджера пакетов]
1. Запустите Менеджер пакетов Ubuntu. Введите в строке поиска tweak , просмотрите список найденного, выберите qnome-tweaks .

2. Двойным щелчком добавьте qnome-tweaks и его зависимости в список устанавливаемых пакетов.

3. Кликните Применить. После установки среди значков появится значок «Доп. настройки». Это и есть Gnome Tweak Tool.
[С помощью командной строки]
$ sudo apt-get install gnome-tweak-toolДля изменения клавиш переключения раскладки выполните следующее:
1. Запустите Gnome Tweak Tool командой gnome-tweaks, перейдите в раздел настроек «Клавиатура и мышь».
2. Кликните на кнопку «Дополнительные параметры раскладки».
3. Разверните список «Переключение на другую раскладку», выберите нужный вариант переключения. Мне больше всего нравится Ctrl+Shift.

4. Крестиком закройте окно «Дополнительные параметры раскладки», и закройте Gnome Tweak Tool. Теперь для переключения языка будет работать привычная для Вас комбинация клавиш.
5. Переключение раскладки индивидуально для каждого окна. Для Ubuntu 20.04 и 22.04 это делается по-разному, разработчики снова намудрили.
Ubuntu 20.04: зайдите в настройки, раздел Регион и язык -> кликните на шестеренку пункта «Источники ввода». Выберите радиокнопку «Использовать различные источники для каждого окна».

Ubuntu 22.04: в тех же настройках выберите раздел Клавиатура -> Переключение источников ввода, переключитесь на радиокнопку «Использовать свой источник для каждого окна».

После этого в каждом открытом окне раскладка клавиатуры будет переключаться независимо от других.
[Ссылки]
1. Смена языка debian горячие клавиши site:altarena.ru.
2. Установка Gnome Tweak Tool в Ubuntu site:losst.ru.Linux. Настройка клавиатуры
Можно пользоваться и стандартными настройками, но иногда внесенные изменения дают возможность набирать быстрее (это, конечно, не слепая печать, но все же), совершать меньше ошибок, меньше переключать раскладку.
Почему я захотел изменить свою клавиатуру?
Во-первых, когда я начал использовать vim как основной редактор, я понял, что не хочу каждый раз тянуться к ESC . Кроме того, я писал в основном на питоне, поэтому ; нажимал сильно реже, чем : , а в vim разница стала более явной.
Во-вторых, через некоторое время я стал пользоваться вимовскими комбинациями для навигации в браузере, дальше — тайловый оконный менеджер i3 , где они тоже использовались, и хотелось перейти на них везде (вместо обычных стрелок, например, в файловом менеджере).
В-третьих, когда начал писать конспекты на TeX в vim , я понял, что могу реально упростить и ускорить этот процесс; если английская и русская раскладки будут больше похожи друг на друга, то я смогу вводить одинаковые символы (например, точку, запятую, кавычки, доллар) одинаково. Плюс приходится часто менять язык, поэтому надо это делать быстро, надежно и удобно.
Настройка переключения раскладки
Что же, начнем. Сначала разберемся, как можно настроить смену раскладки клавиатуры.

- Первый способ. Можно воспользоваться какой-нибудь программой, например, gnome-tweaks :
здесь мы можем выбрать один из вариантов, предлагаемых нам разработчиками.Главное — мы не можем создать свой вариант. Давайте научимся делать и это.
- Второй способ.
Посмотрим, как то же самое можно сделать руками, и чего еще можно добиться.
Давайте поставим переключение на правый Alt (он же AltGr ):
$ setxkbmap -layout us,ru -option grp:toggleНо где можно узнать, какие еще есть варианты, и как создать свои? Все файлы лежат /usr/share/X11/xkb/symbols/ . И наши переключения находятся в /usr/share/X11/xkb/symbols/group . Вот так выглядит выбранный вариант:
partial modifier_keys xkb_symbols "toggle" < virtual_modifiers AltGr; key < symbols[Group1] = [ ISO_Next_Group ], virtualMods = AltGr >; >;Ациклическое переключение раскладок
Изменим циклическое переключение по AltGr на ациклическое: AltGr переключает на латинскую раскладку, Shift+AltGr — на русскую.
Перед тем как что-то менять, посмотрим на текущие настройки:
$ setxkbmap -layout us,ru -printДолжны получить что-такое ( pc105 может отличаться в зависимости от количества клавиш на вашей клавиатуре):
xkb_keymap < xkb_keycodes < include "evdev+aliases(qwerty)" >; xkb_types < include "complete" >; xkb_compat < include "complete" >; xkb_symbols < include "pc+us+ru:2+inet(evdev)" >; xkb_geometry < include "pc(pc105)" >; >;Теперь запишем это в конфигурационный файл ~/.config/xkb/config .
В файле /usr/share/X11/xkb/symbols/group можно найти аналогичный вариант с CapsLock , откуда можно понять, что на us будет переключать ISO_First_Group , а на ru — ISO_Second_Group .
Вот такая строчка
говорит, что клавиша при обычном нажатии вызывает ISO_First_Group , а вместе с Shift — ISO_Last_Group .
Изменим в только что созданном файле xkb_symbols :
xkb_keymap < xkb_keycodes < include "evdev+aliases(qwerty)" >; xkb_types < include "complete" >; xkb_compat < include "complete" >; xkb_geometry < include "pc(pc105)" >; xkb_symbols "my" < include "pc+us+ru:2+inet(evdev)" key < [ ISO_First_Group, ISO_Last_Group ] >; >; >;Проверим, что у нас получилось. Загружаем конфиг:
$ xkbcomp $HOME/.config/xkb/config $DISPLAYТеперь язык должен переключаться по заданным комбинациям.
Замечание
Это очень удобно, когда набираешь текст, используя сразу две раскладки (например, TeX ), потому что, переключение происходит часто и гораздо проще каждый раз когда начинаешь писать русский текст нажимать нужные клавиши, чем проверять, какой язык стоит сейчас, и переключать, если нужно. Просто меньше тратишь умственных сил, меньше совершаешь ошибок.
Еще один плюс ациклического переключения — можно больше не использовать никаких индикаторов.
Изменение клавиш
Двоеточие и точка с запятой
Поменяем местами двоеточие и точку с запятой. Как задать значение мы уже знаем, осталось понять как называются символы. Это можно посмотреть в тех же файлах /usr/share/X11/xkb/symbols/ . Выберем файл us и найдем нужную клавишу:
Осталось записать в наш конфигурационный файл в обратном порядке.
ESC и CapsLock
Поменяем ESC и CapsLock . В той же директории в файле capslock можно найти:
hidden partial modifier_keys xkb_symbols "swapescape" < key < [ Escape ] >; key < [ Caps_Lock ] >; >; hidden partial modifier_keys xkb_symbols "escape" < key < [ Escape ] >; >;partical — специальные куски, которые мы можем включать в другие раскладки.
Теперь либо пишем include «swapescape» , либо просто копируем код.Alt и Win
Еще аналогично можно поменять, например, левый Alt и Win , что особенно удобно в i3wm , если поставить главный модификатор на Win , то он будет ближе к остальной клавиатуре, и плюс мы не ограничим себя в использовании Alt в комбинациях различный программ (браузер, файловый менеджер. ).
Модификаторы
Для чего вообще они нужны? Можно задать комбинации, которые будут позволять нам быстрее и удобнее набирать какие-то символы или вызывать какое-то действие, помещая поверх других, то есть эти комбинации не будут пересекаться с уже созданными или с комбинациями заданными системой.
Существует два дополнительных уровня: level3 , level5 . И еще комбинации с Shift .
Сделаем так, чтобы клавиша CapsLock в комбинации с h, j, k, l давала эффект стрелки. Тогда не нужно будет каждый раз тянуться ним.
Назначим модификатор (мы уже решили поставить туда ESC , но можно сделать и то и другое: об этом далее):
Если мы хотим назначить для разных раскладок разное значение, то сначала нужно их определить:
name[group1] = "English (US)"; name[group2] = "Russian";Теперь нужно настроить клавиши h, j, k, l. Сначала узнаем их имя — тоже можно посмотреть файл раскладки, это несложно. Их зовут ,… . Какие команды вызывают стрелки можно узнать совершенно аналогично. Дальше пропишем поведение в комбинации с модификатором:
key < [ h, H, KP_Left ] >; key < [ j, J, KP_Down ] >; key < [ k, K, KP_Up ] >; key < [ l, L, KP_Right ] >;При нормальном нажатии будет обычная буква, при нажатии с шифтом — заглавная, с модификатором третьего уровня — стрелки.
Назначение модификатора как второе значение клавиши
Кроме стрелок можно назначить на третий слой символы или другие операции.
Давайте сделаем, чтобы кроме функции модификатора клавиша CapsLock выполняла и предназначенную ей миссию ранее — была ESC .Для этого нам понадобится xcape , которая позволяет назначить на на клавишу значение, которое она будет иметь, если нажать ее не в комбинации. Еще есть полезная функция: можно настроить время, после истечения которого ее эффект отменяется.
Как я уже обещал, мы сделаем так, чтобы при однократном нажатии клавиши CapsLock вызывался ESC , а в комбинациях выступала в роли модификатора третьего уровня.
Для этого нужно выполнить
$ xcape -t -e "первое значение=втрое значение"Я использую интервал 500 миллисекунд. Для нашей цели:
$ xcape -t 500 -e "ISO_Level3_Shift=Escape"Дальнейшие изменения
Когда я пишу в TeX , я использую достаточно много одинаковых символов, но в разных раскладках. Поэтому появилась идея сделать их максимально похожими. В раскладках по умолчанию сильно отличаются положения точки, запятой, кавычек, квадратных и фигурных скобок, вопросительных знаков, различных слэшей.
Здесь было две идеи:
-
Поставим редко используемые русские буквы на крайних правых клавишах на третий слой других букв.
Схема была такая:Клавиша Третий слой у ю в б ь ъ з ж щ х Для достижения такого эффекта добавляем в конфиг (здесь для у/ю, для остальных аналогично, названия букв русского алфавита можно посмотреть, где и все остальное):
key < type[group2]="FOUR_LEVEL", symbols[group2]=[Cyrillic_ha, Cyrillic_HA, bracketleft, braceleft] >; key < type[group2]="FOUR_LEVEL", symbols[group2]=[Cyrillic_hardsign, Cyrillic_HARDSIGN, bracketright, braceright] >; key < type[group2]="FOUR_LEVEL", symbols[group2]=[Cyrillic_zhe, Cyrillic_ZHE, colon, semicolon] >; key < type[group2]="FOUR_LEVEL", symbols[group2]=[Cyrillic_e, Cyrillic_E, apostrophe, quotedbl] >; key < type[group2]="FOUR_LEVEL", symbols[group2]=[Cyrillic_be, Cyrillic_BE, comma, less] >; key < type[group2]="FOUR_LEVEL", symbols[group2]=[Cyrillic_yu, Cyrillic_YU, period, greater] >;Еще можем поставить в русской раскладке слэш и вопросительный знак туда, где они стоят в английской.
Плюс к этому добавляется возможность сделать одинаковыми и символы на цифрах, так как и кавычки, и двоеточие, и точка с запятой будет на других клавишах.
key < [ 3, numbersign, number, apostrophe ] >; key < [ 4, dollar ] >; key < [ 6, asciicircum ] >; key < [ 7, ampersand ] >;Замечание
Аналогично можно добавлять пятый слой, хотя пока лично я не испытываю никакой нужды — вполне хватает третьего.
Интересный вариант BackSpace напоследок
А может хватит тянуться далеко-далеко в дальний угол клавиатуры?
Поставим-ка BackSpace на $mod3+Space ( $mod3 наш модификатор третьего уровня)!P.S.
Все настройки в принципе применимы для любых Linux дистрибутивов, использующих X.
Полные конфиги можно найти на GitHub.
Этот пост стал для меня отправной точкой к пониманию того, как можно и нужно настроить клавиатуру.