Коды клавиш JavaScript

В обработчике keydown у клавиши три имени: event.key — что она печатает с учётом раскладки и Shift, event.code — физическая клавиша вроде KeyA или Digit1 независимо от раскладки, и устаревший числовой keyCode, который до сих пор встречается в старом коде.

Нажмите любую клавишу
—
—event.key
—event.code
—keyCode (устарел)
—which (устарел)
—location
—repeat
CtrlShiftAltMeta / ⌘
keyCode — по таблицам для Chrome и Firefox на Windows и Linux; у клавиш со знаками препинания номера в браузерах различаются, для них полагайтесь на code. Проверено 04.09.2026.

Три имени одной клавиши

У клавиши в обработчике keydown три разных имени, и путаница между ними — источник трудноуловимых ошибок. Свойство key возвращает то, что клавиша печатает с учётом раскладки и нажатого Shift. Свойство code называет физическую клавишу на клавиатуре независимо от раскладки. Устаревшее keyCode отдаёт число.

Разница видна сразу, если переключить раскладку. Клавиша, на которой в латинской раскладке буква A, в русской печатает Ф: key вернёт разные значения, а code в обоих случаях будет KeyA. Для горячих клавиш нужен именно code, иначе сочетание перестанет работать при переключении языка.

Инструмент показывает все три значения для любой нажатой клавиши плюс состояние модификаторов. Отдельно видно, повторяется ли событие при удержании и какое положение у клавиши, если их на клавиатуре несколько — левый и правый Shift различаются по свойству location.

Механическая клавиатура
Физическое положение клавиши и печатаемый ею знак — разные вещи с самого начала. Фото: ValorosoIT, CC BY-SA 4.0.
СвойствоЧто возвращаетПример для одной клавиши
keyПечатаемый знак"a" / "ф" / "A"
codeФизическую клавишу"KeyA"
keyCodeЧисло, устарело65
locationЛевая или правая1 или 2
repeatПовтор при удержанииtrue

От рычагов Ремингтона до стандарта UI Events

Расположение букв на клавиатуре придумал Кристофер Шоулз для пишущей машинки, и в 1878 году раскладка QWERTY закрепилась в машинах Ремингтона. Расхожая версия объясняет порядок борьбой с залипанием рычагов; исследователи спорят, но факт остаётся: раскладка пережила своё техническое обоснование на полтора века.

Русская ЙЦУКЕН складывалась независимо и тоже под механику: частые буквы попали под сильные пальцы. Именно поэтому физическое положение клавиши и печатаемая буква совпадают только внутри одной раскладки.

В браузерах долго жило свойство keyCode с числовыми кодами, которые различались между браузерами и плохо описывали неанглийские раскладки. Стандарт UI Events ввёл key и code как замену, и с середины десятых keyCode официально считается устаревшим, хотя и продолжает работать ради старого кода. Отдельно стандарт описывает и мёртвые клавиши, которые сами по себе ничего не печатают и лишь меняют следующий знак: во французских и чешских раскладках их несколько.

Рычаги пишущей машинки
Рычаги машинки: из их механики выросла раскладка, которой мы пользуемся до сих пор. Фото: Викисклад, CC BY 4.0.
Клавиатура терминала
На терминалах набор клавиш отличался, и коды у них были свои. Фото: Викисклад, общественное достояние.

Что брать для горячих клавиш, а что для ввода

Нажмите любую клавишу и посмотрите значения. Для горячих сочетаний берите code: он не зависит от раскладки, и Ctrl+S останется Ctrl+S при вводе по-русски. Для полей ввода и всего, что связано с текстом, берите key — там важно, какой символ человек напечатал.

Проверяйте модификаторы отдельными свойствами, без разбора key: сочетание с Shift меняет печатаемый знак, и сравнение с буквой перестаёт работать. Для системного модификатора на разных платформах смотрите metaKey на Mac и ctrlKey на остальных.

Помните, что браузер оставляет часть сочетаний себе: Ctrl+T, Ctrl+W и подобные перехватить со страницы нельзя. Проверить саму клавиатуру на залипание и пропуски поможет тест клавиатуры.

Учитывайте раскладки за пределами латиницы и кириллицы. В некоторых языках одна физическая клавиша печатает разные знаки в зависимости от предыдущего нажатия, и обработчик, привязанный к печатаемому символу, там ведёт себя непредсказуемо.

