Skip to content

Alles für WordPress, Webentwicklung — und mehr

📋 JavaScript key codes: vollständige tabelle von event.key, event.code und event.which

📋 JavaScript key codes: vollständige tabelle von event.key, event.code und event.which

Ein Benutzer drückt Escape, und das Modal schließt sich nicht. Er betätigt Enter im Suchfeld, und nichts passiert. Kommt Ihnen das bekannt vor? Die Tastatursteuerung in JavaScript wirkt einfach, bis man es mit drei Events, einem Dutzend Eigenschaften und einem Zoo von Browser-Unterschieden zu tun bekommt.

Jedes keydown oder keyup erzeugt ein KeyboardEvent-Objekt mit zwei Dutzend Feldern. Einige sind seit der IE-Ära veraltet, andere verhalten sich in Firefox und Chrome unterschiedlich. Und die MDN-Dokumentation ist gespickt mit „Nicht verwenden"-Hinweisen. Entwickler brauchen keine weitere Spezifikation, sondern einen Spickzettel, der funktioniert.

Nachfolgend finden Sie eine vollständige Referenz zu Tastatur-Events: von der Anatomie des KeyboardEvent bis zu gebrauchsfertigen Snippets für Hotkeys. Setzen Sie ein Lesezeichen auf die Code-Tabelle, Sie werden sie in fast jedem Projekt benötigen.

💡 Kurzüberblick:

  • Verwenden Sie keydown statt keypress: Es funktioniert für beliebige Tasten.
  • event.key liefert das Symbol der Taste, event.code gibt den physischen Code zurück.
  • event.keyCode und event.which sind veraltet, verwenden Sie sie nicht in neuem Code.
  • Die folgende Tabelle sammelt die Codes für alle Standardtasten in modernen Browsern.

Was in KeyboardEvent steckt

Wenn ein Benutzer eine beliebige Taste drückt, erzeugt der Browser ein KeyboardEvent-Objekt, einen Nachkommen von UIEvent, das wiederum das Basis-Event erweitert. Darin enthalten sind die Eigenschaften der Taste, der Zustand der Modifikatoren und Layout-Informationen.

Vererbungshierarchie der KeyboardEvent-Schnittstelle in JavaScript

Die Spezifikation für UI Events entwickelt sich weiter: Neue Eigenschaften kommen hinzu, alte werden als veraltet markiert. Die wesentliche Änderung der letzten Jahre ist die Abkehr von numerischen Codes (keyCode / charCode / which) zugunsten von event.key und event.code. Alle modernen Browser unterstützen dieses Paar, und Sie sollten Ihre Logik darauf aufbauen.

Die Browser-Unterstützung ist nahezu vollständig: Chrome 51+, Firefox 29+, Safari 10.1+, Edge 79+. Wenn Ihr Projekt nicht an IE11 gebunden ist, können Sie event.which vergessen.

Drei Events: keydown, keypress und keyup

Der Browser unterscheidet drei Tastatur-Events. Die Auslösereihenfolge ist festgelegt:

  • keydown, Taste wird gedrückt (Moment des Kontakts);
  • keypress, Taste wird gehalten und erzeugt ein Zeichen (nur für Zeichentasten);
  • keyup, Taste wird losgelassen.

Das Abonnieren von keydown per addEventListener:

1const input = document.getElementById('type-here');
2
3input.addEventListener('keydown', function (event) {
4 console.log('Нажата:', event.key, '| Код:', event.code);
5});

Für Inline-Handler verwenden Sie ein Element-Attribut:

1<input type="text" id="type-here" onkeyup="handleKey(event)">

Wenn Sie das Event-Objekt in der Konsole ausgeben, sehen Sie die vollständige Struktur mit allen geerbten Feldern von UIEvent und Event:

Das keyup-Event-Objekt in der Browser-Konsole mit allen KeyboardEvent-Eigenschaften

Warum keydown die erste Wahl ist

keypress ist offiziell als veraltet anerkannt. Es wird nur für Tasten ausgelöst, die einen Zeichenwert erzeugen, und erfasst keine Modifikatoren: nicht Alt, nicht Ctrl, nicht Shift, nicht Meta. Sie können Ctrl+Z oder Shift+Tab nicht über keypress behandeln.

