Как узнать коды клавиш на клавиатуре: 5 работающих способов

При нажатии клавиши F12 в браузере открывается инструмент разработчика, но вместо ожидаемого действия скрипт игнорирует событие — потому что в коде используется неверный keycode или scancode. Чтобы точно определить, какой числовой идентификатор отправляет клавиатура, достаточно воспользоваться встроенными утилитами ОС или онлайн-сервисами. Например, клавиша Enter в Windows генерирует код 13 (ASCII), но её физический скан-код может отличаться в зависимости от раскладки или модели устройства.

Проблема усложняется, если нужно отловить комбинации клавиш (например, Ctrl+Shift+T для восстановления вкладки) или спецсимволы вроде ~ или . В таких случаях стандартные методы вроде event.keyCode в JavaScript могут давать неполные данные. Ниже — актуальные способы получения кодов для всех ОС, включая редкие случаи (например, мультимедийные клавиши на игровых клавиатурах).

Что такое коды клавиш и зачем они нужны

Каждая клавиша на клавиатуре имеет три типа идентификаторов:

  • 🔢 Keycode — виртуальный код, который ОС присваивает клавише (например, 65 для A). Используется в скриптах и программах.
  • 🖥️ Scancode — аппаратный код, зависящий от физической раскладки (например, 0x1E для A в QWERTY). Нужен для низкоуровневой обработки.
  • 📜 ASCII/Unicode — символ, который клавиша генерирует при нажатии (например, 97 для строчной a).

Эти коды используются для:

  • 🎮 Настройки макросов в играх (Razer Synapse, Logitech G Hub).
  • 💻 Автоматизации задач через AutoHotkey или Python (библиотека keyboard).
  • 🛠️ Отладки веб-приложений, где нужно перехватить нажатия (например, блокировка F5 для обновления страницы).
  • 🔧 Переназначения клавиш в SharpKeys или реестре Windows.
⚠️ Внимание: Коды клавиш могут отличаться в зависимости от ОС. Например, Backspace в Windows имеет keycode=8, а в macOS — keycode=51.

Способ 1: Онлайн-сервисы для определения кодов

Самый быстрый метод — использовать специализированные сайты, которые в реальном времени показывают коды нажатых клавиш. Популярные сервисы:

  • 🌐 Keycode.info — отображает event.key, event.keyCode, event.code и event.which.
  • 🌐 Toptal Keycode Tester — показывает виртуальный код и символ.
  • 🌐 JavaScript Key Tester — подробная информация, включая модификаторы (Shift, Ctrl).

Как пользоваться:

  1. Откройте сервис в браузере (подходит Chrome, Firefox, Edge).
  2. Нажмите нужную клавишу или комбинацию.
  3. Скопируйте значения из блоков Key Code (для скриптов) или Code (для низкоуровневой обработки).

Пример: Нажатие Tab на keycode.info покажет:

event.key: "Tab"

event.keyCode: 9

event.code: "Tab"

event.which: 9

⚠️ Внимание: Онлайн-сервисы не определяют скан-коды (scancode) — только виртуальные коды. Для аппаратных идентификаторов используйте локальные утилиты.
📊 Как часто вам нужно узнавать коды клавиш?
Раз в неделю
Редко, для конкретных задач
Только при настройке игр
Никогда не пользовался

Способ 2: Встроенные утилиты Windows

В Windows есть скрытые инструменты для получения кодов клавиш без установки ПО:

Метод 1: PowerShell или Командная строка

Запустите PowerShell и выполните команду:

$wshell = New-Object -ComObject WScript.Shell

$wshell.AppActivate('Блокнот')

while ($true) { $key = $wshell.SendKeys('{PAUSE}'); Start-Sleep -Milliseconds 100 }

Затем откройте Блокнот и нажмите клавишу. В окне PowerShell появится её код в формате 0x{HEX}.

Метод 2: Экранная клавиатура (для спецсимволов)

Если клавиша не определяется (например, мультимедийные кнопки), используйте экранную клавиатуру:

  1. Нажмите Win+R, введите osk и нажмите Enter.
  2. Включите режим Просмотр кодов клавиш (если доступен).
  3. Нажмите физическую клавишу — на экране отобразится её виртуальный код.
Клавиша Keycode (Windows) Scancode (HEX) ASCII/Unicode
Esc 27 0x01
Space 32 0x39 32
Left Arrow 37 0x4B
@ (с Shift) 50 0x29 64

Способ 3: Утилиты для macOS и Linux

На macOS и Linux коды клавиш определяются через терминал.

macOS: showkey и xev

Установите Homebrew (если не установлен), затем выполните:

brew install evtest

sudo evtest

Выберите устройство клавиатуры и нажимайте клавиши. Пример вывода для Caps Lock:

Event: time 1625097600.123456, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70039

Event: time 1625097600.123457, type 1 (EV_KEY), code 58 (KEY_CAPSLOCK), value 1

Здесь code 58 — это scancode, а KEY_CAPSLOCK — имя события в ядре.

Linux: xev и showkey

В большинстве дистрибутивов предустановлена утилита xev. Запустите её в терминале:

xev | grep -A2 --line-buffered '^KeyRelease'

Пример вывода для F1:

state 0x0, keycode 67 (keysym 0xffbe, F1), same_screen YES

Здесь keycode 67 — это виртуальный код клавиши.

⚠️ Внимание: В Linux коды клавиш зависят от текущей раскладки. Например, Ё в русской раскладке может иметь другой keycode, чем ~ в английской.

