Шаги, скрипт и AutoHotkey
То, что делает действие, можно записать тремя способами. Формат на карточке Что делает страницы Действия выбирает, какой из них выполняется.
| Формат | Что это | Когда выбирать |
|---|---|---|
| Шаги | Список шагов, которые вы выбираете и заполняете, по строке на шаг. Код вводить не нужно. | Вы хотите собрать действие без написания кода. Подходит большинству действий: отправить клавиши, ввести текст, переместить или закрыть окна, подождать, задать вопрос. |
| Скрипт | Собственный язык скриптов Input.Observer, вводимый в редакторе кода. | Нужны арифметика, сборка текста из частей, циклы со счётчиком-переменной или что-то, что нельзя выразить шагами. |
| AutoHotkey | Скрипт AutoHotkey v2, выполняемый самим AutoHotkey. | У вас уже есть код AutoHotkey или нужно то, что умеет только AutoHotkey. |
Шаги и скрипт выполняются внутри Input.Observer и вызывают одни и те же встроенные функции: шаги — это визуальный способ записать то, что записал бы скрипт. См. Шаги и Справочник по языку скриптов.
Каждый формат хранит своё содержимое
Действие хранит тело шагов, тело скрипта и тело AutoHotkey рядом. Переключение Формат ① меняет, какое из них выполняется. Остальные никогда не удаляются, поэтому можно переключиться обратно.
Если выбранный формат пуст, а в другом есть содержимое, уведомление под переключателем сообщает, что выполнение действия ничего не делает, и предлагает кнопку для перехода к формату с содержимым.
Переход от шагов к скрипту
Если переключиться с Шаги на Скрипт, когда у действия есть шаги, а тело скрипта пусто, Input.Observer предлагает перевести шаги: Преобразовать шаги в скрипт? Выберите Преобразовать, чтобы поместить результат в редактор скриптов.
- Шаги остаются как есть. При возврате к Шаги они отображаются без изменений.
- Обратного преобразования нет. Скрипт нельзя превратить в шаги.
- Для шагов, использующих Повторять, пока, Повторять до тех пор, пока не, Выйти из цикла или Остановить шаги, перевод не предлагается, потому что в скриптах нет соответствующих операторов. Переключиться всё равно можно; тело скрипта просто начнётся пустым.
- AutoHotkey никогда не преобразуется ни в одну, ни в другую сторону.
- Если шаги — это запись со страницы Запись макросов, диалог также сообщает, что скрипт игнорирует Скорость воспроизведения и Детализация пути мыши при воспроизведении: его паузы выполняются с записанной скоростью, а каждое записанное движение мыши воспроизводится (Параметры записи).
Во что превращается каждый вид шага, показано на странице От шагов к скрипту.
AutoHotkey
AutoHotkey — отдельная программа, которую Input.Observer запускает при выполнении действия AutoHotkey. Она не входит в комплект: вы сами устанавливаете AutoHotkey v2 и сообщаете Input.Observer, где он находится.
- Установите AutoHotkey v2.
- На странице Общие включите Включить AutoHotkey и задайте в Исполняемый файл AutoHotkey его
программный файл, например
AutoHotkey64.exe. - Теперь в Формат появляется AutoHotkey. Примените изменения, чтобы движок использовал новый параметр.
Правила:
- AutoHotkey предлагается в Формат, только пока включено Включить AutoHotkey или если действие уже выполняется как AutoHotkey. Действие AutoHotkey при выключенном AutoHotkey ничего не делает, и страница об этом сообщает.
- Используйте обычную сборку AutoHotkey. Сборки с
_UIAв имени, напримерAutoHotkey64_UIA.exe, не могут выполнять скрипты из Input.Observer. - Если AutoHotkey включён, но его программу не удаётся найти при запуске или при перезагрузке конфигурации, Input.Observer предлагает Выбрать исполняемый файл AutoHotkey или Оставить как есть.
- Каждое выполнение запускает новый процесс AutoHotkey с вашим скриптом. Он не может вызывать встроенные функции Input.Observer и работает, пока не завершится сам; горячая клавиша остановки всех действий его завершает.
- Перед вашим скриптом Input.Observer задаёт переменные, описывающие триггер, например
IO_ActionName,IO_TriggerKindи окно жеста или горячей клавиши (Переменные AutoHotkey). Список Переменные, доступные здесь в редакторе показывает те, что предоставляют триггеры действия; щёлкните переменную, чтобы вставить её. - То, что скрипт пишет в стандартный вывод, появляется в диагностической консоли с префиксом
AHK:(Консоль).
Действие на шагах или скрипте тоже может выполнить фрагмент кода AutoHotkey встроенной функцией
AutoHotkeyExecuteScript. Действуют тот же параметр и тот же исполняемый файл.
Переменные AutoHotkey
Каждый запуск AutoHotkey начинается с нескольких строк, которые Input.Observer добавляет перед вашим
скриптом и которые задают переменные IO_ на основе того, что запустило действие. Это относится и к
действию, записанному на AutoHotkey, и к коду, выполняемому через AutoHotkeyExecuteScript, который
получает переменные вызвавшего его действия.
Каждый запуск задаёт эти три:
| Переменная | Содержит |
|---|---|
IO_ActionName | Имя действия. Для глобального события — Global_Event_ и имя события в файле конфигурации, например Global_Event_release или Global_Event_foreground_changed. Пусто, если запуск ничем не вызван, например для скрипта, запущенного из консоли. |
IO_AppGroupName | Имя группы приложений, в которой найдено действие, например Global. Пусто для глобального события. |
IO_TriggerKind | Что вызвало запуск: Gesture, Hotkey, TextExpansion, MouseButton (глобальное событие кнопки мыши или Кнопка рисования отпущена), Wheel (глобальное событие колеса) или None. |
Остальные зависят от триггера, и задаются только переменные этого триггера:
| Триггер | Переменная | Содержит |
|---|---|---|
| Жест | IO_GestureWindow | Окно, над которым начат жест |
IO_GestureButton | Кнопка рисования: left, right, middle, x1 или x2 | |
IO_GestureStartX, IO_GestureStartY | Где начался штрих | |
IO_GestureEndX, IO_GestureEndY | Где он закончился | |
IO_GestureBoundsLeft, IO_GestureBoundsTop, IO_GestureBoundsRight, IO_GestureBoundsBottom | Прямоугольник вокруг всего штриха | |
IO_GesturePoints | Все точки штриха в порядке рисования — массив массивов [x, y] | |
| Горячая клавиша | IO_HotkeyWindow | Окно на переднем плане при нажатии горячей клавиши |
IO_HotkeyVkCode | Код виртуальной клавиши Windows для последней клавиши, например 75 для K | |
IO_HotkeyModifiers | Клавиши-модификаторы сочетания, сложенные вместе: Ctrl 1, Shift 2, Alt 4, Win 8 (Ctrl+Alt — 5) | |
| Подстановка текста | IO_TextExpansionWindow | Окно, в котором вы вводили текст |
IO_TextExpansionPattern | Введённое сокращение | |
| Событие кнопки мыши | IO_MouseWindow | Окно под указателем |
IO_MouseButton | Кнопка: left, right, middle, x1 или x2 | |
IO_MouseX, IO_MouseY | Где был указатель | |
| Событие колеса | IO_WheelWindow | Окно под указателем |
IO_WheelDelta | Насколько повернулось колесо, как сообщает Windows: 120 за один щелчок обычного колеса (колёса с плавной прокруткой и сенсорные панели отправляют меньшие шаги), положительное — от себя (или вправо), отрицательное — к себе (или влево) | |
IO_WheelHorizontal | true для бокового поворота колеса, false для обычного | |
IO_WheelX, IO_WheelY | Где был указатель |
- Окна — это дескрипторы окон, числа, которые AutoHotkey читает как идентификатор окна:
"ahk_id " IO_GestureWindowуказывает окно вWinActivate,WinGetTitleи других оконных функциях. - Позиции — экранные координаты в физических пикселях от левого верхнего угла основного монитора.
Задайте
CoordMode "Mouse", "Screen", прежде чем использовать их с функциями мыши AutoHotkey, которые иначе работают относительно активного окна. - Текст приходит в точности таким, каким был; кавычки, обратные апострофы и переносы строк в имени действия или группы экранируются за вас.
- Переменная, которую триггер не предоставляет, не задаётся вообще, а AutoHotkey останавливает
скрипт, когда тот читает незаданную переменную. Действие с триггерами нескольких видов или фрагмент,
вызываемый из разных действий, должны сначала проверять
IO_TriggerKindили использоватьIsSet(IO_GestureWindow).
Например, действие, которое запускается жестом или горячей клавишей, выводит окно, к которому применено, на передний план и показывает его заголовок:
CoordMode "Mouse", "Screen"
win := IO_TriggerKind = "Gesture" ? IO_GestureWindow : IO_HotkeyWindow
WinActivate "ahk_id " win
MsgBox WinGetTitle("ahk_id " win), IO_ActionName
Движки скриптов из плагинов
Плагин может добавить собственный движок скриптов. Тогда он появляется в Формат с именем плагина, а вводимый там текст передаётся плагину в точности как написан; Input.Observer его не проверяет. Если ни один запущенный плагин не предоставляет этот движок, страница предупреждает, что действие при выполнении будет пропущено. См. Плагины.
В простом режиме
Простой режим показывает Формат только для действия, у которого уже есть скрипт или тело AutoHotkey. Для любого другого действия карточка сразу показывает шаги. Чтобы написать новое действие скриптом, переключите окно в расширенный режим (Окно настройки).