Der Unterschied zwischen keydown und keyup: keydown wird ausgelöst, bevor der Browser die Taste verarbeitet; keyup wird danach ausgelöst. Daraus folgt eine wichtige Konsequenz: event.preventDefault() innerhalb von keydown bricht die Browser-Aktion ab (zum Beispiel das Einfügen eines Zeichens in ein Feld), innerhalb von keyup jedoch nicht. Für Hotkeys, Eingabevalidierung und Spielsteuerung benötigen Sie keydown.

Eigenschaftstabelle von KeyboardEvent

Eigenschaft / Methode

Rückgabewert

Status

event.key

Zeichenwert der gedrückten Taste: "a", "Enter" oder "ArrowUp"

Aktuell

event.code

Physischer Code der Taste auf der Tastatur: "KeyA", "Enter" oder "ArrowUp"

Aktuell

event.altKey

true, wenn Alt gehalten wird

Aktuell

event.ctrlKey

true, wenn Control gehalten wird

Aktuell

event.shiftKey

true, wenn Shift gehalten wird

Aktuell

event.metaKey

true, wenn Meta gehalten wird (Windows / Command auf Mac)

Aktuell

event.getModifierState()

true für den aktiven Zustand von CapsLock, NumLock, Alt, Control, Shift oder Meta

Aktuell

event.keyCode

Numerischer Tastencode (zum Beispiel 65 für A)

Veraltet

event.charCode

Unicode-Code des Zeichens

Veraltet

event.which

Numerischer Tastencode (analog zu keyCode)

Veraltet

Die unteren drei Zeilen sind veraltet. Wechseln Sie, wo immer möglich, zu event.key. Falls Sie einen alten Browser unterstützen müssen, erstellen Sie einen Fallback:

1window.addEventListener('keydown', function (event) {
2 const key = event.key !== undefined ? event.key : event.which;
3 if (key !== undefined) {
4 console.log('Клавиша:', key);
5 }
6});

Aber im Jahr 2026 ist solcher Code nur noch für Legacy-Projekte. event.key funktioniert überall.

Modifikatortasten und Kombinationen

Control, Shift, Alt und Meta führen selbst keine Aktionen aus, ändern aber das Verhalten anderer Tasten. Das Drücken von Z ergibt den Buchstaben „z", während Ctrl+Z den Rückgängig-Befehl ausführt.

Boolesche Eigenschaften des Events helfen, einen Modifikator zu verfolgen:

1document.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});

Derselbe Ansatz gilt für beliebige Kombinationen: Ctrl+S (Speichern), Ctrl+Shift+N (Neues Fenster), Alt+Tab (Wechseln). Prüfen Sie die Reihenfolge: zuerst Modifikatoren über boolesche Flags, dann event.key für die spezifische Taste. Das macht die Logik lesbar, statt in numerischen Codes zu ertrinken.

Vollständige Tabelle der Tastencodes

Nachfolgend die aktuelle Tabelle für alle Standardtasten. Die Werte event.key und event.code sind so angegeben, wie moderne Browser (Chrome, Firefox, Edge, Safari) sie zurückgeben.

Taste

event.which

event.key

event.code

Hinweis

Backspace

8

Backspace

Backspace

Tab

9

Tab

Tab

Enter

13

Enter

Enter

Shift (links)

16

Shift

ShiftLeft

event.shiftKey = true

Shift (rechts)

16

Shift

ShiftRight

event.shiftKey = true

Ctrl (links)

17

Control

ControlLeft

event.ctrlKey = true

Ctrl (rechts)

17

Control

ControlRight

event.ctrlKey = true

Alt (links)

18

Alt

AltLeft

event.altKey = true

Alt (rechts)

18

Alt

AltRight

event.altKey = true

Pause / Break

19

Pause

Pause

Caps Lock

20

CapsLock

CapsLock

Escape

27

Escape

Escape

Leertaste

32

Space

event.key - einzelnes Leerzeichen

Page Up

33

PageUp

PageUp

