Тест клавиатуры
Тестирование функциональности клавиш клавиатуры, отображение состояния клавиш и информации о кодах
История нажатий
Что такое тест клавиатуры?
Тест клавиатуры проверяет, доходят ли нажатия клавиш до браузера и как браузер описывает каждое событие. Он полезен, если клавиша залипает, сочетание клавиш не работает, есть подозрение на повреждение клавиатуры ноутбука или нужно быстро проверить новую механическую клавиатуру. Инструмент показывает key, code, устаревший keyCode, положение клавиши, повторное срабатывание и модификаторы Ctrl, Shift, Alt или Meta. Эти данные помогают отличить аппаратную проблему от раскладки или поведения программы: одна и та же физическая клавиша может давать разные символы. Системные сочетания вроде Ctrl+Alt+Del или Alt+Tab обычно не попадают на веб-страницу, поэтому их отсутствие не означает поломку.
Как использовать
Как использовать
- Наведите курсор мыши на область тестирования
- Нажмите любую клавишу на клавиатуре
- Следите за подсветкой нажатой клавиши и информационной панелью
- Просмотрите историю нажатий ниже
Подсказки
- Зелёная подсветка означает, что клавиша работает корректно
- Поддерживаются все стандартные клавиши клавиатуры
- Поддерживается определение клавиш-модификаторов (Ctrl, Shift, Alt, Meta)
- Повторные нажатия отмечаются в информационной панели
Применение
Технический принцип
Браузер предоставляет клавиатурные события через интерфейс KeyboardEvent: каждое нажатие генерирует события keydown и keyup. KeyboardEvent содержит несколько ключевых свойств: key — символьное значение клавиши (зависит от раскладки и состояния Shift — например, a или A); code — идентификатор физической позиции (не зависит от раскладки — KeyA остаётся KeyA как на QWERTY, так и на AZERTY); keyCode — устаревшее числовое значение (deprecated, но всё ещё встречается в старом коде); location — позиция клавиши (0 стандартная, 1 левая, 2 правая, 3 цифровая клавиатура). Для обнаружения комбинаций используются четыре булевых флага модификаторов: ctrlKey, shiftKey, altKey, metaKey — например, при Ctrl+C ctrlKey=true и key='c'. Порядок срабатывания: keydown -> keypress (deprecated) -> keyup; при удержании клавиши keydown срабатывает повторно, event.repeat=true. В разработке игр предпочтительнее code (не зависит от раскладки игрока), для полей ввода — key (показывает реальный символ). N-key rollover (NKRO) означает, что аппаратная часть клавиатуры способна зарегистрировать произвольное количество одновременных нажатий; обычные USB-клавиатуры ограничены 6KRO протоколом USB HID — при удержании более 6 клавиш события начинают теряться. Механические клавиатуры с интерфейсом PS/2 или специальными драйверами могут обеспечить настоящий NKRO.
- KeyboardEvent.key — символьное значение ('a'/'A'/'Enter'), зависит от раскладки и Shift — используйте для сценариев с полями ввода.
- KeyboardEvent.code — идентификатор физической позиции ('KeyA'/'Digit1'), не зависит от раскладки — используйте для игр и привязки горячих клавиш.
- Значения location: 0 стандартная, 1 левый модификатор, 2 правый модификатор, 3 цифровая клавиатура — полезно для различения левого/правого Shift, Ctrl, Alt.
- Комбинации: ctrlKey/shiftKey/altKey/metaKey — четыре булевых флага состояния модификаторов; комбинируйте с key для обнаружения Ctrl+C, Cmd+Shift+P и т.д.
- event.repeat=true означает авто-повтор удерживаемой клавиши; при тестах длительного нажатия используйте этот флаг для фильтрации повторных событий.
- 6KRO и NKRO: 6-клавишный rollover — ограничение протокола USB HID; механические клавиатуры могут достичь N-key rollover (NKRO) через PS/2 или специальный драйвер.
Примеры
Нажатие буквенной клавиши
Нажмите A -> key: "a", code: "KeyA", keyCode: 65, location: 0 (стандартная)Нажатие функциональной клавиши
Нажмите F1 -> key: "F1", code: "F1", keyCode: 112, location: 0Нажатие комбинации
Нажмите Ctrl+C -> обнаружено Ctrl (code: "ControlLeft", location: 1) + C (code: "KeyC", ctrlKey: true)Часто задаваемые вопросы
Какие клавиши определяет тест?
Почти каждую физическую клавишу, для которой браузер получает событие keydown: буквенно-цифровые, модификаторы (Shift/Ctrl/Alt/Meta), стрелки, функциональные F1–F24, цифровой блок, мультимедийные клавиши (громкость, воспроизведение) в поддерживаемых браузерах. Каждая нажатая клавиша становится зелёной на экранной клавиатуре, чтобы вы могли заметить нерабочие.
Почему моя клавиша Fn не регистрируется?
На большинстве ноутбуков Fn обрабатывается на уровне прошивки и не порождает JavaScript-события клавиатуры — это нормально, а не дефект. Сочетания функционального ряда (Fn+F5 и т. п.) часто дают только действие (увеличение громкости) без кода клавиши. Используйте настольную или внешнюю клавиатуру для проверки таких клавиш.
Подходит ли тест для залипающих или дребезжащих клавиш?
Да. Нажмите клавишу один раз и посмотрите, сколько событий keydown сработало. Дребезжащий переключатель отправляет несколько событий за миллисекунды. В некоторых сборках страница может выводить сырые временные метки событий, что делает дребезг видимым.
В чём разница между key, code и keyCode?
key — это значение ("a", "Shift", "Enter"). code — физическая позиция ("KeyA", "ShiftLeft") — одинакова на любой раскладке. keyCode — устаревший числовой ID (всё ещё выдаётся для совместимости). Используйте code, чтобы определять физические клавиши независимо от языковой раскладки.
Может ли он проверить N-key rollover (NKRO)?
Частично. Страница показывает удерживаемые в данный момент клавиши, поэтому можно нажать несколько одновременно и увидеть, сколько зарегистрируется. У USB HID и PS/2 клавиатур разные пределы гостинга; этот тест даёт реальный веб-результат, но специализированный тестер (Aqua's KeyTest, Switch Hitter) авторитетнее для серьёзных измерений.
Регистрируются ли мёртвые клавиши и композиция IME?
Композиция IME (китайский, японский, корейский) обычно подавляет нижележащие события клавиш, пока вы набираете. Отключите IME и используйте режим прямого ввода для проверки отдельных клавиш. Мёртвые клавиши (акут, умляут на европейских раскладках) выдают Dead, а затем следующую клавишу в комбинации.
Отправляется ли что-нибудь на сервер?
Нет. События клавиатуры обрабатываются целиком в вашем браузере. Ничего не логируется и не передаётся.