Skip to content

Все для WordPress, веб-розробки — і не тільки

🖱 Як переназначити кнопки миші через AutoHotkey і прискорити роботу

🖱 Як переназначити кнопки миші через AutoHotkey і прискорити роботу

Ви купили мишу з додатковими кнопками, а користуєтеся лише лівою, правою та коліщатком. Кнопки під великим пальцем простоюють, хоча могли б закривати вкладки, перемикатися між ними, дублювати клік і відкривати інструменти розробника. Місяць за місяцем ви тягнетеся до клавіатури за сполученнями, які миша здатна виконувати сама.

Проблема не в «неправильній» миші. Проблема в тому, що штатне ПЗ виробника або не дає змоги прив’язати до кнопки складну дію, або глючить під час зміни активного вікна. Рішення, надіслати з кнопок «порожні» сигнали й перехопити їх скриптом, який розуміє контекст застосунку.

💡 Швидкий огляд:

  • Призначаємо додатковим кнопкам миші віртуальні клавіші F13-F24 через драйвер: вони нічого не роблять у системі, але скрипт їх «чує»
  • Встановлюємо AutoHotkey та пишемо скрипт: для кожного застосунку свій набір дій, від закриття вкладки до утримання Alt у Photoshop
  • Через Window Spy чіпляємося до будь-якого exe-файлу: метод працює в браузері, редакторі коду, відеоплеєрі, будь-де

Що таке AutoHotkey і навіщо він миші

AutoHotkey (AHK) — це безплатна мова автоматизації для Windows із відкритим вихідним кодом. Вона вміє перехоплювати натискання клавіш і кнопок миші, надсилати довільні комбінації в активне вікно та розрізняти застосунки за іменем виконуваного файлу. Саме останнє робить її ідеальним прошарком між «тупим» залізом і софтом: та сама кнопка миші робить різне в Chrome, Photoshop і на робочому столі.

На момент написання актуальна версія AHK v2.0, вона швидша, суворіша до синтаксису й позбулася застарілих команд на кшталт #NoEnv. Наведені нижче скрипти написані під v2, але логіка переноситься й на v1 (вона все ще підтримується для зворотної сумісності).

Альтернатива без скриптів, утиліта XMBC (X-Mouse Button Control) із графічним інтерфейсом. Вона теж розрізняє застосунки, підтримує до 10 шарів на профіль і не потребує жодного рядка коду. Мінус: нульова переносимість між комп’ютерами, а можливості обмежені тим, що заклав розробник. AHK гнучкіший, скрипт копіюється разом з іншими налаштуваннями системи.

Крок 1: прив’язуємо кнопки до віртуальних клавіш F13-F24

Звичайні функціональні клавіші (F1-F12) зайняті, вони щось роблять у кожному застосунку. Але Windows знає й F13-F24, це реально наявні скан-коди, на які жодна програма не вішає обробники за замовчуванням. Вони ідеальні як «пустушки»: драйвер миші шле системі F15, система нікому його не передає, крім нашого AHK-скрипту.

Прив’язка через драйвер миші

Відкрийте фірмове ПЗ вашої миші: Logitech G Hub, Razer Synapse, SteelSeries Engine або універсальне. Знайдіть вкладку призначення кнопок і для кожної додаткової кнопки виберіть «Призначити клавішу» або «Keystroke assignment». Введіть F13, F14, F15…, по одній на кожну кнопку. Не бійтеся, що фізично клавіш F13-F24 на клавіатурі немає: драйвер надішле скан-код, і Windows його прийме.

Як «натиснути» F15, якщо такої кнопки немає? Збережіть цей AHK-сніпет у файл send.ahk і запустіть:

1; send.ahk — эмулирует нажатие F15 через 5 секунд
2Sleep 5000
3Send "{F15}"
4ExitApp

Запустіть, швидко перемкніться у вікно драйвера миші, клікніть у поле «Призначити клавішу», через 5 секунд AHK надішле F15, драйвер його зареєструє. Повторіть для кожної кнопки, змінюючи номер F-клавіші.

Вікно призначення клавіш у драйвері миші з вибором функціональної клавіші

Крок 2: ставимо AutoHotkey і створюємо базовий скрипт

Завантажте AHK з офіційного сайту (обирайте версію v2.0). Після встановлення створіть текстовий файл із розширенням .ahk, наприклад, mouse.ahk. Базова шапка скрипту:

1; mouse.ahk — базовая настройка AHK v2
2#Requires AutoHotkey v2.0
3SendMode "Input"
4SetWorkingDir A_ScriptDir
5SetTitleMatchMode 2
6#MaxHotkeysPerInterval 300
7#InstallMouseHook

Розбір: SendMode "Input", найшвидший і найнадійніший метод надсилання натискань; SetTitleMatchMode 2, шукає підрядок у заголовку вікна (достатньо частини назви); #InstallMouseHook, активує перехоплення кнопок миші на низькому рівні.

Автозапуск під час старту Windows

