Задать вопрос
xpert13
@xpert13
Full Stack Developer

Как установить свои горячие клавиши на каждую раскладку клавиатуры в Ubuntu?

В настройках раскладки клавиатуры в Windows можно легко поставить на каждую раскладку клавиатуры отдельную гарячую клавишу. У меня используются Ctr+Shift+1, Ctr+Shift+2 и Ctr+Shift+3. Очень привык.

На работе приходится пользоваться Ubuntu, по привычке каждый раз, когда нужно переключить раскладку тянусь к этой комбинации. В настройках Ubuntu возможности задать для каждого языка свои горячие клавиши не нашел. Подскажите пожалуйста как можно выйти из этой ситуации.
  • Вопрос задан
  • 3280 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
xpert13
@xpert13 Автор вопроса
Full Stack Developer
В общем сделал довольно костыльное, но вполне рабочее решение. Написал скрипт, который эмулирует нажатие клавиш переключения раскладки нужное количество раз. Для работы скрипта необходимо установить "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" (собственно говоря такие команды и нужно вешать на каждую горячую клавишу)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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