Page Down

34

PageDown

PageDown

Ende

35

End

End

Pos1

36

Home

Home

Pfeil links

37

ArrowLeft

ArrowLeft

Pfeil hoch

38

ArrowUp

ArrowUp

Pfeil rechts

39

ArrowRight

ArrowRight

Pfeil runter

40

ArrowDown

ArrowDown

Druck

44

PrintScreen

PrintScreen

Einfügen

45

Insert

Insert

Entfernen

46

Delete

Delete

Ziffernreihe (Haupttastatur)

Taste

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

Buchstaben A-Z

Taste

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 gibt für Buchstaben den Kleinbuchstaben zurück. event.code hängt nicht von Groß-/Kleinschreibung oder Layout ab: KeyA bezeichnet die physische A-Taste, selbst wenn das Layout Russisch ist und die Eingabe „Ф" lautet.

Spezialtasten

Taste

event.which

event.key

event.code

Hinweis

Linke Windows-Taste

91

Meta

MetaLeft

event.metaKey = true

Rechte Windows-Taste

92

Meta

MetaRight

event.metaKey = true

Kontextmenü

93

ContextMenu

ContextMenu

Ziffernblock (Numpad)

Taste

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 Multiplizieren

106

*

NumpadMultiply

Numpad Addieren

107

+

NumpadAdd

Numpad Subtrahieren

109

-

NumpadSubtract

Numpad Dezimal

110

.

NumpadDecimal

Numpad Dividieren

111

/

NumpadDivide

Funktionstasten

Taste

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 und Multimedia

Taste

event.which

event.key

event.code

Hinweis

Num Lock

144

NumLock

NumLock

Rollen

145

ScrollLock

ScrollLock

Stumm

173

AudioVolumeMute

AudioVolumeMute

In Firefox event.which = 181, event.code = VolumeMute

Leiser

174

AudioVolumeDown

AudioVolumeDown

In Firefox event.which = 182, event.code = VolumeDown

Lauter

175

AudioVolumeUp

AudioVolumeUp

In Firefox event.which = 183, event.code = VolumeUp

Media Player

181

LaunchMediaPlayer

LaunchMediaPlayer

In Firefox event.which = 0, event.code = MediaSelect

App 1 starten

182

LaunchApplication1

LaunchApplication1

In Firefox event.which = 0, event.code = LaunchApp1

App 2 starten

183

LaunchApplication2

LaunchApplication2

In Firefox event.which = 0, event.code = LaunchApp2

Satzzeichen und Symbole

Taste

event.which

event.key

event.code

Hinweis

Semikolon (;)

186

;

Semicolon

In Firefox event.which = 59

Gleich (=)

187

=

Equal

In Firefox event.which = 61

Komma (,)

188

,

Comma

Minus (-)

189

-

Minus

In Firefox event.which = 173

Punkt (.)

190

.

Period

Schrägstrich (/)

191

/

Slash

Backquote () | 192 |

Backquote

Eckige Klammer links ([)

219

[

BracketLeft

Backslash ()

220

\

Backslash

Eckige Klammer rechts (])

221

]

BracketRight

