AutoHotkey — переназначение клавиш, макросы и автоматизация для Windows
Если вам когда-либо требовались программы для переназначения клавиш на клавиатуре, создания собственных горячих клавиш, выполнения определенного набора действий при нажатии определенных сочетаний — всё это и даже больше можно сделать с помощью скриптов в AutoHotkey.
Цель этого обзора и краткой инструкции — познакомить вас с бесплатной программой 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::return WheelUp::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 между нажатием и отпусканием клавиши, при этом потребуется использовать SendEvent SendEvent "Первая строка набирается посимвольно{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:\remontka\text.txt"
- Открытие сайта в браузере по умолчанию:
Run https://remontka.pro
- Работа с файлами, папками, дисками: копирование, удаление, перенос и создание для файлов и папок, извлечение и другие действия с накопителями.
- Управление открытыми окнами: отслеживание, изменение расположения и размеров.
- Получение сведений о свойствах окружения Windows.
- Условные операторы и математические функции, работа с переменными и циклы, вывод сообщений, работа с буфером обмена и многое другое.
- Создание собственных GUI-окон с кнопками, полями ввода.
- Полная справка и примеры кода с пояснениями доступны на официальном сайте.
- На этой странице вы можете найти примеры скриптов AutoHotkey более изящных, чем простое переназначение клавиш или автоматический ввод текста по нажатию их комбинаций.
- Ещё один набор примеров скриптов AutoHotkey 2, в большинстве своем автоматизирующими взаимодействие с системой
Примечания
Несколько примечаний в завершение статьи:
- Если вы планируете использовать скрипты AutoHotkey в играх, учитывайте, они могут не всегда в них работать, что связано с античит-функциями в самих играх. Однако иногда находятся рабочие варианты использования. Если что-то не получается, рекомендую поискать в Интернете примеры скриптов для конкретной игры.
- Для завершения работы скрипта AutoHotkey достаточно нажать по его значку в области уведомлений и выбрать пункт «Exit», также есть возможность приостановки выполнения (Suspend).
- Некоторые скомпилированные скрипты AutoHotkey могут вызывать ложноположительные срабатывания антивирусов.
- Русскоязычный раздел официального форума AutoHotkey
Как было отмечено выше, статья не является полноценной инструкцией по всем функциям и возможностям AutoHotkey. Цель — познакомить с общей концепцией и, возможно, заинтересовать этим мощным инструментом автоматизации.
Если это удалось, дальше остается экспериментировать, изучать справку, снова пробовать. Если что-то из задуманного не удается реализовать — спрашивайте в комментариях: я постараюсь помочь, а возможно это сможет сделать кто-то из других читателей.
Денис
как сделать спящий режим на альт+ф10?
Ответить
Dmitry
не проверял, но по идее:
Ответить
Влад
Добрый, помогите с созданием скрипта. Нужно закрыть процесс «X» и запустить его заново раз в сутки, после загрузится окно с кнопкой, далее необходимо имитировать нажатие кнопки мыши в этом окне.
Ответить
Алексей
Здравствуйте, спасибо за рекомендацию данной программы. С ее помощью удалось наконец отключить раздражающие свайпы от краев тачпада на ноутбуке (Touchpad Edge Swipes – это не жесты). До этого периодически то окна сворачивались, то вылезала область уведомлений, что сильно мешало при работе. У меня обычный тачпад, для которого нет специального драйвера, через который его можно было бы настроить (в отличие, например, от тачпада от Synaptics). Способ, который видел в интернете, через выставление значения EnableEdgy=0 в ветке реестра HKEY_CURRENT_USER\Software\ Microsoft\ Windows\ CurrentVersion\ PrecisionTouchPad, у меня не сработал. Свайпы по краям аналогичны сочетаниям клавиш Win + Tab, Down, A, B. Поэтому для AutoHotKey можно написать такой скрипт:
#Tab::return
#a::return
#Down::return
#b::return
Скомпилировал его в exe, поставил на запуск в планировщике при входе в систему и вуаля – проблема решена. Может, кому пригодится.
Ответить
Влад
Честно. Г…о а не программа. Написал код. Компилирую. Выскакивает ошибка. Стираю первый символ, печатаю его снова. Компилирую. Ошибки нет. WTF? 0_o. Через некоторое время программа перестает работать. Просто нажимаю запустить с правами администратора и нуль реакции. И так постоянно.
Ответить
Dmitry
Странно…
не доводилось с таким сталкиваться. То есть если и были ошибки, то только в коде в моем собственном, а в остальном никогда проблем не замечал.
Ответить
oduwanchik
скажите пожалуйста а как обозначается капс лок?
Ответить
Dmitry
Здравствуйте.
Гугл подсказывает, что просто Capslock
Ответить
Евгений
Можно ли настроить программу так, чтобы в диалоговом окне сохранения файла она дописывала новый номер, напр. предыдущий номер + 1 и нажимала на сохранить? И так около 200 раз подряд.
Необходим, автонажимальщик клавиш c генерацией имени файла при множественном сохранении нескольких файлов.
Ответить
Dmitry
Здравствуйте.
Уверен, что можно, всё необходимое в ней есть (счетчики, генерация кликов по координатам, циклы и прочее). Но вот конкретного рецепта не дам, сам бы долго доходил и экспериментировал (и просил бы помощи у ChatGPT, он на идеи неплохие наводит по AHK, недавно обратил внимание, только нужно ему сказать, для какой версии писать).
Ответить