AutoHotkey — переназначение клавиш, макросы и автоматизация для Windows

Использование AutohotkeyЕсли вам когда-либо требовались программы для переназначения клавиш на клавиатуре, создания собственных горячих клавиш, выполнения определенного набора действий при нажатии определенных сочетаний — всё это и даже больше можно сделать с помощью скриптов в AutoHotkey.

Цель этого обзора и краткой инструкции — познакомить вас с бесплатной программой AutoHotkey, базовыми приёмами и заинтересовать в достаточной мере, чтобы вы принялись за дальнейшее изучение её возможностей.

Установка AutoHotkey

AutoHotkey — бесплатная программа с открытым исходным кодом, доступная для загрузки на официальном сайте https://www.autohotkey.com/. Достаточно загрузить файл установщика и запустить его: каких-либо особенностей в процессе установки нет.

Однако следует учесть один момент: версии AutoHotkey 1.1 и AutoHotkey 2.0 (последняя текущая версия на момент написания статьи) отличаются синтаксисом скриптов: в целом они похожи, но обратной совместимости нет. Зато 2-я версия отличается поддержкой Unicode и улучшенной производительностью, что я, как пользователь, могу подтвердить — это вполне заметно.

В этом обзоре все примеры будут приведены для AutoHotkey 2.0 и в версии 1.1 работать не будут, поэтому, если вы впервые знакомитесь с программой рекомендую загрузить именно 2-ю версию, после чего можно приступать.

Первый запуск

После запуска AutoHotkey вы увидите следующий интерфейс с панелью доступных действий, среди которых:

Панель управления Autohotkey
  • New script — создать новый скрипт. Создает новый файл скрипта с расширением .ahk, представляющий собой по сути обычный текстовый файл, который можно создать и в любом редакторе кода или обычном текстовом редакторе.
  • Compile — компилировать скрипт из ahk в exe для того, чтобы была возможность запускать его на любом компьютере, даже если на нём не установлена программа AutoHotkey или, к примеру, добавить в автозагрузку.
  • Help files — справка по программе, очень подробная, но на английском языке.
  • Window spy — утилита для получения информации об окнах Windows. Информация в дальнейшем может быть использована в скриптах для обращения к тем или иным окнам.
  • Launch settings — параметры запуска скриптов, обычно можно оставить значения по умолчанию.
  • Editor settings — настройки редактора скриптов: выбор своего текстового редактора для редактирования по умолчанию.

Использование AutoHotkey

Для начала использования AutoHotkey нам нужно создать скрипт. Сделать это можно одним из следующих способов:

  • Нажать New script в окне AutoHotkey, задать его имя и нажать Create (для создания пустого файла скрипта в указанном расположении) или Edit (для начала его редактирования). Создание скрипта в Autohotkey2
  • Открыть любой текстовый редактор и начать писать скрипт (кодировка — UTF-8), затем сохранить файл с расширением .ahk

Воспользуемся первым вариантом и приступим к редактированию скрипта.

Горячие клавиши

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

Пример скрипта AutoHotkey 2

Например, мне регулярно требуется набирать символ «—» или «длинное тире», при этом цифровой блока клавиатуры, с помощью которого я мог бы сравнительно легко это сделать, у меня отсутствует. Пишу скрипт:

^#-::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 не установлен, добавлять запуск вашего скрипта в автозагрузку или планировщик заданий.

Для компиляции выполните следующие шаги:

  1. В окне AutoHotkey Dash нажмите «Compile». При первом использовании вам будет предложено автоматически скачать Ahk2Exe для компиляции, сделайте это.
  2. В поле Source укажите путь к файлу скрипта AHK Компиляция скрипта AutoHotkey
  3. В поле Destination можно вручную указать расположение и имя создаваемого EXE файла. Если его не указывать — он будет создан в том же расположении и с тем же именем, что и файл скрипта.
  4. При желании вы можете указать путь к собственной иконке исполняемого файла в поле Custom Icon, выбрать базовый файл (выбираем ту версию AutoHotkey, для которой подготовлен скрипт), включить сжатие.
  5. Нажмите «Convert» для запуска конвертации. После успешного завершения процесса вы увидите сообщение об этом, а в выбранной папке появится созданный EXE файл. Скомпилированный скрипт AHK

На этом всё, теперь у вас есть программа, готовая к запуску на любом 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. Цель — познакомить с общей концепцией и, возможно, заинтересовать этим мощным инструментом автоматизации.

Если это удалось, дальше остается экспериментировать, изучать справку, снова пробовать. Если что-то из задуманного не удается реализовать — спрашивайте в комментариях: я постараюсь помочь, а возможно это сможет сделать кто-то из других читателей.

Комментарии (6) к AutoHotkey — переназначение клавиш, макросы и автоматизация для Windows

  • Денис

    как сделать спящий режим на альт+ф10?

    Ответить

    • Dmitry

      не проверял, но по идее:

      !f6::
      {
      DllCall("PowrProf\SetSuspendState", "Int", 0, "Int", 0, "Int", 0)
      }
      

      Ответить

  • Влад

    Добрый, помогите с созданием скрипта. Нужно закрыть процесс «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

      Странно…
      не доводилось с таким сталкиваться. То есть если и были ошибки, то только в коде в моем собственном, а в остальном никогда проблем не замечал.

      Ответить

Оставить комментарий

Интересное
Новое
Список инструкций Windows 11 Windows 10 Подписаться