Как привязать глобальные горячие клавиши к программе 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 не было проблем, но для меня это было настоящим препятствием. Я пробовал снова и снова, спрашивал друзей / людей в поле и даже превратил его в награду… Я счастлив, что эта сага окончена и моя душа наконец-то может отдохнуть.
Я надеюсь, что я помог кому-то там не пройти через то же испытание.
Док Браун: Мне потребовалось почти тридцать лет и состояние всей моей семьи, чтобы реализовать видение этого дня. Боже мой, это было так долго?