Домашняя » как » Как привязать глобальные горячие клавиши к программе WINE под Linux

    Как привязать глобальные горячие клавиши к программе WINE под Linux

    Вы когда-нибудь устанавливали программу Windows в Linux под WINE только для того, чтобы обнаружить, что она больше не связывает горячие клавиши системы? У HTG есть работа, которую вы искали.

    Изображение от djeucalyptus

    обзор

    Каждый, кто даже задумывался над идеей перехода на Linux, вероятно, очень быстро столкнулся с проблемой, связанной с тем, что существует одно приложение Windows, которое вам НУЖНО функционировать. Мы уже показали вам, что вы можете сделать это с помощью WINE.

    Для этого автора приложение было приложением Text-To-Speech, использующим механизм Microsoft SAPI4. Установка программы под WINE была легкой задачей, однако после ее завершения я быстро обнаружил, что горячие клавиши, используемые для запуска различных действий программы (запуск чтения, остановка чтения и т. Д.), Не функционировали и что это известно проблема с вином.

    Я рад сообщить, что после долгих поисков я наконец-то нашел решение в виде утилиты GNU, которая может манипулировать интерфейсом X.org с помощью встроенных функций. Хотя xdotool не единственный в своем роде, он стал самым легким в работе и уже был в репозиториях Ubuntu / Mint..

    xdotool

    Программа xdotool может выполнять много связанных с окном задач из CLI, при этом единственными двумя, которые мы собираемся использовать, являются «поиск» и «ключ». Функция «поиск» делает именно это, ищет идентификатор окна / с в соответствии с заданными вами параметрами. Функция «ключ» позволяет имитировать нажатие клавиши для идентификатора окна.

    Установка и настройка

    Предполагается, что вы уже установили WINE и нужную вам программу. В этом примере мы будем использовать Balabolka в качестве приложения «Windows», потому что это хорошая бесплатная копия оригинальной программы, для которой мне нужно это решение (2-й речевой центр).

    Если вы также решили использовать Balabolka, вам нужно активировать ее функцию горячих клавиш.
    Примечание. Возможно, вы захотите установить TTSReader или второй речевой центр даже в демонстрационном режиме, чтобы голоса SAPI были установлены.. 

    Откройте программу и перейдите в настройки (Shift + F6) в «Настройки» -> «Настройки».

    Перейдите на вкладку горячих клавиш и установите флажок «Использовать глобальные горячие клавиши»..

    Нажмите ОК.

    Оставьте его работать в фоновом режиме, чтобы он мог выполнять свою работу, когда мы подключаем к нему нажатия клавиш..

    Установите xdotool, выполнив:

    sudo apt-get установить xdotool

    Глобальная привязка

    Программа xdotool сама по себе не помогает нам глобально связываться с горячими клавишами, но мы можем использовать уже существующую систему горячих клавиш ОС. Что мы сделаем, так это создадим простой скрипт, который использует xdotool для отправки нажатий клавиш, которые мы хотим, в программу Balabolka и вызова ее из системы горячих клавиш ОС..

    Создайте скрипт с именем «start_read.sh» со следующим содержимым:

    ключ xdotool --window $ (поиск xdotool --limit 1 --all --pid $ (pgrep balabolka) --name Balabolka) "ctrl + alt + F9"

    На этот раз создайте еще один скрипт с именем stop_read.sh со следующим содержимым:

    ключ xdotool --window $ (поиск xdotool --limit 1 --all --pid $ (pgrep balabolka) --name Balabolka) "ctrl + alt + F7"

    Примечание: я знаю, что это один вкладыш, для которого не требуется сценарий, но программа Mint / Ubuntu «Keyboard Shortcuts» не сотрудничала с его простым вызовом. Если вы знаете, как это сделать, пожалуйста, поделитесь в комментариях ниже.

    Разбивая эту команду на ее компоненты, мы видим следующее:

    • Часть «-pid $ (pgrep balabolka)» выполняет «pgrep» в программе, которую мы хотим использовать для определения идентификатора процесса. Это сузит поле xdotool «search» только до этого PID.
    • Часть «xdotool search -limit 1 -all… -name Balabolka» еще больше сужает область поиска xdotool и ограничивает возвращаемые ответы до 1. Как в нашем случае, не имеет значения, какой из идентификаторов окон, возвращенных из Программа, ограничивающая результат, выступает в качестве средства форматирования для команды «ключ». Вы можете обнаружить, что вам нужно больше массажировать эту часть, если это имеет значение для программы, которую вы используете.
    • Часть «xdotool key -window% WINDOW_ID%« ctrl + alt + F7 »» отправляет желаемое нажатие клавиши в windowID, который был получен предыдущими частями.

    Сделайте скрипты исполняемыми.

    Linux Mint Keyboard сочетания

    Под Linux Mint глобальные горячие клавиши устанавливаются в программе «Сочетания клавиш».

    После открытия нажмите «Добавить», чтобы создать новый пользовательский ярлык:

    Дайте ему имя и в разделе «Command» укажите полный путь к одному из скриптов, которые мы создали выше. Повторите процесс для второго сценария.

    Теперь, в столбце «Ярлыки», нажмите на слово «Отключено», чтобы получить возможность установить новую комбинацию клавиш.
    Примечание: вы можете, если хотите, использовать что-то другое, чем программа по умолчанию. В некотором смысле создание «переназначения» для привязок клавиш, которые в зависимости от используемой вами программы иначе были бы вне вашего контроля.

    Нажмите комбо, которое вы выбрали, и услышите волшебство.

    Ubuntu Keyboard

    Под Ubuntu программа, которая устанавливает глобальные горячие клавиши, называется просто «Клавиатура»..

    Перейдите на вкладку «Ярлыки» и выберите «Пользовательские ярлыки».

    Нажмите на знак плюс, чтобы добавить ярлык. Дайте ему имя и в разделе «Command» укажите полный путь к одному из скриптов, которые мы создали выше. Повторите процесс для второго сценария.
    Теперь нажмите на слово «Отключено», чтобы получить возможность установить новую комбинацию клавиш..

    Примечание: Повторяя примечание из раздела «Монетный двор», вы можете, если хотите, использовать что-то другое, чем программа по умолчанию. В некотором смысле создание «переназначения» для привязок клавиш, которые в зависимости от используемой вами программы иначе были бы вне вашего контроля.

    Авторские заметки

    Каждый раз, когда я серьезно задумывался о переходе на Linux, эта проблема была первой в моем списке проблем. Не то чтобы в Linux не было проблем, но для меня это было настоящим препятствием. Я пробовал снова и снова, спрашивал друзей / людей в поле и даже превратил его в награду… Я счастлив, что эта сага окончена и моя душа наконец-то может отдохнуть.
    Я надеюсь, что я помог кому-то там не пройти через то же испытание.


    Док Браун: Мне потребовалось почти тридцать лет и состояние всей моей семьи, чтобы реализовать видение этого дня. Боже мой, это было так долго?