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

    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" (собственно говоря такие команды и нужно вешать на каждую горячую клавишу)
    Ответ написан
    Комментировать