Как создать ярлык, который выполняет команду xdotool для моделирования нажатия клавиши?

Я пытаюсь моделировать нажатие клавиши медиа с помощью пользовательского ярлыка.

До сих пор я смог достигнуть моделирования, мне нужно использование команды:

xdotool key XF86AudioPlay

Это работает отлично, это приостанавливает или запускает аудиоплеер каждый раз, когда это выполняется.

Проблема возникает при попытке выполнить его как ярлык.

Сначала я пытался выполнить псевдоним с пользовательским ярлыком, но он не работал.

Как объяснено по этому вопросу:

Команды, выполненные клавиатурными привязками, не анализируются через оболочку. Ваш лучший выбор состоит в том, чтобы создать мусорное ведро каталога в Вашем homedir.

Затем я создал предложенный сценарий и назвал его simplay:

#!/bin/sh
xdotool key XF86AudioPlay

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

При попытке создать Пользовательский Ярлык, я не мог заставить это выполняться, конфигурация следующая:

Name: test
Command: simplay

Shortcut: Ctrl+Alt+R

После поиска немного больше я нашел другой способ выполнить ярлык:

gnome-terminal -e simplay

Я попробовал его на терминале и заметил, что при выполнении его он быстро откроет новое окно терминала, выполните дочерний процесс, приостановив музыку и сразу закройте окно.

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

Как я могу решить эту проблему согласно Вашему знанию?

13
задан 22 November 2019 в 11:21

3 ответа

Проблема

Ваш ярлык выполняется одновременно с имитацией нажатия клавиши

Если вы запускаете команду, имитирующую нажатие клавиши, вызываемую с ... еще одно нажатие клавиши, вы фактически имитируете третье нажатие клавиши, которое является комбинацией обоих:)

Чтобы решить

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

/bin/bash -c "sleep 1 && xdotool key XF86AudioPlay"

Добавьте эту команду к ярлыку, и она должна работать.

Примечание

Конечно, вы можете немного поиграть со значением в sleep 1 , чтобы установить для него наиболее комфортное значение, в зависимости от того, насколько «липкая» комбинация нажата. sleep 0.5 вполне может подойти и заставит ярлык действовать быстрее.

14
ответ дан 23 November 2019 в 04:52

Вы также можете использовать команду непосредственно в определении ярлыка, поэтому вам не нужно создавать для нее отдельный сценарий.

Вместо использования обходного пути "сна 1" вы можете использовать флаг - clearmodifiers , то есть ваш пользовательский ярлык будет выглядеть так:

Name: test
Command: xdotool key --clearmodifiers XF86AudioPlay

Shortcut: Ctrl+Alt+R

Для меня это работает при сопоставлении ярлыков с Super + F9 .

.
8
ответ дан 23 November 2019 в 04:52

Альтернатива (для более быстрой работы) использованию sleep 1 && xdotool ... - использовать xdotool для освобождения сочетаний клавиш. Немного длиннее, но вы также можете использовать

/bin/bash -c "xdotool keyup R Alt_L Ctrl_L && xdotool key XF86AudioPlay"
2
ответ дан 5 January 2021 в 22:30

Другие вопросы по тегам:

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