Не забывайте про экранные клавиатуры. На телефонах события клавиш приходят не всегда и не все: часть систем сообщает только об изменении значения поля. Логику ввода надо строить так, чтобы она работала и без событий отдельных клавиш.

Свойств у событиятри основных
Для горячих клавишcode
Для ввода текстаkey
keyCodeустарел
QWERTY закрепилась1878
Левый и правый модификаторlocation
Системный модификатор на MacmetaKey
Часть сочетанийзабирает браузер

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

Нажмите любую клавишу на этой странице — тестер покажет все три, плюс which, location и зажатые модификаторы, и запомнит последние нажатия. Ниже таблица кодов для всех клавиш стандартной клавиатуры с поиском по имени и номеру. Проверено 04.09.2026.

  1. Страница слушает keydown: покажутся key, code, keyCode, which, location и модификаторы. Русская раскладка даёт другой key при том же code.
  2. Последние десять нажатий остаются в списке, чтобы сравнить сочетания.
  3. Поиск по имени клавиши, по значению code или по числу keyCode.
  4. Для сочетаний и игровых кнопок берите event.code, для ввода текста — event.key; keyCode только для поддержки очень старых браузеров.

Частые вопросы

Чем key отличается от code

key — результат нажатия: буква с учётом раскладки и регистра, «Enter», «ArrowUp». code — место на клавиатуре: KeyA остаётся KeyA и в русской раскладке, где печатается «ф». Для горячих клавиш и WASD в играх нужен code, для обработки ввода — key.

Почему keyCode устарел

Он зависит от браузера и системы: у одних клавиш разные номера в Firefox и Chrome, у символов вроде ; и = вообще нет единого стандарта. Спецификация UI Events пометила keyCode, which и charCode устаревшими, но браузеры их не удаляют ради старого кода.

Что такое location

Где физически находится клавиша: 0 — стандартная, 1 — левая (левый Shift, Ctrl, Alt), 2 — правая, 3 — на цифровом блоке. Так различают левый и правый Shift, у которых одинаковый key и keyCode 16.

Как отличить сочетания клавиш

Проверяйте флаги event.ctrlKey, shiftKey, altKey, metaKey вместе с code: например, ctrlKey && code === 'KeyS' для Ctrl+S. На Mac команды идут через metaKey, поэтому обычно проверяют (ctrlKey || metaKey).

Почему на телефоне не все клавиши видны

Экранные клавиатуры часто отдают key «Unidentified» и keyCode 229 для составного ввода. Надёжнее слушать событие input, а keydown использовать только для служебных клавиш вроде Enter и Backspace.

Расчёт идёт в браузере или на сервере?

Нет, нажатия обрабатываются в браузере.

Спросите нейросети об инструменте

Отвечает DeepSeek по данным этой страницы и тому, что у вас сейчас на экране: что делает, как устроен, ограничения

Больше возможностей: Нейросеть для кода, написать, найти ошибку, объяснить.

Похожие инструменты

Тест клавиатуры

Схема на 104 клавиши: подсветка нажатий, отметка проверенных, поиск залипания и код клавиши.

Открыть
Форматы бумаги

Серии A, B и C в миллиметрах, дюймах и пикселях при любом DPI. Вес листа по плотности, обратный поиск формата и сравнение с Letter и Legal.

Открыть
MIME-типы по расширению

Какой Content-Type у файла: поиск по расширению и по типу, категории, заголовок для сервера, что отдавать неизвестным файлам.

Открыть
Частоты нот

Таблица нот C0-B8 с частотами, MIDI-номерами и длиной волны, переключаемый эталон ля, определение ноты по частоте в центах и девять гитарных строёв.

Открыть
Римские цифры

Перевод числа в римскую запись и обратно, дата римскими цифрами, проверка записи на ошибки и таблицы от 1 до 20, годы и века.

Открыть
Таблица Менделеева

Интерактивная периодическая система: 118 элементов с атомными массами по данным IUPAC, поиск по названию и символу, группы и категории.

Открыть

Ещё инструменты для кода и данных

Base64 и URL, форматтер и сравнение JSON, хеши, регулярные выражения, cron, подсети, UUID, QR-код и Unix-время — в разделе 42 инструмента.