xdotool keyboard automation

Я новичок в программировании в операционной системе linux. В моей системе Windows был autohotkey, и я пытаюсь найти лучший способ перенести его на Linux. Я хочу нажать один набор клавиш, но отправить обратно другой набор клавиш, который будет отображаться на веб-странице. Например, если бы я хотел использовать:

keydown (а затем keyup) ctrl shift z, а затем отправить keydown / keyup m enter.

Как мне написать этот код с помощью xdotool? Спасибо за вашу помощь.

1
задан 25 April 2020 в 03:14

1 ответ

Я не уверен именно то, что должна делать эта конкретная последовательность, особенно «нажатие / нажатие», но похоже, что xdotool сделает все, что вам нужно.

xdotool key ctrl+shift+z

xdotool key m; xdotool key KP_Enter

xdotool key выполняет по одному символу за раз. Вот почему он вызывается дважды во второй строке с ; , сообщая вашей оболочке, что это две отдельные команды.

Если вы хотите ввести Ctrl + shift + z , система выдаст m Введите , тогда ваш сценарий должен будет прочитать клавиатуру, определить вашу триггерную фразу, а затем запустить вторую команду xdotool, указанную выше. Это немного сложно сделать, когда отображаемое вами окно является веб-страницей в браузере, но см. Ниже. Кроме того, Ctrl + shift + z может быть не лучшей триггерной фразой, потому что она имеет особое значение в окне терминала и, возможно, где-то еще.

Однако: если вы используете AutoHotKey (AHK) и хотите аналогичную функциональность в Linux, то AutoKey - это то, что вам нужно.

Вы получаете фразы (вы можете определить их только в графическом интерфейсе), где нажатие горячей клавиши или ввод аббревиатуры приведет к тому, что содержание вашей фразы будет набрано или вставлено в ваше приложение с необязательным удалением аббревиатуры.

Это довольно похоже на AHK.

Если вам нужно больше контроля или больше сложности, у вас есть скрипты AutoKey.Они также запускаются горячими клавишами и сокращениями, но вместо того, чтобы быть написанными на конкретном языке приложения, они написаны на Python 3 и имеют полную мощность этого языка и всех его модулей расширения, доступных для вашего использования.

AutoKey предоставляет API для генерации событий клавиатуры и мыши с использованием буфера обмена, получения информации об окнах и отображения диалогов.

Каждый из ваших двух приведенных выше примеров должен быть однострочным скриптом:

keyboard.send_keys("<ctrl>+<shift>+z")

и

keyboard.send_keys("m<enter>")

В первом примере + указывает AutoKey одновременно нажимать эти клавиши, чтобы первый два ключа действуют как модификаторы. Во втором примере нет + , поэтому клавиши m и Enter нажимаются последовательно.

На практике вещи, которые набираются в сценариях, обычно длиннее или определяются большей логикой.

Примечание. Если вы используете версию Ubuntu до 20.04, вам необходимо установить AutoKey с GitHub, чтобы избежать получения очень старой неподдерживаемой версии. Это довольно просто сделать в Ubuntu, и инструкции доступны здесь .

1
ответ дан 1 May 2020 в 08:01

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

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