Использую Archlinux и Pantheon Shell из проекта ElementaryOS, но у которого есть неприятный багс переключением раскладок. Сейчас использую этот скриптдля переключения между раскладками.Работает не идеально(все равно есть небольшая задержка между переключениями),но быстрее штатного переключателя.Также убрал индикатор с панели за ненадобностью.Сейчас я изучаю другой язык и мне нужно добавить в систему другую раскладку.
Из-за того, что python скрипт в 50 строк работает медленно, я хотел бы использовать setxkbmap us
, setxkbmap ru
, setxkbmap eo
для переключатели, которые, в отличие от всех вышеперечисленных, срабатывают мгновенно. Вопрос как их объединить в скрипт, чтобы нажатие CAPSLOCK
включало US
, SHIFT+CAPSLOCK
включало RU
, и SHIFT + TAB
включает EO
? Я никогда не писал таких скриптов и понятия не имею, как это должно выглядеть.
Есть способ сделать что-то подобное без написания скрипта :вы можете создать новую раскладку клавиатуры, объединив английский, русский и эсперанто, и она будет вести себя почти так, как вы хотите:
сначала создайте файл на/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
каждый раз.