
📋 JavaScripti klahvikoodid: täielik tabel event.key, event.code ja event.which kohta
Kasutaja vajutab Escape’i ja modaalaken ei sulgu. Ta vajutab otsinguväljal Enterit ja midagi ei juhtu. Tuttav olukord? Klaviatuurikäsitlus JavaScriptis tundub lihtne, kuni hakkad tegelema kolme sündmuse, tosina omaduse ja brauserierinevuste loomaaiaga.
Iga keydown või keyup tekitab KeyboardEvent objekti, millel on paarkümmend välja. Mõned on olnud aegunud juba IE ajastust, teised käituvad Firefoxis ja Chrome’is erinevalt. Ja MDN dokumentatsioon on täis „ära kasuta" märkusi. Arendajad ei vaja järjekordset spetsifikatsiooni, nad vajavad toimivat spikrilehte.
Allpool on täielik klaviatuurisündmuste teatmik: alates KeyboardEvent anatoomiast kuni valmis näidisteni kiirklahvide jaoks. Jäta kooditabel järjehoidjatesse, sul läheb seda vaja igas teises projektis.
💡 Kiirülevaade:
- Kasuta
keypressasemelkeydown: see töötab kõigi klahvidega. event.keyannab klahvi sümboli,event.codetagastab selle füüsilise koodi.event.keyCodejaevent.whichon aegunud, ära kasuta neid uues koodis.- Allolev tabel koondab kõigi standardsete klahvide koodid tänapäevastes brauserites.
Mis on KeyboardEvent sees
Kui kasutaja vajutab suvalist klahvi, loob brauser KeyboardEvent objekti, mis on UIEvent järglane, mis omakorda laiendab baas Event klassi. Sees on klahvi omadused, modifikaatorite olek, paigutuse teave.

UI Events spetsifikatsioon areneb edasi: uued omadused ilmuvad, vanad muutuvad aegunuks. Peamine muutus viimastel aastatel on eemaldumine numbrilistest koodidest (keyCode / charCode / which) event.key ja event.code kasuks. Kõik tänapäevased brauserid toetavad seda paari ja sa peaksid oma loogika neile üles ehitama.
Brauseritugi on peaaegu täielik: Chrome 51+, Firefox 29+, Safari 10.1+, Edge 79+. Kui su projekt ei ole kinni IE11-s, võid event.which unustada.
Kolm sündmust: keydown, keypress ja keyup
Brauser eristab kolme klaviatuurisündmust. Käivitumise järjekord on fikseeritud:
- keydown, klahv vajutatakse alla (kontakti hetk);
- keypress, klahvi hoitakse all ja see genereerib märgi (ainult märgiklahvide puhul);
- keyup, klahv vabastatakse.
keydown tellimine addEventListener kaudu:
1 const input = document.getElementById('type-here'); 2 3 input.addEventListener('keydown', function (event) { 4 console.log('Нажата:', event.key, '| Код:', event.code); 5 });
Sisemiste töötlejate jaoks kasuta elemendi atribuuti:
1 <input type="text" id="type-here" onkeyup="handleKey(event)">
Kui väljastad sündmuse objekti konsooli, näed täielikku struktuuri koos kõigi päritud väljadega UIEvent ja Event klassidest:

