Коди клавіш JavaScript
Натисніть будь-яку клавішу, щоб побачити значення event.key, event.code, keyCode, which і location, модифікатори, історію натискань і таблицю кодів клавіш.
Натисніть «Почати захоплення клавіш» або клацніть у полі нижче, а потім натисніть будь-яку клавішу. Клацніть поза полем, щоб повернути клавіатуру сторінці.
- event.key
- –
- event.code
- –
- event.keyCode
- –
- event.which
- –
- event.location
- –
- event.repeat
- –
- Увімкнені Lock-клавіші
- –
| Подія | key | code | keyCode | location | Модифікатори | repeat |
|---|
| key | code | keyCode | location | Примітка |
|---|
значення key наведено для розкладки US без модифікаторів; інші розкладки видають інші символи для того самого code. keyCode і which застарілі, але досі широко використовуються.
Як дізнатися код клавіші
- Натисніть Почати захоплення клавіш або клацніть у великому полі. Кольорова рамка показує, що воно «слухає» клавіатуру.
- Натисніть будь-яку клавішу чи комбінацію. Великий дисплей показує значення
keyі застарілийkeyCode, а картки нижче –event.key,event.code,event.keyCode,event.which,event.location,event.repeatта Увімкнені Lock-клавіші (Caps Lock, Num Lock, AltGraph). - Бейджі Модифікатори загораються для
ctrlKey,shiftKey,altKeyіmetaKey. - Скопіюйте Фрагмент JavaScript для цієї клавіші. У полі Порівнювати за виберіть
event.key,event.codeабоevent.keyCode (застарілий). - Прокрутіть Історію клавіш (найновіші зверху), щоб порівняти кілька натискань. Позначте Записувати також події keyup, щоб бачити й відпускання клавіш.
- Коли значення потрібне без натискання клавіші, перегляньте або відфільтруйте таблицю Довідник кодів клавіш (US QWERTY).
Поки поле в фокусі, стандартна дія кожної клавіші блокується, тож Tab, стрілки, Backspace чи Ctrl+S захоплюються, а не переміщують фокус або відкривають діалог. Клацніть будь-де поза полем, щоб повернути клавіатуру сторінці. Кілька комбінацій обробляє операційна система ще до того, як їх побачить браузер (Alt+Tab, Ctrl+Alt+Del, Cmd+Tab, часто Print Screen), тому жодна вебсторінка не може їх прочитати.
key, code чи keyCode: що використовувати?
Подія KeyboardEvent містить кілька значень, які відповідають на різні запитання:
| Властивість | Що вона повідомляє | Приклад (клавіша A на AZERTY) |
|---|---|---|
key |
Символ або названа клавіша з урахуванням розкладки й модифікаторів | "a", "A" із Shift |
code |
Фізичне розташування клавіші, незалежне від розкладки | "KeyQ" |
keyCode / which |
Застарілий номер, зазвичай код ASCII великої літери | 65 |
location |
0 – звичайна, 1 – ліва, 2 – права, 3 – цифрова панель | 0 |
Використовуйте key, коли важливе значення: Enter для надсилання, Escape для закриття, «?» для відкриття довідки. Використовуйте code для ігор і комбінацій, що залежать від розташування клавіш, наприклад для керування WASD, яке має лишатися на тих самих клавішах і на французькій AZERTY, і на німецькій QWERTZ. У новому коді уникайте keyCode та which: вони застарілі, їхні значення для розділових знаків різняться між браузерами (Firefox надсилає 59 для крапки з комою, де Chrome надсилає 186), і вони не розрізняють лівий та правий Shift чи два Enter. Їх усе ж варто знати, коли ви підтримуєте старіший код, тому цей інструмент їх і показує.
Про фрагмент коду
Згенерований обробник порівнює саме ту клавішу, яку ви натиснули, разом із Ctrl, Alt та Meta. Для друкованих символів, порівнюваних за key, Shift опускається, бо він уже входить у значення: Shift+1 дає "!" у розкладці US. Коли ви натискаєте лише модифікатор, фрагмент не повторює його прапорець. Пам’ятайте, що metaKey – це Cmd на Mac і клавіша Windows на ПК, тому кросплатформні комбінації зазвичай перевіряють event.ctrlKey || event.metaKey.
Українська розкладка теж працює: key повертає кириличну літеру (наприклад, «ф»), а code лишається KeyA, бо описує фізичне місце клавіші. Тому для комбінацій, що мають працювати в будь-якій мові введення, надійніше порівнювати code.
Поширені запитання
Чому keyCode показує однакове число для різних символів?
keyCode ідентифікує клавішу, а не символ. Цифра 1 і «!» мають спільне значення 49, а «a» та «A» – 65. Щоб отримати справжній символ, читайте key.
Чому моя клавіша AZERTY показана як KeyQ?
code називає клавіші за їхнім розташуванням на клавіатурі US QWERTY. Клавіша з літерою A на французькій клавіатурі стоїть там, де Q на американській, тому її code – KeyQ, а key – «a».
Що означає «Dead» в event.key?
Це «мертва» клавіша, як-от ^ чи ¨ на французькій клавіатурі, яка чекає на наступну клавішу, щоб утворити літеру з діакритичним знаком. Кінцевий символ передає наступна подія клавіші або подія input текстового поля.
Чому event.repeat показує «так»?
Ви утримуєте клавішу, а операційна система надсилає автоматичні повтори. Перевіряйте event.repeat, щоб їх ігнорувати, наприклад щоб запускати комбінацію лише один раз.
Чи записується або надсилається те, що я натискаю?
Ні. Події клавіш читає ця сторінка у вашому браузері, і вони нікуди не надсилаються. Історія зникає, коли ви перезавантажуєте сторінку чи залишаєте її.
Схожі інструменти
- Перевірка клавіатури Безкоштовна онлайн-перевірка клавіатури: підсвічує кожну натиснуту клавішу, показує key, code і location, рахує N-key rollover та виявляє залиплі клавіші.
- Тестер регулярних виразів Перевіряйте регулярні вирази JavaScript наживо: підсвічені збіги, групи захоплення, заміна та просте пояснення кожного токена шаблону.
- Дослідник AST для JavaScript Вставте JavaScript і дослідіть його абстрактне синтаксичне дерево (ESTree, Acorn) у браузері. Натискайте вузли, щоб побачити код, і експортуйте AST у JSON.