JavaScript Keycode List – Keypress Event Key Codes for Enter, Space, Backspace, and More
JavaScript Keycode List – Keypress Event Key Codes for Enter, Space, Backspace, and More
Like many other JavaScript events, the KeyboardEvent interface provides all
the required properties and methods for handling every keystroke a user
makes using the keyboard.
There have been many articles written about how they work and how to use
them. At the same time, W3.org keeps updating the specification by
introducing new properties, deprecating existing ones, and marking certain
code as legacy.
Because of this, it is essential for web developers to keep learning about the K
eyboardEvent interface to know what exactly they should use and what's no
longer relevant.
Finally, the current list of key codes for reference and future use.
KeyboardEvent Hierarchy
There are primarily three keyboard event types, keydown , keypress and, key
up . We can get contextual information about these events from the Keyboard
Event interface's properties and methods.
You can add each of these event types to an HTML element or document
object using the addEventListener method. Here is an example of listening
to a keydown event on an element whose id is, 'type-here':
Alternatively, you can use the handler methods like, onKeydown(event) , onKe
yup(event) , onKeypress(event) with the element to handle keyboard
events. Here is an example of handling a keyup event on an input element:
If you print the event object in the browser's console, you will see all its
properties and methods along with the ones it inherits from the UIEvent and
Event interfaces.
⌨
Just focus your cursor anywhere in the app embedded below, and type any
key to see the contextual information about it.
You can also filter out the events you want by unchecking the checkboxes at
the top. So give it a try: ⌨
👋
index.html https://js-keycodes.stackblitz.io
1 <title>JavaScript Keyboard Events</title>
<title>JavaScrip
t Keyboard
JavaScript Keyboard Events
2
Events</title>
3<div
If you have any issues in accessing the playground above, you can
access this tool directly here: https://keyevents.netlify.app/
And you can find the source code of the demo from here:
https://github.com/atapas/js-keyevents-demo
If all three events are attached to a DOM element, the firing order would be:
1. First, keydown
3. Last, keyup
Among these events, the most used Keyboard event is (or, should be) keydow
n because:
The keydown event has the maximum coverage of keys to produce the
contextual information. The keypress event works only for a subset
of the keys. You can't capture the Alt, Ctrl, Shift, Meta, and other
similar key events with a keypress. This also means that we can not fire
the keypress event with key combinations like Ctrl Z , Shift Tab ,
and so on.
While both keydown and keyup events cover all the keys and are well
supported by most browsers, there are a few differences that push
keydown ahead of keyup . The keydown event fires before the browser
processes the key, whereas the keyup event fires after the browser
processes the key. If you cancel a keydown event (say, using
event.preventDefault() ), the browser's action will be canceled too.
In case of the keyup event, the browser's action will not be canceled
even when you have canceled the event.
index.html https://js-key-down…
1 <h2>See the Console too...</h2>
2 <div id="app" class="app">
3 <div class="down"> See the Console too...
4 <label for="first"> Key Down Test
</label>
5 <input type="text" id="first" Key Down Test Key Up Test
name="first" placeholder="type here" /> type here type here
6 </div>
7
8 <div class="up">
9 <label for="second"> Key Up Test
</label>
10 <input type="text" id="second" Console
name="second" placeholder="type here" />
11 </div> Clear console on reload
12 </div>
13
keydown vs keyup
With all that explanation, the keydown event is a clear winner and should
become the most popular (used) key event type.
How legacy is your application code is and how much are you willing to
refactor?
But before we get there, let's see a preview of some of the the useful
properties and methods of the KeyboardEvent interface.
PROPRTY/METHOD DESCRIPTION
altKey Returns a boolean(true/false). The value is true when Alt key is pressed.
ctrlKey Returns a boolean(true/false). The value is true when Control key is pressed.
shiftKey Returns a boolean(true/false). The value is true when Shift key is pressed.
metaKey Returns a boolean(true/false). The value is true when any of the Meta
getModifierState() method Returns a boolean(true/false). The value true indicates the on state of these keys,
charCode Returns the Unicode value. This has been deprecated and we should use the
keyCode Returns the neumeric code of the pressed value. This has been deprecated and we should use the
which Returns the neumeric code of the pressed value. This has been deprecated and we should use the
The last three properties are deprecated and you should use the key
property instead. The key property has the widest browser support.
It is supported on:
So as long as you are not using any of the older browsers, the event.key
property should be enough for you to identify a key. In case you have to
support an older browser, a better fallback would be the event.which
property.
If your code uses any of the deprecated properties and you have an
opportunity to refactor that code, it is always better to go for it.
Modifier Keys
The modifier keys are the special keys on your keyboard that modify the
default behavior of the other keys. Control , Shift , and Alt are some
modifier keys. When a modifier key is combined with another key, you can
expect a different action to occur.
For example, if you press the key z , it is supposed to return the key and code
for the letter z. If you combine it with the modifier Control and press Contro
l z , you will likely get an Undo operation. Let's see it with some more
examples in the next section.
Key Combinations
We can combine multiple keys and perform actions based on the key
combinations. The code snippet below shows how to combine the Control
and z key to define an action:
document
.getElementById("to_focus")
.addEventListener("keydown", function(event) {
if (event.ctrlKey && event.key === "z") {
// Do Something, may be an 'Undo' operation
}
});
Here is another example that demos a few more key combinations. Please
give it a try:
index.js https://js-key-combinations.stackblitz.io
1 // Import stylesheets
stylesheets
2 import
"./style.css"; Try Key Combinations
3
4 // Write
Focus Here and try the Key Combinations,
Javascript code!
5 document - Control z
- Shift Tab
6 .getElementByI - Control a
d("to_focus") - Alt Shift Tab
7 .addEventListe
ner
("keydown",
function
(event) {
8 if
(event.ctrlK
Console ey &&
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
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
numpad 0 96 0 Numpad0
numpad 1 97 1 Numpad1
numpad 2 98 2 Numpad2
numpad 3 99 3 Numpad3
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
Please Note:
The event.code value is the same for small letters(a) and capital
letters(A). Hoever the event.key value represents the actual letter.
The specification says that if the virtual keyboard has a similar key layout and
functionality to a standard keyboard, then it must result in an appropriate
code attribute. Otherwise, it is not going to return the right value.
In Summary
To Summarize:
There are primarily three key events, keydown , keypress , and keyup .
The virtual keyboard supports these events as long as the layout and
functions are similar to the standard keyboard.
That's all for now. Thank you for reading this far! Let's connect. You can @ me
on Twitter (@tapasadhikary) with comments or feel free to follow.
From https://giphy.com/
TAPAS ADHIKARY
Read more posts by this author.
If you read this far, tweet to the author to show them you care.
Tweet a thanks
Learn to code for free. freeCodeCamp's open source curriculum has helped
more than 40,000 people get jobs as developers. Get started
ASCII Table Chart HTML Link Code How to Reverse Image Search
You can make a tax-deductible donation here.
Data Validation SDLC Ternary Operator JavaScript
About Alumni Network Open Source Shop Support Sponsors Academic Honesty Code of Conduct Privacy Policy Terms of Service Copyright Policy