Miks keydown on peamine valik
keypress on ametlikult tunnistatud aegunuks. See käivitub ainult klahvide puhul, mis toodavad märgiväärtuse, ega taba modifikaatoreid: ei Alt, ei Ctrl, ei Shift, ei Meta. Sa ei saa keypress kaudu käsitleda Ctrl+Z või Shift+Tab.
Erinevus keydown ja keyup vahel: keydown käivitub enne, kui brauser klahvi töötleb; keyup käivitub pärast. Sellest tuleneb oluline tagajärg: event.preventDefault() keydown sees tühistab brauseri tegevuse (näiteks märgi sisestamise väljale), kuid keyup sees mitte. Kiirklahvide, sisendi valideerimise ja mängujuhtimise jaoks on vaja keydown.
KeyboardEvent omaduste tabel
Omadus / Meetod | Mida tagastab | Olek |
|---|---|---|
| Vajutatud klahvi märgiväärtus: | Kehtiv |
| Klahvi füüsiline kood klaviatuuril: | Kehtiv |
|
| Kehtiv |
|
| Kehtiv |
|
| Kehtiv |
|
| Kehtiv |
|
| Kehtiv |
| Numbriline klahvikood (näiteks | Aegunud |
| Märgi Unicode kood | Aegunud |
| Numbriline klahvikood (analoogne | Aegunud |
Kolm alumist rida on aegunud. Kus vähegi võimalik, mine üle event.key-le. Kui pead toetama vana brauserit, tee varuvariant:
1 window.addEventListener('keydown', function (event) { 2 const key = event.key !== undefined ? event.key : event.which; 3 if (key !== undefined) { 4 console.log('Клавиша:', key); 5 } 6 });
Kuid aastal 2026 on selline kood ainult pärandprojektide jaoks. event.key töötab kõikjal.
Modifikaatoriklahvid ja kombinatsioonid
Control, Shift, Alt ja Meta klahvid ei tee ise toiminguid, vaid muudavad teiste klahvide käitumist. Z vajutamine annab tähe „z", samas kui Ctrl+Z teeb undo.
Sündmuse tõeväärtusomadused aitavad modifikaatorit jälgida:
1 document.getElementById('editor').addEventListener('keydown', function (event) { 2 if (event.ctrlKey && event.key === 'z') { 3 event.preventDefault(); 4 undoAction(); 5 } 6 7 if (event.ctrlKey && event.shiftKey && event.key === 'z') { 8 event.preventDefault(); 9 redoAction(); 10 } 11 });
Sama lähenemine kehtib kõigi kombinatsioonide puhul: Ctrl+S (salvesta), Ctrl+Shift+N (uus aken), Alt+Tab (vaheta). Kontrolli järjekorda: kõigepealt modifikaatorid tõeväärtuslippude kaudu, seejärel event.key konkreetse klahvi jaoks. See muudab loogika loetavaks, selle asemel et uppuda numbrilistesse koodidesse.
Täielik klahvikoodide tabel
Allpool on kehtiv tabel kõigi standardsete klahvide jaoks. Väärtused event.key ja event.code on antud nii, nagu tänapäevased brauserid (Chrome, Firefox, Edge, Safari) need tagastavad.
Navigeerimine ja toimingud
Klahv | event.which | event.key | event.code | Märkus |
|---|---|---|---|---|
Backspace | 8 | Backspace | Backspace |
|
Tab | 9 | Tab | Tab |
|
Enter | 13 | Enter | Enter |
|
Shift (vasak) | 16 | Shift | ShiftLeft |
|
Shift (parem) | 16 | Shift | ShiftRight |
|
Ctrl (vasak) | 17 | Control | ControlLeft |
|
Ctrl (parem) | 17 | Control | ControlRight |
|
Alt (vasak) | 18 | Alt | AltLeft |
|
Alt (parem) | 18 | Alt | AltRight |
|
Pause / Break | 19 | Pause | Pause |
|
Caps Lock | 20 | CapsLock | CapsLock |
|
Escape | 27 | Escape | Escape |
|
Tühik | 32 |
| Space |
|
Page Up | 33 | PageUp | PageUp |
|
Page Down | 34 | PageDown | PageDown |
|
End | 35 | End | End |
|
Home | 36 | Home | Home |
|
Nool vasakule | 37 | ArrowLeft | ArrowLeft |
|
Nool üles | 38 | ArrowUp | ArrowUp |
|
Nool paremale | 39 | ArrowRight | ArrowRight |
|
Nool alla | 40 | ArrowDown | ArrowDown |
|
Print Screen | 44 | PrintScreen | PrintScreen |
|
Insert | 45 | Insert | Insert |
|
Delete | 46 | Delete | Delete |
|
Numbarida (põhiklaviatuur)
Klahv | event.which | event.key | event.code |
|---|---|---|---|
0 | 48 | 0 | Digit0 |
1 | 49 | 1 | Digit1 |
2 | 50 | 2 | Digit2 |
3 | 51 | 3 | Digit3 |
4 | 52 | 4 | Digit4 |
5 | 53 | 5 | Digit5 |
6 | 54 | 6 | Digit6 |
7 | 55 | 7 | Digit7 |
8 | 56 | 8 | Digit8 |
9 | 57 | 9 | Digit9 |
Tähed A-Z
Klahv | event.which | event.key | event.code |
|---|---|---|---|
A | 65 | a | KeyA |
B | 66 | b | KeyB |
C | 67 | c | KeyC |
D | 68 | d | KeyD |
E | 69 | e | KeyE |
F | 70 | f | KeyF |
G | 71 | g | KeyG |
H | 72 | h | KeyH |
I | 73 | i | KeyI |
J | 74 | j | KeyJ |
K | 75 | k | KeyK |
L | 76 | l | KeyL |
M | 77 | m | KeyM |
N | 78 | n | KeyN |
O | 79 | o | KeyO |
P | 80 | p | KeyP |
Q | 81 | q | KeyQ |
R | 82 | r | KeyR |
S | 83 | s | KeyS |
T | 84 | t | KeyT |
U | 85 | u | KeyU |
V | 86 | v | KeyV |
W | 87 | w | KeyW |
X | 88 | x | KeyX |
Y | 89 | y | KeyY |
Z | 90 | z | KeyZ |
event.key tagastab tähtede puhul väiketähe väärtuse. event.code ei sõltu tõstust ega paigutusest: KeyA tähendab füüsilist A-klahvi, isegi kui paigutus on vene ja sisend on „Ф".
Erikohvid
Klahv | event.which | event.key | event.code | Märkus |
|---|---|---|---|---|
Vasak Windows | 91 | Meta | MetaLeft |
|
Parem Windows | 92 | Meta | MetaRight |
|
Kontekstimenüü | 93 | ContextMenu | ContextMenu |
|
Numbriklaviatuur (Numpad)
Klahv | event.which | event.key | event.code |
|---|---|---|---|
Numpad 0 | 96 | 0 | Numpad0 |
Numpad 1 | 97 | 1 | Numpad1 |
Numpad 2 | 98 | 2 | Numpad2 |
Numpad 3 | 99 | 3 | Numpad3 |
Numpad 4 | 100 | 4 | Numpad4 |
Numpad 5 | 101 | 5 | Numpad5 |
Numpad 6 | 102 | 6 | Numpad6 |
Numpad 7 | 103 | 7 | Numpad7 |
Numpad 8 | 104 | 8 | Numpad8 |
Numpad 9 | 105 | 9 | Numpad9 |
Numpad korruta | 106 | * | NumpadMultiply |
Numpad liida | 107 | + | NumpadAdd |
Numpad lahuta | 109 | - | NumpadSubtract |
Numpad koma | 110 | . | NumpadDecimal |
Numpad jaga | 111 | / | NumpadDivide |
Funktsiooniklahvid
Klahv | event.which | event.key | event.code |
|---|---|---|---|
F1 | 112 | F1 | F1 |
F2 | 113 | F2 | F2 |
F3 | 114 | F3 | F3 |
F4 | 115 | F4 | F4 |
F5 | 116 | F5 | F5 |
F6 | 117 | F6 | F6 |
F7 | 118 | F7 | F7 |
F8 | 119 | F8 | F8 |
F9 | 120 | F9 | F9 |
F10 | 121 | F10 | F10 |
F11 | 122 | F11 | F11 |
F12 | 123 | F12 | F12 |
Süsteem ja multimeedia
Klahv | event.which | event.key | event.code | Märkus |
|---|---|---|---|---|
Num Lock | 144 | NumLock | NumLock |
|
Scroll Lock | 145 | ScrollLock | ScrollLock |
|
Vaigista | 173 | AudioVolumeMute | AudioVolumeMute | Firefoxis |
Heli vaiksemaks | 174 | AudioVolumeDown | AudioVolumeDown | Firefoxis |
Heli valjemaks | 175 | AudioVolumeUp | AudioVolumeUp | Firefoxis |
Meediapleier | 181 | LaunchMediaPlayer | LaunchMediaPlayer | Firefoxis |
Käivita rakendus 1 | 182 | LaunchApplication1 | LaunchApplication1 | Firefoxis |
Käivita rakendus 2 | 183 | LaunchApplication2 | LaunchApplication2 | Firefoxis |
Kirjavahemärgid ja sümbolid
Klahv | event.which | event.key | event.code | Märkus |
|---|---|---|---|---|
Semikoolon (;) | 186 | ; | Semicolon | Firefoxis |
Võrdusmärk (=) | 187 | = | Equal | Firefoxis |
Koma ( | 188 |
| Comma |
|
Miinus (-) | 189 | - | Minus | Firefoxis |
Punkt (.) | 190 | . | Period |
|
Kaldkriips (/) | 191 | / | Slash |
|
Ülakoma ( | Backquote |
|
|
|
Nurksulg vasakule ([) | 219 | [ | BracketLeft |
|
Kurakriips () | 220 | \ | Backslash |
|
Nurksulg paremale (]) | 221 | ] | BracketRight |
|
Jutumärk (') | 222 | ' | Quote |
|
Olulised tabeli märkused
event.whichon aegunud omadus, kasutaevent.key.event.codeon väike- (a) ja suurtähtede (A) puhul identne, see on füüsiline klahv.event.keytagastab tegeliku märgi, arvestades tõstuga.- Firefoxis erinevad
Equal,SemicolonjaMinusklahvideevent.whichväärtused Chrome/Edge/Safari omadest (tabelis märgitud). Veel üks põhjus, miksevent.whichmitte kasutada. - Chromium-põhised brauserid ja Firefox annavad kõigi loetletud klahvide puhul identsed
event.keyjaevent.codeväärtused. - Virtuaalsed klaviatuurid: UI Events spetsifikatsioon nõuab, et standardset paigutust kordav virtuaalne klaviatuur (mobiil, ekraanil) tagastaks korrektse
event.code. Praktikas käsitlevad mobiilibrauserid (Chrome Android, Safari iOS) põhiklahvidekeydown/keyupõigesti, kuidevent.codevõib mittestandardsete paigutuste puhul olla tühi.
Interaktiivne treener

Artikli mis tahes koodi kiireks kontrollimiseks kasuta klaviatuuritreenerit: keyevents.netlify.app. Liiguta kursor alale, vajuta klahve ja näed reaalajas event.key, event.code ja event.which väärtusi, samuti modifikaatorilippude olekuid. Lähtekood on saadaval GitHubis.
Video: klaviatuurisündmused praktikas
Lühike praktiline ülevaade keydown ja keyup sündmustest, modifikaatorite ja kiirklahvidega töötamisest koos elavate näidetega:
⁉️🤔 Korduma kippuvad küsimused
Mis vahe on event.key ja event.code vahel?
event.keytagastab märgiväärtuse, arvestades paigutust ja tõstuga: A-klahvi puhul on see"a"(või"A"koos Shiftiga), vene paigutuse puhul"ф".event.codetagastab füüsilise klahvikoodi, mis on kõigi paigutuste jaoks identne:"KeyA". Kiirklahvide jaoks onevent.codeusaldusväärsem, see ei sõltu sisendkeelest. Tekstisisendi jaoks kasutaevent.key.
Miks keypress enam ei kasutata?
W3C spetsifikatsioon märkis
keypressaegunuks: see käivitub ainult märgiklahvide puhul ega taba modifikaatoreid. Sa ei saakeypresskaudu käsitledaCtrl+C,Shift+Tabja teisi kombinatsioone.keydownkatab kõik klahvid ja on kõigis tänapäevastes brauserites identselt toetatud.
Kas event.which ja event.keyCode saab täielikult hüljata?
Jah, aastal 2026 saab.
event.keyon toetatud Chrome 51+, Firefox 29+, Safari 10.1+, Edge 79+. Kui su projekt ei sihi IE11 või Firefox 28, kasuta ainultevent.keyjaevent.code.
Kuidas käsitleda pikka klahvivajutust?
Kombineeri
keydownjakeyup.keydownpuhul käivita taimer võirequestAnimationFrame,keyuppuhul lähtesta see. Mängusisendi jaoks on see standardmuster: klahv all, tegelane liigub, vabastatud, peatub.
Kas klaviatuurisündmused töötavad mobiilseadmetes?
keydownjakeyuptöötavad mobiilibrauserites välise Bluetooth-klaviatuuri kasutamisel. Ekraaniklaviatuur genereeribinputsündmusi, mittekeydown/keyupkõigi klahvide jaoks, seega on mobiilis tekstiväljade puhul parem kasutadainputsündmust.
Kuidas eristada vasakut Shifti paremast?
event.codekaudu:"ShiftLeft"või"ShiftRight".event.keytagastab mõlema puhul"Shift". Sama kehtibControl,AltjaMetakohta.
Mida oma projektis kasutada
Kui kirjutad uut koodi, võta põhisündmuseks keydown ning klahvi tuvastamiseks event.key (sümbol) ja event.code (füüsiline klahv). See kombinatsioon katab kõik stsenaariumid: kiirklahvid, navigeerimine, mängusisend, vormi valideerimine.
Kui hooldad toodet, millel on pärandkood event.which või event.keyCode põhjal, planeeri ümberkujundamine. Töö maht on väike: asendamine töötlejates, kuid kasu on puhas, ennustatav kood ilma brauserierinevuste loomaaiata.
Hoia ülaltoodud tabel järjehoidjates. Kui järgmine kord vajad konkreetse klahvi koodi, ava see ja kopeeri vajalik event.code väärtus, ilma et peaksid meenutama numbrilisi koode IE6 ajastust.