Натисніть Win+R, введіть shell:startup, відкриється папка автозавантаження. Затисніть Alt і перетягніть mouse.ahk у цю папку: створиться ярлик. Скрипт запускатиметься разом із системою. Редагувати .ahk-файл зручно в Sublime Text або Notepad++, обидва підсвічують синтаксис AHK.

Крок 3: пишемо скрипт для браузера

Браузер — це полігон для кнопок миші. Ось розкладка, що покриває основні навігаційні дії:

1; Chrome / любой браузер на Chromium
2#HotIf WinActive("ahk_exe chrome.exe") or WinActive("ahk_exe msedge.exe")
3 ; Ctrl+W = закрыть вкладку
4 F14::Send "^w"
5 ; Ctrl+Shift+C = инструменты разработчика (inspect element)
6 F22::Send "^+c"
7 ; Ctrl+PageDown = следующая вкладка
8 F16::Send "^{PgDn}"
9 ; Ctrl+PageUp = предыдущая вкладка
10 F17::Send "^{PgUp}"
11 ; Alt+Left = назад по истории
12 F18::Send "!{Left}"
13 ; F5 = перезагрузить вкладку
14 F20::Send "{F5}"
15 ; Ctrl+Shift+T = восстановить закрытую вкладку
16 F23::Send "^+t"
17#HotIf

Скопіюйте блок у mouse.ahk, замінивши номери F-клавіш на ті, які ви призначили в драйвері. Після збереження файлу натисніть Ctrl+R (Reload script) із трей-меню AHK, нові прив’язки запрацюють миттєво, без перезавантаження браузера.

#HotIf обмежує дію блоку, кнопки працюють тільки коли Chrome або Edge у фокусі. Перемкнулися в провідник, ті самі F14-F23 можуть робити інше або нічого.

Крок 4: скрипт для Photoshop і графічного планшета

Приклад складніший: Photoshop, де кнопки не просто шлють сполучення, а утримують клавішу-модифікатор. Це незамінне під час роботи з пером Wacom, кнопки на пері вмикають піпетку кольору та перетягування полотна:

Вікно налаштувань кнопок пера Wacom із призначенням функціональних клавіш
1; Adobe Photoshop
2#HotIf WinActive("ahk_exe photoshop.exe")
3 ; Удерживать Alt = пипетка цвета (пока кнопка нажата)
4 F14::
5 {
6 if !GetKeyState("Alt")
7 Send "{Alt down}"
8 }
9 F14 Up::Send "{Alt up}"
10
11 ; Alt+Ctrl+Z = шаг назад (вместо простого Undo)
12 F16::Send "!^z"
13
14 ; Shift+Ctrl+Z = шаг вперёд
15 F17::Send "+^z"
16
17 ; Удерживать Space = перетаскивание холста
18 F18::
19 {
20 if !GetKeyState("Space")
21 Send "{Space down}{Click down}"
22 }
23 F18 Up::Send "{Space up}{Click up}"
24
25 ; Ctrl+S = сохранить
26 F19::Send "^s"
27
28 ; Ctrl+N = новый документ
29 F20::Send "^n"
30
31 ; Alt+Shift+Ctrl+S = Export → Save for Web
32 F23::Send "!+^s"
33#HotIf

Зверніть увагу на конструкцію F14:: з фігурними дужками — це багаторядковий хоткей. GetKeyState("Alt") страхує від повторного затискання модифікатора, якщо кнопка здригнулася. F14 Up:: спрацьовує при відпусканні, повертає Alt у вихідне положення.

Той самий підхід застосовний до будь-якого софту, де потрібні модифікатори: Figma (Space для драг-хенду), Blender (Shift для точного переміщення), DaVinci Resolve (Alt для копіювання кліпу).

Крок 5: глобальні дії за замовчуванням

Коли жоден із застосунків не у фокусі, кнопки виконують щось універсальне:

