Переназначаем клавиши в AutoHotkey: быстрые и надёжные варианты
Чтобы сделать переназначение клавиш в AutoHotkey, достаточно создать .ahk‑файл, запустить его и прописать правило вида CapsLock::Ctrl (AHK v2/v1). Для сложных сценариев используйте hotkey-блоки, sc/vk коды и #HotIf по приложениям.
Быстрый старт: каркас скрипта и базовый remap
Рекомендуемый вариант — AutoHotkey v2 (строже синтаксис, меньше “магии”). Минимальная шапка:
#Requires AutoHotkey v2.0
#SingleInstance Force
SendMode "Input"
Простейшее переназначение (remap) — “клавиша → клавиша”:
CapsLock::Ctrl
RAlt::AppsKey
XButton1::Backspace
Отключить клавишу можно через “пустое действие”:
RWin::Return
Не отключайте без нужды Ctrl/Alt/Win: легко “запереть” себя без привычных сочетаний. Добавьте аварийный выход (см. ниже).
Обозначения модификаторов в AHK
| Запись | Что означает |
|---|---|
^ | Ctrl |
! | Alt |
+ | Shift |
# | Win |
Примеры переназначения сочетаний:
^x::^c ; Ctrl+X → Ctrl+C
#+s::#s ; Win+Shift+S → Win+S
Примечание для AHK v1: логика та же, но блоки часто пишутся иначе; если скрипт “не стартует”, проверьте версию и директиву
#Requires.
Когда нужен не remap, а логика: Send, удержание и sc/vk
Если нужно отправлять последовательность клавиш — используйте hotkey-блок и Send:
F6:: {
Send "^v"
Sleep 150
Send "{Enter}"
}
Популярный вариант “CapsLock = Esc по тапу, Ctrl по удержанию”:
CapsLock:: {
KeyWait "CapsLock", "T0.18"
if (ErrorLevel) {
Send "{Ctrl down}"
KeyWait "CapsLock"
Send "{Ctrl up}"
} else {
Send "{Esc}"
}
}
Если правило “ломается” из-за раскладки или нестандартной клавиатуры, почти всегда помогает привязка к sc (scan code) вместо имени клавиши.
Scancode (sc) и Virtual Key (vk): что выбрать
scXXX— привязка к физической клавише (расположение).vkXX— привязка к коду Windows.
Пример remap по scancode:
sc029::Esc
Чтобы узнать VK/SC, откройте в меню AutoHotkey пункт Key history и нажмите нужную клавишу.
Переназначение только в конкретной программе: #HotIf
#HotIf WinActive("ahk_exe notepad.exe")
CapsLock::Esc
#HotIf
Так вы избегаете конфликтов: одно поведение — в редакторе, другое — в игре/рабочем ПО.
Диагностика и безопасная эксплуатация
Добавьте “кнопку паники”, чтобы мгновенно выключить скрипт:
F12::ExitApp
Если переназначение не работает, проверьте:
- скрипт запущен (значок в трее);
- версия AHK соответствует синтаксису (
#Requires AutoHotkey v2.0); - нет дублей правил на одну клавишу;
- целевое приложение запущено от администратора (тогда и скрипт часто нужен с такими же правами);
- в играх/с античитом перехват ввода может блокироваться — пробуйте
scи/или правила только вне игры.
Частые ошибки
- Перепутали v1/v2 и получили “молчаливый” скрипт или ошибки.
- Отключили
Win/Ctrl/Altбез аварийной клавишиExitApp. - Пишут
Sendтам, где нужен remap (в итоге не тянутся модификаторы и “повтор при удержании”). - Привязались к имени клавиши, хотя нужно
sc/vk(особенно на ноутбуках и с разными раскладками). - Забыли закрыть условие
#HotIfстрокой#HotIf, и правила “утекли” в другие приложения.
FAQ
Можно ли “поменять местами” две клавиши?
Да, двумя строками:
a::b
b::a
Почему CapsLock::Return отключает CapsLock?
Return без параметров означает “ничего не делать”, то есть исходное действие блокируется.
Что надёжнее — vk или sc?
Для одинакового физического расположения на разных раскладках обычно надёжнее sc. Для логики Windows/особых клавиш иногда удобнее vk.