Переназначение клавиш в AutoHotkey: рабочие схемы без конфликтов
Переназначение клавиш в AutoHotkey делается одной строкой Исходная::Целевая и работает как “настоящая замена” — с удержанием, автоповтором и отпусканием. Для большинства задач это надёжнее, чем макросы через Send.
Оглавление
Remap или hotkey: что выбрать
Remap — это замена клавиши на клавишу:
OriginKey::DestinationKey
Подходит, когда вы хотите именно “сделать CapsLock как Ctrl” или “поменять местами Home/End”.
Hotkey — это “нажал → выполнил код”:
Key:: { ... }
Нужно для логики, условий, задержек, запуска программ и т. п.
Если задача звучит как “пусть эта кнопка будет другой кнопкой” — начинайте с remap.
Быстрый старт: минимальный скрипт
Создайте файл remap.ahk и запустите двойным кликом:
#Requires AutoHotkey v2.0+
; A → B
a::b
; Поменять местами A и B
; a::b
; b::a
Скрипт появится в трее и начнёт перехватывать нажатия.
Популярные переназначения: CapsLock, Win, отключение клавиш
CapsLock → Ctrl, но CapsLock всё ещё доступен
#Requires AutoHotkey v2.0+
+CapsLock::CapsLock ; Shift+CapsLock включает/выключает CapsLock
CapsLock::Ctrl ; обычный CapsLock становится Ctrl
Отключить клавишу полностью
Так удобно “приглушить” случайные нажатия (например, F1):
F1::return
Отключить правый Win (или заменить)
RWin::return
; RWin::Enter
Ремап комбинаций с модификаторами
Обозначения: ^ Ctrl, ! Alt, + Shift, # Win.
Пример: Ctrl+X делает копирование вместо вырезания:
^x::^c
Переназначение только в нужной программе: #HotIf
Если ремап нужен не везде, ограничьте его активным окном:
#Requires AutoHotkey v2.0+
#HotIf WinActive("ahk_exe notepad.exe")
Home::End
End::Home
#HotIf
Так вы избежите конфликтов с играми, IDE и системными сочетаниями.
С ремапом клавиш, связанных с Alt, легко сломать привычный Alt-Tab/меню. Сначала тестируйте в простом приложении и держите “аварийную” комбинацию для выхода (например, временно добавьте Esc::ExitApp).
VK/SC коды: если клавиша “странная”
Когда клавиша зависит от раскладки или не распознаётся по имени, используйте коды:
- VKnn — виртуальный код (смысл клавиши в Windows)
- SCnnn — сканкод (физическая клавиша на клавиатуре)
Узнать SC можно так:
#Requires AutoHotkey v2.0+
MsgBox Format("SC: {:X}", GetKeySC("LControl"))
Если важно, чтобы ремап не менялся при переключении раскладки — чаще надёжнее привязываться к SC (физической позиции).
Частые ошибки
- Путают remap и
Send.Shift::Homeудерживается корректно, аShift::Send "{Home}"часто ощущается как “тычок” и ломается в играх/редакторах. - Порядок правил. Более специфичные строки (например,
+CapsLock::CapsLock) ставьте выше общих (CapsLock::Ctrl). - Не работает в “повышенной” программе. Если приложение запущено от администратора, а AHK — нет, перехват может не сработать. Решение: запускать скрипт с теми же правами.
- Конфликт с другими ремапами/утилитами. Дублирующие переназначения (в другом AHK-скрипте или драйвере) дают “плавающее” поведение.
FAQ
Можно ли переназначать только в одной раскладке?
Да, но это уже не “чистый remap”: обычно проверяют текущий язык ввода и делают hotkey-логику. Если задача простая — лучше ограничиться #HotIf по приложению.
Почему в некоторых играх ремап не работает?
Часть игр (особенно с защитой) игнорирует перехват ввода. Тогда помогает переназначение внутри игры или системный ремап на уровне драйвера/сканкодов.
Есть ли готовый базовый конфиг на каждый день?
Да, минимально полезный набор:
#Requires AutoHotkey v2.0+
+CapsLock::CapsLock
CapsLock::Ctrl
F1::return
#HotIf WinActive("ahk_exe notepad.exe")
Home::End
End::Home
#HotIf