1; Глобальные привязки (работают везде, где нет специфичного #HotIf)
2F14::Send "{Backspace}" ; назад (аналог браузерной кнопки)
3F15::Send "{Click 2}" ; двойной клик
4F19::Send "{MButton}" ; средняя кнопка (удобнее чем жать на колёсико)
5F21::Send "#d" ; Win+D = свернуть все окна (boss key)

Подвійний клік однією кнопкою, особистий фаворит автора оригінальної методики. Після тижня використання фізичний дабл-клік викликає подив: навіщо стукати двічі, якщо можна один раз?

Альтернатива без коду: X-Mouse Button Control

Якщо скрипти не ваш шлях, придивіться до X-Mouse Button Control (XMBC). Це безплатна утиліта з графічним інтерфейсом, яка вміє те саме: профілі під конкретні .exe, до 10 шарів на профіль, перемикання шарів за гарячою клавішею.

Плюси XMBC: встановлюється за хвилину, налаштування, вибір дії з випадного списку, не треба правити код. Мінуси: менше гнучкості (не можна написати умову з GetKeyState), а конфігурація живе в реєстрі та рідко виживає при переїзді на інший комп'ютер. Для базових сценаріїв («закрити вкладку», «перемкнути трек»), чудовий вибір. Для багатоповерхових конструкцій з утриманням модифікаторів, тільки AHK.

Як націлити скрипт на будь-який застосунок через Window Spy

Щоб додати підтримку нової програми, потрібно дізнатися ім'я її виконуваного файлу. У треї натисніть правою кнопкою на значок AHK і виберіть Window Spy. Клікніть на вікно цільової програми, Window Spy покаже:

  • Window Title, заголовок вікна (можна цілити за ним)
  • ahk_exe, ім'я процесу (наприклад firefox.exe або code.exe або notion.exe)
  • ahk_class, клас вікна (корисно для розрізнення діалогів усередині застосунку)

Додайте новий блок у mouse.ahk:

1#HotIf WinActive("ahk_exe firefox.exe")
2 F14::Send "^w"
3 ; ... ваши действия
4#HotIf

Збережіть, Ctrl+R для перезавантаження скрипту, готово. Прийом універсальний: відеоплеєри (VLC, PotPlayer), месенджери (Telegram, Discord), IDE (VS Code, PhpStorm), файлові менеджери, усе, що має .exe.

Бонус: керування музикою глобальними медіаклавішами

Якщо на клавіатурі немає мультимедійних кнопок, миша їх замінить. Наступні дії глобальні та не потребують виявлення вікна плеєра:

1; Управление медиа — работает всегда
2F18::Send "{Media_Prev}" ; предыдущий трек
3F19::Send "{Media_Play_Pause}" ; пауза / воспроизведение
4F20::Send "{Media_Next}" ; следующий трек
5F22::Send "{Volume_Down}" ; тише
6F23::Send "{Volume_Up}" ; громче
7F14::Send "{Volume_Mute}" ; выключить звук

Працює з будь-яким плеєром, який реагує на системні медіа-події: Spotify, YouTube Music (PWA), AIMP, foobar2000, навіть вбудований програвач Windows.

⁉️🤔 Часті запитання

Навіщо потрібні F13-F24, якщо AHK може перехоплювати натискання миші напряму?

AHK розрізняє кнопки миші як XButton1 і XButton2, це лише дві додаткові. В ігрових мишах їх буває 8-12, і драйвер однаково виступає посередником. Зв’язка «драйвер → F13-F24 → AHK» масштабується на будь-яку кількість кнопок, а драйвер не намагається виконати дію самостійно, він просто надсилає код клавіші. Якщо скрипт AHK впаде, кнопки миші перестануть щось робити, а не почнуть виконувати неочікувані макроси з драйвера.

Чи працює метод на Windows 11?

Так. F13-F24 — це стандартні скан-коди USB HID, вони не прив’язані до версії Windows. AHK v2.0 офіційно підтримує Windows 10 і 11. На ARM-версіях Windows (Surface Pro X) деякі драйвери мишей можуть не віддавати віртуальні клавіші, але Logitech G Hub і Razer Synapse працюють без проблем.

Що робити, якщо драйвер миші не дає призначити F13-F24?

Деякі офісні миші з урізаним ПЗ обмежені F1-F12. Є два варіанти: спробувати утиліту X-Mouse Button Control, вона вміє призначати F13-F24 незалежно від моделі миші, або використовувати XButton1/XButton2 напряму в AHK. Усього дві кнопки, але для старту вистачить.

Чи можна перенести скрипт на інший комп’ютер?

Так. Скопіюйте файл mouse.ahk і папку з AutoHotkey Portable (є на офіційному сайті). Призначте кнопки в драйвері миші на новому ПК на ті самі F-клавіші, усе запрацює без змін у коді скрипту.

Чи не сповільнює AHK роботу системи?

У простої AHK споживає менш ніж 5 МБ оперативної пам’яті та 0% процесора, офіційна документація підтверджує мінімальний footprint. Хук спрацьовує лише при натисканні відстежуваної клавіші, решту часу скрипт спить. Для порівняння: фірмове ПЗ Razer Central у простої «важить» 200-400 МБ.

Чи варта гра свічок

Первинне налаштування займає хвилин 20: прив’язати кнопки в драйвері, скопіювати сніпети, підправити номери F-клавіш під себе. Далі скрипт живе роками й переїжджає з комп’ютера на комп’ютер разом з рештою конфігу. Віддачі дві.

Перша: економія мікрорухів. Закриття вкладки без Ctrl+W (одне натискання замість двох), перемикання вкладок без Ctrl+Tab, кольоропіпетка у Photoshop без відриву пера від планшета. За день набігають сотні операцій, кожна окремо копійчана, разом, години за рік.

Друга: ефект «магії». Коли колега дивиться на ваш екран і не розуміє, як ви перемикаєтеся між вікнами, не торкаючись клавіатури — це справляє враження. За цим стоїть не магія, а 40 рядків AHK і пів години налаштування.

Якщо працюєте з мишею по 6+ годин на день, налаштуйте кнопки. Перший тиждень незвично, другий, зручно, через місяць ви перестанете розуміти, як люди живуть без цього.

Ось відео, де метод розбирається від встановлення до першого скрипту: