Скрипт для переключения нескольких раскладок клавиатуры

Использую Archlinux и Pantheon Shell из проекта ElementaryOS, но у которого есть неприятный багс переключением раскладок. Сейчас использую этот скриптдля переключения между раскладками.Работает не идеально(все равно есть небольшая задержка между переключениями),но быстрее штатного переключателя.Также убрал индикатор с панели за ненадобностью.Сейчас я изучаю другой язык и мне нужно добавить в систему другую раскладку.

Из-за того, что python скрипт в 50 строк работает медленно, я хотел бы использовать setxkbmap us, setxkbmap ru, setxkbmap eoдля переключатели, которые, в отличие от всех вышеперечисленных, срабатывают мгновенно. Вопрос как их объединить в скрипт, чтобы нажатие CAPSLOCKвключало US, SHIFT+CAPSLOCKвключало RU, и SHIFT + TABвключает EO? Я никогда не писал таких скриптов и понятия не имею, как это должно выглядеть.

0
28.05.2020, 11:46
1 ответ

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

сначала создайте файл на/usr/share/X11/xkb/symbols/(или в любом другом месте, где расположены файлы конфигурации вашей клавиатуры, это может быть /usr/share/kbd/keymaps/, в зависимости от вашего дистрибутива ), и назовите файл именем, которое не конфликтует с существующим файлы (я назвал свойoo). И добавьте несколько строк в этот файл, чтобы убедиться, что он работает:

xkb_symbols "multi" {
include "us(basic)"
include "level3(ralt_switch)"
name[Group1] = "english";
name[Group2] = "esperanto";
name[Group3] = "russian";
key <CAPS> {[ISO_Next_Group, ISO_Prev_Group]};
key.type[group1]="FOUR_LEVEL";
key.type[group2]="FOUR_LEVEL";
key.type[group3]="FOUR_LEVEL";
key <AD01> {[], [scircumflex, Scircumflex], [Cyrillic_shorti, Cyrillic_SHORTI]};
};

Тогда попробуйте setxkbmap oo -variant multi.

  • нажатие qнапишет q. Этот пример работает только для буквы q(, но я могу легко сделать это и для других букв ). Можно было написать ŝдля эсперанто или йдля русского.
  • набрав Capsциклически между us, eoи ru, сISO_Next_Group(сделайте это три раза, и вы вернетесь к usмакету ).
  • ввод Shift + Capsциклов в обратном порядке с ISO_Prev_Group.

Если вам не нравится этот способ циклического переключения между раскладками, вы можете использовать (изменение строки <CAPS>в файле):

key <CAPS> {[ISO_First_Group, ISO_Last_Group]};
  • ввод Capsпозволяет перейти к раскладке us, независимо от того, где вы сейчас находитесь, с помощью ISO_First_Group.
  • ввод Shift + Capsпозволяет перейти к раскладке ru, независимо от того, где вы находитесь, с помощью ISO_Last_Group.
  • К сожалению, ISO_Second_Groupнет, поэтому вы можете иметь прямой доступ только к 2 раскладкам (, но вы можете переключаться, если хотите использовать более 2 ). Список других подобных кодов клавиш есть здесь .

Как работает этот файл:

  • xkb_symbols "multi" {... };— название варианта раскладки клавиатуры.
  • include "us(basic)"включает раскладку qwerty, поэтому вам не нужно помещать ключи qwertyв файл конфигурации.
  • include "level3(ralt_switch)", если вы хотите иногда использовать Altgr.
  • key <NAME>{ [group 1 content], [group 2 content], [group 3 content]};, содержимое каждой группы представляет собой разделенные запятыми имена для ключа по умолчанию, ключ с Shift, ключ с Altgr... до 8 значений.Содержание первой группы здесь можно опустить.

Примечание :Изменение группы происходит быстрее, чем запуск setxkbmapкаждый раз.

0
18.03.2021, 23:32

Теги

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