Как привязать глобальные горячие клавиши к программе 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 не взаимодействовала с его простым вызовом. Если вы знаете, как это сделать, поделитесь в комментариях ниже.

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

  • Часть «–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 горячие клавиши

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

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

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

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

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

Клавиатура Ubuntu

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

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

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

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

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

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

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

Оцените статью
TutoryBird.Ru
Добавить комментарий