
📋 JavaScript-tastekoder: komplett tabell over event.key, event.code og event.which
En bruker trykker Escape, og modalen lukkes ikke. De trykker Enter i søkefeltet, og ingenting skjer. Høres det kjent ut? Tastaturhåndtering i JavaScript virker enkelt helt til du begynner å håndtere tre hendelser, et dusin egenskaper og en jungel av nettleserforskjeller.
Hver keydown eller keyup skaper et KeyboardEvent-objekt med to dusin felter. Noen har vært utdaterte siden IE-tiden, andre oppfører seg forskjellig i Firefox og Chrome. Og MDN-dokumentasjonen er full av «ikke bruk»-merknader. Utviklere trenger ikke enda en spesifikasjon, de trenger et jukseark som fungerer.
Nedenfor finner du en komplett referanse for tastaturhendelser: fra anatomien til KeyboardEvent til ferdige kodebiter for hurtigtaster. Bokmerk kodetabellen, du får bruk for den i omtrent annethvert prosjekt.
💡 Rask oversikt:
- Bruk
keydowni stedet forkeypress: det fungerer for alle taster. event.keygir tastens symbol,event.codereturnerer dens fysiske kode.event.keyCodeogevent.whicher utdaterte, ikke bruk dem i ny kode.- Tabellen nedenfor samler koder for alle standardtaster i moderne nettlesere.
Hva KeyboardEvent inneholder
Når en bruker trykker en tast, oppretter nettleseren et KeyboardEvent-objekt, en etterkommer av UIEvent, som igjen utvider basisen Event. Inni ligger tastens egenskaper, modifikatortilstand og layoutinformasjon.

Spesifikasjonen for UI Events er i utvikling: nye egenskaper dukker opp, gamle blir utdaterte. Den største endringen de siste årene er overgangen fra numeriske koder (keyCode / charCode / which) til fordel for event.key og event.code. Alle moderne nettlesere støtter dette paret, og du bør bygge logikken din på dem.
Nettleserstøtten er nesten komplett: Chrome 51+, Firefox 29+, Safari 10.1+, Edge 79+. Hvis prosjektet ditt ikke sitter fast med IE11, kan du glemme event.which.
Tre hendelser: keydown, keypress og keyup
Nettleseren skiller mellom tre tastaturhendelser. Rekkefølgen de utløses i er fast:
- keydown, tast trykkes ned (kontaktøyeblikket);
- keypress, tast holdes nede og genererer et tegn (kun for tegntaster);
- keyup, tast slippes.
Abonner på keydown via addEventListener:
1 const input = document.getElementById('type-here'); 2 3 input.addEventListener('keydown', function (event) { 4 console.log('Нажата:', event.key, '| Код:', event.code); 5 });
For innebygde handlere, bruk et elementattributt:
1 <input type="text" id="type-here" onkeyup="handleKey(event)">
Hvis du sender hendelsesobjektet til konsollen, ser du hele strukturen med alle arvede felter fra UIEvent og Event:

Hvorfor keydown er hovedvalget
keypress er offisielt anerkjent som utdatert. Den utløses bare for taster som produserer en tegnverdi, og fanger ikke opp modifikatorer: ikke Alt, ikke Ctrl, ikke Shift, ikke Meta. Du kan ikke håndtere Ctrl+Z eller Shift+Tab gjennom keypress.
Forskjellen mellom keydown og keyup: keydown utløses før nettleseren behandler tasten; keyup utløses etterpå. En viktig konsekvens følger: event.preventDefault() inne i keydown avbryter nettleserhandlingen (for eksempel å skrive inn et tegn i et felt), men inne i keyup gjør den det ikke. For hurtigtaster, inndatavalidering og spillkontroller trenger du keydown.
Egenskapstabell for KeyboardEvent
Egenskap / Metode | Hva den returnerer | Status |
|---|---|---|
| Tegnverdi for den trykte tasten: | Gjeldende |
| Fysisk kode for tasten på tastaturet: | Gjeldende |
|
| Gjeldende |
|
| Gjeldende |
|
| Gjeldende |
|
| Gjeldende |
|
| Gjeldende |
| Numerisk tastekode (for eksempel | Utdatert |
| Unicode-kode for tegnet | Utdatert |
| Numerisk tastekode (analog med | Utdatert |
De tre nederste radene er utdaterte. Bytt til event.key der det er mulig. Hvis du må støtte en gammel nettleser, lag en fallback:
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 });
Men i 2026 er slik kode bare for eldre prosjekter. event.key fungerer overalt.
Modifikatortaster og kombinasjoner
Control-, Shift-, Alt- og Meta-taster utfører ikke handlinger alene, men endrer oppførselen til andre taster. Å trykke Z gir bokstaven «z», mens Ctrl+Z utfører angre.
Boolske egenskaper ved hendelsen hjelper med å spore en modifikator:
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 });
Samme tilnærming gjelder for alle kombinasjoner: Ctrl+S (lagre), Ctrl+Shift+N (nytt vindu), Alt+Tab (bytt). Sjekk rekkefølge: først modifikatorer via boolske flagg, deretter event.key for den spesifikke tasten. Dette gjør logikken lesbar i stedet for å drukne i numeriske koder.
Komplett tabell over tastekoder
Nedenfor er den gjeldende tabellen for alle standardtaster. Verdiene event.key og event.code er angitt slik moderne nettlesere (Chrome, Firefox, Edge, Safari) returnerer dem.
Navigasjon og handlinger
Tast | event.which | event.key | event.code | Merknad |
|---|---|---|---|---|
Backspace | 8 | Backspace | Backspace |
|
Tab | 9 | Tab | Tab |
|
Enter | 13 | Enter | Enter |
|
Shift (venstre) | 16 | Shift | ShiftLeft |
|
Shift (høyre) | 16 | Shift | ShiftRight |
|
Ctrl (venstre) | 17 | Control | ControlLeft |
|
Ctrl (høyre) | 17 | Control | ControlRight |
|
Alt (venstre) | 18 | Alt | AltLeft |
|
Alt (høyre) | 18 | Alt | AltRight |
|
Pause / Break | 19 | Pause | Pause |
|
Caps Lock | 20 | CapsLock | CapsLock |
|
Escape | 27 | Escape | Escape |
|
Mellomrom | 32 |
| Space |
|
Page Up | 33 | PageUp | PageUp |
|
Page Down | 34 | PageDown | PageDown |
|
End | 35 | End | End |
|
Home | 36 | Home | Home |
|
Pil venstre | 37 | ArrowLeft | ArrowLeft |
|
Pil opp | 38 | ArrowUp | ArrowUp |
|
Pil høyre | 39 | ArrowRight | ArrowRight |
|
Pil ned | 40 | ArrowDown | ArrowDown |
|
Print Screen | 44 | PrintScreen | PrintScreen |
|
Insert | 45 | Insert | Insert |
|
Delete | 46 | Delete | Delete |
|
Tallrekke (hovedtastatur)
Tast | 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 |
Bokstaver A-Å
Tast | 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 returnerer den lille bokstaven for bokstaver. event.code avhenger ikke av store/små bokstaver eller layout: KeyA betyr den fysiske A-tasten, selv om layouten er russisk og inndata er «Ф».
Spesialtaster
Tast | event.which | event.key | event.code | Merknad |
|---|---|---|---|---|
Venstre Windows | 91 | Meta | MetaLeft |
|
Høyre Windows | 92 | Meta | MetaRight |
|
Kontekstmeny | 93 | ContextMenu | ContextMenu |
|
Numerisk tastatur (Numpad)
Tast | 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 Multiply | 106 | * | NumpadMultiply |
Numpad Add | 107 | + | NumpadAdd |
Numpad Subtract | 109 | - | NumpadSubtract |
Numpad Decimal | 110 | . | NumpadDecimal |
Numpad Divide | 111 | / | NumpadDivide |
Funksjonstaster
Tast | 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 |
System og multimedia
Tast | event.which | event.key | event.code | Merknad |
|---|---|---|---|---|
Num Lock | 144 | NumLock | NumLock |
|
Scroll Lock | 145 | ScrollLock | ScrollLock |
|
Demp | 173 | AudioVolumeMute | AudioVolumeMute | I Firefox |
Volum ned | 174 | AudioVolumeDown | AudioVolumeDown | I Firefox |
Volum opp | 175 | AudioVolumeUp | AudioVolumeUp | I Firefox |
Mediaspiller | 181 | LaunchMediaPlayer | LaunchMediaPlayer | I Firefox |
Start app 1 | 182 | LaunchApplication1 | LaunchApplication1 | I Firefox |
Start app 2 | 183 | LaunchApplication2 | LaunchApplication2 | I Firefox |
Tegnsetting og symboler
Tast | event.which | event.key | event.code | Merknad |
|---|---|---|---|---|
Semikolon (;) | 186 | ; | Semicolon | I Firefox |
Lik (=) | 187 | = | Equal | I Firefox |
Komma ( | 188 |
| Comma |
|
Minus (-) | 189 | - | Minus | I Firefox |
Punktum (.) | 190 | . | Period |
|
Skråstrek (/) | 191 | / | Slash |
|
Gravis ( | Backquote |
|
|
|
Venstre hakeparentes ([) | 219 | [ | BracketLeft |
|
Omvendt skråstrek () | 220 | \ | Backslash |
|
Høyre hakeparentes (]) | 221 | ] | BracketRight |
|
Apostrof (') | 222 | ' | Quote |
|
Viktige tabellmerknader
event.whicher en utdatert egenskap, brukevent.key.event.codeer identisk for små (a) og store (A) bokstaver, det er den fysiske tasten.event.keyreturnerer det faktiske tegnet med hensyn til store/små bokstaver.- I Firefox er
event.which-verdiene forEqual,SemicolonogMinusforskjellige fra Chrome/Edge/Safari (notert i tabellen). Enda en grunn til ikke å brukeevent.which. - Chromium-baserte nettlesere og Firefox gir identiske
event.keyogevent.codefor alle oppførte taster. - Virtuelle tastaturer: UI Events-spesifikasjonen krever at et virtuelt tastatur (mobil, skjermbasert) som gjentar et standardoppsett returnerer korrekt
event.code. I praksis håndterer mobile nettlesere (Chrome Android, Safari iOS)keydown/keyupkorrekt for hovedtaster, menevent.codekan være tom for ikke-standardoppsett.
Interaktiv trener

For rask verifisering av kode fra artikkelen, bruk tastaturtreneren: keyevents.netlify.app. Flytt markøren til området, trykk taster og se verdiene for event.key, event.code og event.which, samt modifikatorflagg i sanntid. Kildekode er tilgjengelig på GitHub.
Video: tastaturhendelser i praksis
En kort praktisk gjennomgang av keydown og keyup, arbeid med modifikatorer og hurtigtaster med levende eksempler:
⁉️🤔 Ofte stilte spørsmål
Hva er forskjellen mellom event.key og event.code?
event.keyreturnerer tegnverdien med hensyn til layout og store/små bokstaver: for A-tasten er det"a"(eller"A"med Shift), for russisk layout,"ф".event.codereturnerer den fysiske tastekoden, identisk for alle layouter:"KeyA". For hurtigtaster erevent.codemer pålitelig, den avhenger ikke av inndataspråk. For tekstinndata, brukevent.key.
Hvorfor brukes ikke keypress lenger?
W3C-spesifikasjonen markerte
keypresssom utdatert: den utløses bare for tegntaster og fanger ikke opp modifikatorer. Du kan ikke håndtereCtrl+C,Shift+Tabog andre kombinasjoner gjennomkeypress.keydowndekker alle taster og støttes identisk i alle moderne nettlesere.
Kan man fullstendig forlate event.which og event.keyCode?
Ja, i 2026 kan du det.
event.keystøttes i Chrome 51+, Firefox 29+, Safari 10.1+, Edge 79+. Hvis prosjektet ditt ikke retter seg mot IE11 eller Firefox 28, bruk kunevent.keyogevent.code.
Hvordan håndterer man et langt tastetrykk?
Kombiner
keydownogkeyup. Vedkeydownstart en timer ellerrequestAnimationFrame, vedkeyup, nullstill den. For spillinndata er dette standardmønsteret: tast holdes, figur beveger seg, slippes, stopper.
Fungerer tastaturhendelser på mobile enheter?
keydownogkeyupfungerer i mobile nettlesere ved bruk av eksternt Bluetooth-tastatur. Skjermtastaturet generererinput-hendelser, ikkekeydown/keyupfor alle taster, så for tekstfelt på mobil er det bedre å brukeinput-hendelsen.
Hvordan skiller man venstre Shift fra høyre?
Gjennom
event.code:"ShiftLeft"eller"ShiftRight".event.keyreturnerer"Shift"for begge. Samme forControl,AltogMeta.
Hva du bør bruke i prosjektet ditt
Hvis du skriver ny kode, bruk keydown som hovedhendelse, og for tasteidentifikasjon, event.key (symbol) og event.code (fysisk tast). Denne kombinasjonen dekker alle scenarioer: hurtigtaster, navigasjon, spillinndata, skjemavalidering.
Hvis du vedlikeholder et produkt med gammel kode på event.which eller event.keyCode, planlegg en refaktorering. Arbeidsmengden er liten: erstatning i handlere, men fordelen er ren, forutsigbar kode uten en jungel av nettleserforskjeller.
Hold tabellen over bokmerket. Neste gang du trenger koden for en bestemt tast, åpner du den og kopierer den nødvendige event.code-verdien uten å måtte huske numeriske koder fra IE6-tiden.



