AutoHotkey — переназначение клавиш, макросы и автоматизация для Windows
Цель этого обзора и краткой инструкции — познакомить вас с бесплатной программой AutoHotkey, базовыми приёмами и заинтересовать в достаточной мере, чтобы вы принялись за дальнейшее изучение её возможностей.
Установка AutoHotkey
AutoHotkey — бесплатная программа с открытым исходным кодом, доступная для загрузки на официальном сайте https://www.autohotkey.com/ . Достаточно загрузить файл установщика и запустить его: каких-либо особенностей в процессе установки нет.
Однако следует учесть один момент: версии AutoHotkey 1.1 и AutoHotkey 2.0 (последняя текущая версия на момент написания статьи) отличаются синтаксисом скриптов: в целом они похожи, но обратной совместимости нет. Зато 2-я версия отличается поддержкой Unicode и улучшенной производительностью, что я, как пользователь, могу подтвердить — это вполне заметно.
В этом обзоре все примеры будут приведены для AutoHotkey 2.0 и в версии 1.1 работать не будут, поэтому, если вы впервые знакомитесь с программой рекомендую загрузить именно 2-ю версию, после чего можно приступать.
Первый запуск
После запуска AutoHotkey вы увидите следующий интерфейс с панелью доступных действий, среди которых:
- New script — создать новый скрипт. Создает новый файл скрипта с расширением .ahk, представляющий собой по сути обычный текстовый файл, который можно создать и в любом редакторе кода или обычном текстовом редакторе.
- Compile — компилировать скрипт из ahk в exe для того, чтобы была возможность запускать его на любом компьютере, даже если на нём не установлена программа AutoHotkey или, к примеру, добавить в автозагрузку.
- Help files — справка по программе, очень подробная, но на английском языке.
- Window spy — утилита для получения информации об окнах Windows. Информация в дальнейшем может быть использована в скриптах для обращения к тем или иным окнам.
- Launch settings — параметры запуска скриптов, обычно можно оставить значения по умолчанию.
- Editor settings — настройки редактора скриптов: выбор своего текстового редактора для редактирования по умолчанию.
Использование AutoHotkey
Для начала использования AutoHotkey нам нужно создать скрипт. Сделать это можно одним из следующих способов:
- Нажать New script в окне AutoHotkey, задать его имя и нажать Create (для создания пустого файла скрипта в указанном расположении) или Edit (для начала его редактирования).
- Открыть любой текстовый редактор и начать писать скрипт (кодировка — UTF-8), затем сохранить файл с расширением .ahk
Воспользуемся первым вариантом и приступим к редактированию скрипта.
Горячие клавиши
В общем случае скрипты содержат указание клавиш и последующую команду или набор команд, которые будут выполняться при нажатии этих клавиш.
Например, мне регулярно требуется набирать символ «—» или «длинное тире», при этом цифровой блока клавиатуры, с помощью которого я мог бы сравнительно легко это сделать, у меня отсутствует. Пишу скрипт:
^#-::SendText "—"
где перед :: указаны клавиши, а далее — действие, сохраняю его и запускаю — будет запущен экземпляр AutoHotkey, выполняющий мой скрипт (либо компилирую в exe и только после этого запускаю). Результат — в области уведомлений мы видим значок выполняющегося AutoHotkey, а нужный мне символ набирается при нажатии сочетания клавиш Windows + Ctrl + «-»
О каких обозначениях системных клавиш при использовании их в качестве модификаторов, а также о каких дополнительных операторах будет полезно и необходимо знать:
- # — клавиша Windows при использовании в сочетаниях клавиш в качестве модификатора. LWin и RWin — левая и правая клавиша Windows при использовании отдельно от других клавиш.
- ! — Alt
- ^ — Ctrl
- + — Shift
- < — использовать только левую из двух клавиш (например, <^a будет срабатывать только при левом Ctrl+A ).
- > — использовать только правую из двух клавиш.
- <^>! — AltGr при наличии клавиши на клавиатуре вместо простой клавиши Alt справа.
- * — любая клавиша-модификатор, независимо от того, нажата она или нет. Например, *#c сработает при нажатии Win+C , Shift+Win+C , Ctrl+Win+C , Alt+Win+C .
- ~ — отключение блокировки «родной функции» клавиши при нажатии. То есть будет выполняться и ваш скрипт и стандартное действие.
- AppsKey — клавиша «Меню».
- RButton — правая кнопка мыши.
- LButton — левая кнопка мыши.
- MButton — средняя кнопка мыши.
- WheelUp и WheelDown — вращение колеса мыши ввех или вниз.
- UP — может использоваться для выполнения действия при отпускании клавиши.
Полный список клавиш и кнопок мыши доступен в официальной справке , а символы для использования системных клавиш в качестве модификаторов в комбинациях клавиш — на этой странице .
Теперь ещё несколько примеров скриптов и дополнительных особенностей, чтобы картина стала яснее.
Несколько горячих клавиш могут выполнять одно действие, в этом случае скрипт будет выглядеть следующим образом:
^Numpad0::^Numpad1::{ MsgBox "Вы нажали Ctrl и 1 либо 0 на цифровом блоке клавиатуры"}
В одном скрипте можно создать нужное вам количество горячих клавиш и других действий, например:
LWin::returnWheelUp::Send "{Volume_Up}"WheelDown::Send "{Volume_Down}"CapsLock & a::AltTab^1::{ Send "Привет,{enter}дружище"}
Скрипт отключит левую клавишу Windows, сделает так, чтобы колесо мыши регулировало громкость, клавиша Caps Lock в сочетании с «a» вызывала появление меню переключения задач Alt+Tab, а сочетание Ctrl+1 печатало текст «Привет, дружище», с переводом строки после запятой.
Горячие строки
Ещё одна концепция — горячие строки, которые можно использовать для автозамены или выполнения действия при наборе определенного набора символов. Пример синтаксиса:
::здр::Здравствуйте!
как, предполагаю, ясно, этот код будет набирать «Здравствуйте!» каждый раз, когда вы будете набирать здр и ставить пробел, один из знаков препинания или выполнять перенос строки.
Возможны и другие варианты использования: например, вывод даты и времени в нужном формате при наборе определенного текста. В справке AutoHotkey есть следующий пример, заменяющий «]d» на дату в указанном формате без нажатия пробела или других символов окончания ввода:
:*:]d::{ SendInput FormatTime(, "M/d/yyyy h:mm tt")}
Переназначение клавиш
Общее представление о простом переназначении клавиш можно было получить в приведённых ранее примеров. В общем случае синтаксис выглядит следующим образом
a::b
здесь нажатие клавиши «a» будет вызывать срабатывание «b». Другие примеры:
- MButton::Shift — средняя клавиша мыши срабатывает как Shift.
- RAlt::AppsKey — правый Alt работает как клавиша «меню», вызывая появление контекстного меню.
- ^x::^c — Ctrl+X будет срабатывать как Ctrl+C.
- RWin::Return — правая клавиша Windows отключена.
Также мы можем отправлять серии нажатий при нажатии выбранной клавиши или клавиш, несколько примеров:
Send "^+{Left}" ; сработает как Ctrl+Shift+ВлевоSend "^{+}{Left}" ; сработает как Ctrl+Shift, затем — нажатие клавиши «Влево»
^1::{Send "^v"Sleep 500 ; пауза 500 мсSend "^v"}
^1::{SetKeyDelay 75, 25 ; 75ms между нажатиями отдельных клавиш, 25ms между нажатием и отпусканием клавиши, при этом потребуется использовать SendEventSendEvent "Первая строка набирается посимвольно{Enter}вторая строка тоже."Send "^S" ; вызываем диалоговое окно сохранения}
Компиляция скрипта AutoHotkey
После подготовки и отладки скрипта вы можете захотеть его скомпилировать в исполняемый .exe файл: это позволит запускать его как отдельное приложение, в том числе на компьютерах, где AutoHotkey не установлен, добавлять запуск вашего скрипта в автозагрузку или планировщик заданий.
Для компиляции выполните следующие шаги:
- В окне AutoHotkey Dash нажмите «Compile». При первом использовании вам будет предложено автоматически скачать Ahk2Exe для компиляции, сделайте это.
- В поле Source укажите путь к файлу скрипта AHK
- В поле Destination можно вручную указать расположение и имя создаваемого EXE файла. Если его не указывать — он будет создан в том же расположении и с тем же именем, что и файл скрипта.
- При желании вы можете указать путь к собственной иконке исполняемого файла в поле Custom Icon, выбрать базовый файл (выбираем ту версию AutoHotkey, для которой подготовлен скрипт), включить сжатие.
- Нажмите «Convert» для запуска конвертации. После успешного завершения процесса вы увидите сообщение об этом, а в выбранной папке появится созданный EXE файл.
На этом всё, теперь у вас есть программа, готовая к запуску на любом Windows-компьютере, работающая в фоновом режиме и выполняющая настроенные вами с помощью скриптового языка AutoHotkey действия.
Другие возможности
Среди прочих возможностей в AutoHotkey доступны:
- Запуск программ и выполнение команд (можем выполнять при нажатии клавиш, наборе строки и в других ситуациях), пример:
Run "notepad C:remontkatext.txt"
- Открытие сайта в браузере по умолчанию:
Run https://remontka.com
- Работа с файлами, папками, дисками: копирование, удаление, перенос и создание для файлов и папок, извлечение и другие действия с накопителями.
- Управление открытыми окнами: отслеживание, изменение расположения и размеров.
- Получение сведений о свойствах окружения Windows.
- Условные операторы и математические функции, работа с переменными и циклы, вывод сообщений, работа с буфером обмена и многое другое.
- Создание собственных GUI-окон с кнопками, полями ввода.
- Полная справка и примеры кода с пояснениями доступны на официальном сайте .
- На этой странице вы можете найти примеры скриптов AutoHotkey более изящных, чем простое переназначение клавиш или автоматический ввод текста по нажатию их комбинаций.
- Ещё один набор примеров скриптов AutoHotkey 2, в большинстве своем автоматизирующими взаимодействие с системой
Примечания
Несколько примечаний в завершение статьи:
- Если вы планируете использовать скрипты AutoHotkey в играх, учитывайте, они могут не всегда в них работать, что связано с античит-функциями в самих играх. Однако иногда находятся рабочие варианты использования. Если что-то не получается, рекомендую поискать в Интернете примеры скриптов для конкретной игры.
- Для завершения работы скрипта AutoHotkey достаточно нажать по его значку в области уведомлений и выбрать пункт «Exit», также есть возможность приостановки выполнения (Suspend).
- Некоторые скомпилированные скрипты AutoHotkey могут вызывать ложноположительные срабатывания антивирусов.
- Русскоязычный раздел официального форума AutoHotkey
Как было отмечено выше, статья не является полноценной инструкцией по всем функциям и возможностям AutoHotkey. Цель — познакомить с общей концепцией и, возможно, заинтересовать этим мощным инструментом автоматизации.
Если это удалось, дальше остается экспериментировать, изучать справку, снова пробовать. Если что-то из задуманного не удается реализовать — спрашивайте в комментариях: я постараюсь помочь, а возможно это сможет сделать кто-то из других читателей.