Способ 4: JavaScript для веб-разработчиков

Если вам нужно отладить обработку клавиш на веб-странице, добавьте в HTML следующий код:

<input type="text" onkeydown="alert(event.keyCode)">

Или используйте полноценный обработчик:

document.addEventListener('keydown', function(event) {

console.log({

key: event.key,

keyCode: event.keyCode,

code: event.code,

which: event.which

});

});

Разница между полями:

  • 🔑 event.key — символ клавиши ("a", "Enter").
  • 📶 event.keyCode — устаревший виртуальный код (например, 65 для A).
  • 🖥️ event.code — физическое положение клавиши ("KeyA", "Digit1").

Важно: С 2020 года event.keyCode помечен как устаревший (deprecated). Вместо него используйте event.code.

1. Откройте консоль браузера (F12 → вкладка Console)

2. Вставьте код обработчика события

3. Нажмите клавишу и проверьте вывод в консоли

4. Для комбинаций (например, Ctrl+C) проверьте поле event.ctrlKey

-->

Способ 5: Специализированное ПО

Для продвинутых задач (например, перехват клавиш на уровне ядра) используйте:

  • 🖥️ KeyEvent Tester (Windows) — показывает scancode и virtual-key code.
  • 🎯 WhatPulse — анализирует нажатия и генерирует отчёты с кодами.
  • 🛠️ AutoHotkey Window Spy — определяет коды для создания скриптов.

Пример работы AutoHotkey Window Spy:

  1. Установите AutoHotkey с официального сайта.
  2. Запустите Window Spy.exe из папки с программой.
  3. Наведите курсор на любое окно и нажмите клавишу. В логе появится строка:
VK=1D SC=01D (Ctrl)

VK=43 SC=02E (C)

Здесь SC=01D — это scancode для Ctrl.

Как узнать коды клавиш на ноутбуках с нестандартной раскладкой (например, Lenovo Yoga или MacBook)

На таких устройствах клавиши могут иметь нестандартные скан-коды из-за аппаратных особенностей. Используйте фирменные утилиты:

- Для Lenovo: Lenovo Vantage → "Ввод" → "Клавиатура".

- Для MacBook: Клавиатурный просмотрщик (включается в "Системные настройки" → "Клавиатура").

Если утилиты нет, подключите клавиатуру к другому ПК и проверьте коды через evtest (Linux) или KeyEvent Tester (Windows).

Расшифровка кодов для популярных клавиш

Ниже — таблица с кодами клавиш, которые чаще всего используются в скриптах и играх:

Клавиша Keycode (Windows/macOS) Scancode (HEX) ASCII Применение
Ctrl 17 0x1D Модификатор в горячих клавишах
Alt 18 0x38 Альтернативные комбинации
Delete 46 0x53 Удаление файлов/символов
; 186 (или 59) 0x27 59 Спецсимволы в коде
Print Screen 44 0x37 Скриншоты

Для мультимедийных клавиш (например, регулировка громкости) коды зависят от производителя. Например, на клавиатурах Logitech:

  • Volume Up: VK_VOLUME_UP (виртуальный код 175).
  • Play/Pause: VK_MEDIA_PLAY_PAUSE (виртуальный код 179).

FAQ: Частые вопросы о кодах клавиш

🔍 Почему одна и та же клавиша имеет разные коды в Windows и macOS?

Операционные системы используют разные схемы виртуальных кодов. Например, Enter в Windows — это 13, а в macOS — 36 (для числовой клавиатуры) или 76 (для основной клавиши). Это связано с историческими особенностями ядер ОС.

🎮 Как узнать коды клавиш для игрового контроллера (например, Xbox или PlayStation)?

Коды кнопок геймпада определяются через API DirectInput (Windows) или SDL (кроссплатформенные игры). Для тестирования используйте:

  • joy.cpl (Панель управления → "Устройства и принтеры" → "Игровые контроллеры").
  • jstest-gtk (Linux).

Пример: Кнопка A на Xbox-контроллере имеет код 0 в DirectInput.

💻 Можно ли переназначить скан-коды клавиш на уровне BIOS?

Нет, скан-коды (scancode) жестко прописаны в микросхеме клавиатуры. Однако их обработку можно изменить:

  • В Windows — через реестр (HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout).
  • В Linux — через setkeycodes или xmodmap.

Для полного переназначения потребуется прошивка клавиатуры (например, через QMK Firmware для механических клавиатур).

📱 Как узнать коды клавиш на виртуальной клавиатуре Android/iOS?

Мобильные ОС не предоставляют прямого доступа к скан-кодам, но виртуальные коды можно получить через:

  • Android: KeyEvent в Android Studio (например, KeyEvent.KEYCODE_ENTER = 66).
  • iOS: UIKeyInput (коды совпадают с macOS).

Для тестирования используйте эмуляторы или логи приложений.

⚡ Почему моя клавиша отправляет неверный код?

Причины:

  1. Залипание или физическая поломка клавиши (проверьте через Экранную клавиатуру).
  2. Конфликт драйверов (обновите ПО клавиатуры через Диспетчер устройств).
  3. Переопределение кодов в реестре или через ПО вроде SharpKeys.
  4. Аппаратные особенности (например, клавиатуры Apple Magic Keyboard отправляют нестандартные скан-коды).

Решение: Подключите клавиатуру к другому ПК и проверьте коды заново.