Я новичок в программировании в операционной системе linux. В моей системе Windows был autohotkey, и я пытаюсь найти лучший способ перенести его на Linux. Я хочу нажать один набор клавиш, но отправить обратно другой набор клавиш, который будет отображаться на веб-странице. Например, если бы я хотел использовать:
keydown (а затем keyup) ctrl shift z, а затем отправить keydown / keyup m enter.
Как мне написать этот код с помощью xdotool? Спасибо за вашу помощь.
Я не уверен именно то, что должна делать эта конкретная последовательность, особенно «нажатие / нажатие», но похоже, что 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, и инструкции доступны здесь .