В общем сделал довольно костыльное, но вполне рабочее решение. Написал скрипт, который эмулирует нажатие клавиш переключения раскладки нужное количество раз. Для работы скрипта необходимо установить "xkb-switch" (для определения текущей раскладки клавиатуры) и "xdotool" (для эмуляции нажатия клавиш). Запуск скрипта вешается на нажатие нужных вам клавиш.
Код скрипта:
#!/bin/bash
source_lang=`xkb-switch`
dest_lang=$1
# Если уже на нужной раскладке
if [[ "$source_lang" == "$dest_lang" ]]
then
exit 0
fi
# Необходимая задержка (без неё не сработает)
sleep 0.3
# Если 1 раз нужно нажать на переключение раскладки
if [[
("$source_lang" == "us" && "$dest_lang" == "ru") ||
("$source_lang" == "ru" && "$dest_lang" == "ua") ||
("$source_lang" == "ua" && "$dest_lang" == "us")
]]
then
xdotool key super+space
exit 0
fi
# Если 2 раза нужно нажать на переключение раскладки
if [[
("$source_lang" == "us" && "$dest_lang" == "ua") ||
("$source_lang" == "ru" && "$dest_lang" == "us") ||
("$source_lang" == "ua" && "$dest_lang" == "ru")
]]
then
xdotool key super+space super+space
exit 0
fi
К сожалению скрипт не универсальный (я до этого вообще скриптов на баше не писал), потому он заточен под конкретный случай. В данном случае это:
1. Три языка, которые идут в порядке Us, Ru, Ua
2. Переключение раскладки в системе установлено на super+space
Если кто-то предложит вариант универсального скрипта, который сам будет определять горячие клавиши для переключения раскладки и порядок языков в системе - буду только признателен.
Скрипт запускается командой "<путь_к_скрипту> <код_языка>", например, если ваш файл находится в домашнем каталоге и имеет имя "language_switcher.sh", тогда для переключения на русский нужно выполнить "./language_switcher.sh ru" (собственно говоря такие команды и нужно вешать на каждую горячую клавишу)