Hochkomma (')

222

'

Quote

Wichtige Hinweise zur Tabelle

  • event.which ist eine veraltete Eigenschaft, verwenden Sie event.key.
  • event.code ist für Klein- (a) und Großbuchstaben (A) identisch, es ist die physische Taste. event.key gibt das tatsächliche Zeichen unter Berücksichtigung der Groß-/Kleinschreibung zurück.
  • In Firefox weichen die event.which-Werte für die Tasten Equal, Semicolon und Minus von Chrome/Edge/Safari ab (in der Tabelle vermerkt). Ein weiterer Grund, event.which nicht zu verwenden.
  • Chromium-basierte Browser und Firefox liefern für alle aufgeführten Tasten identische event.key- und event.code-Werte.
  • Virtuelle Tastaturen: Die UI Events-Spezifikation verlangt, dass eine virtuelle Tastatur (mobil, auf dem Bildschirm), die ein Standardlayout nachbildet, korrekte event.code-Werte zurückgibt. In der Praxis verarbeiten mobile Browser (Chrome Android, Safari iOS) keydown/keyup für die Haupttasten korrekt, aber event.code kann bei nicht standardmäßigen Layouts leer sein.

Interaktiver Trainer

Interaktiver JavaScript-Trainer für Tastaturereignisse

Zur schnellen Überprüfung jedes Codes aus dem Artikel nutzen Sie den Tastatur-Trainer: keyevents.netlify.app. Bewegen Sie den Cursor in den Bereich, drücken Sie Tasten und sehen Sie in Echtzeit die Werte von event.key, event.code und event.which sowie die Zustände der Modifikator-Flags. Der Quellcode ist auf GitHub verfügbar.

Video: Tastatur-Events in der Praxis

Eine kurze praktische Aufschlüsselung von keydown und keyup, der Umgang mit Modifikatoren und Hotkeys mit Live-Beispielen:

⁉️🤔 Häufig gestellte Fragen

Was ist der Unterschied zwischen event.key und event.code?

event.key gibt den Zeichenwert unter Berücksichtigung von Layout und Groß-/Kleinschreibung zurück: Für die A-Taste ist es "a" (oder "A" mit Shift), für russisches Layout "ф". event.code gibt den physischen Tastencode zurück, identisch für alle Layouts: "KeyA". Für Hotkeys ist event.code zuverlässiger, es hängt nicht von der Eingabesprache ab. Für Texteingaben verwenden Sie event.key.

Warum wird keypress nicht mehr verwendet?

Die W3C-Spezifikation hat keypress als veraltet markiert: Es wird nur für Zeichentasten ausgelöst und erfasst keine Modifikatoren. Sie können Ctrl+C, Shift+Tab und andere Kombinationen nicht über keypress behandeln. keydown deckt alle Tasten ab und wird in allen modernen Browsern identisch unterstützt.

Kann man vollständig auf event.which und event.keyCode verzichten?

Ja, im Jahr 2026 können Sie das. event.key wird in Chrome 51+, Firefox 29+, Safari 10.1+, Edge 79+ unterstützt. Wenn Ihr Projekt nicht auf IE11 oder Firefox 28 abzielt, verwenden Sie nur event.key und event.code.

Wie behandelt man einen langen Tastendruck?

Kombinieren Sie keydown und keyup. Bei keydown starten Sie einen Timer oder requestAnimationFrame, bei keyup setzen Sie ihn zurück. Für Spieleingaben ist das das Standardmuster: Taste gehalten, Figur bewegt sich, losgelassen, sie stoppt.

Funktionieren Tastatur-Events auf mobilen Geräten?

keydown und keyup funktionieren in mobilen Browsern bei Verwendung einer externen Bluetooth-Tastatur. Die Bildschirmtastatur erzeugt input-Events, nicht keydown/keyup für alle Tasten, daher ist es für Textfelder auf Mobilgeräten besser, das input-Event zu verwenden.

Wie unterscheidet man linke Shift von rechter?

Über event.code: "ShiftLeft" oder "ShiftRight". event.key gibt für beide "Shift" zurück. Gleiches gilt für Control, Alt und Meta.

Was Sie in Ihrem Projekt verwenden sollten

Wenn Sie neuen Code schreiben, nehmen Sie keydown als Haupt-Event und zur Tastenidentifikation event.key (Symbol) und event.code (physische Taste). Diese Kombination deckt alle Szenarien ab: Hotkeys, Navigation, Spieleingaben, Formularvalidierung.

Wenn Sie ein Produkt mit Legacy-Code auf Basis von event.which oder event.keyCode pflegen, planen Sie ein Refactoring. Der Arbeitsaufwand ist gering: Austausch in den Handlern, aber der Gewinn ist sauberer, vorhersagbarer Code ohne einen Zoo von Browser-Unterschieden.

Behalten Sie die obige Tabelle als Lesezeichen. Wenn Sie das nächste Mal den Code für eine bestimmte Taste benötigen, öffnen Sie sie und kopieren Sie den benötigten event.code-Wert, ohne sich an numerische Codes aus der IE6-Ära erinnern zu müssen.