Key codes of keydown and keyup events

JavaScript FAQ | Keyboard & Mouse Events FAQ  

Question: Are the keyCode values of keydown/keyup events standardized across browsers?

Answer: No, unfortunately, not all key codes are standardized. For example, the minus key has different key codes in different browsers. The table below shows the event.keyCode values for keydown and keyup events in Opera 25, Internet Exlorer 11, Firefox 32, Safari 5.1, and Google Chrome 38. If you are interested in key codes for older browsers (ca.2011), please refer to www.javascripter.net/faq/keycodes2011.htm or, for even older bowsers, see the W3C Working Group Note Legacy Keyboard Event Properties. Common key codes that are relatively safe to use across browsers are shown in black. Key codes that differ across browsers are shown in red. Do not use this table for character codes of keypress events: keypress character codes are not key-specific and may be enirely different from keydown/keyup key codes.

      keydown/keyup event.keyCode                    
Opera   MSIE  Firefox  Safari  Chrome    Key pressed
_________________________________________________________

  8       8       8       8       8      Backspace
  9       9       9       9       9      Tab
 13      13      13      13      13      Enter
 16      16      16      16      16      Shift
 17      17      17      17      17      Ctrl
 18      18      18      18      18      Alt
 19      19      19      19      19      Pause, Break
 20      20      20      20      20      CapsLock
 27      27      27      27      27      Esc
 32      32      32      32      32      Space
 33      33      33      33      33      Page Up
 34      34      34      34      34      Page Down
 35      35      35      35      35      End
 36      36      36      36      36      Home
 37      37      37      37      37      Left arrow
 38      38      38      38      38      Up arrow
 39      39      39      39      39      Right arrow
 40      40      40      40      40      Down arrow
         44      44      44      44      PrntScrn (see below)
 45      45      45      45      45      Insert
 46      46      46      46      46      Delete
 48-57   48-57   48-57   48-57   48-57   0 to 9
 65-90   65-90   65-90   65-90   65-90   A to Z  
 91      91      91      91      91      WIN Key (Start) 
 93      93      93      93      93      WIN Menu
112-123 112-123 112-123 112-123 112-123  F1 to F12 
144     144     144     144     144      NumLock
145     145     145     145     145      ScrollLock

188     188     188     188     188      , <
190     190     190     190     190      . >
191     191     191     191     191      / ?
192     192     192     192     192      ` ~
219     219     219     219     219      [ { (see below)
220     220     220     220     220      \ |
221     221     221     221     221      ] }
222     222     222     222     222      ' "
In most browsers, pressing the PrntScrn key fires keyup events only.
Key code 219 also corresponds to the Win Key (Start) in older versions of Opera.

The following key codes differ across browsers:

      keydown/keyup event.keyCode                    
Opera   MSIE  Firefox  Safari  Chrome    Key pressed
_________________________________________________________ 

173     173     181     173     173      Mute On|Off 
174     174     182     174     174      Volume Down 
175     175     183     175     175      Volume Up   
186     186      59     186     186      ; :         
187     187      61     187     187      = +         
189     189     173     189     189      - _         
The numeric keypad may produce different keycodes depending on the NumLock state:
All of the above browsers (NumLock On/Off)   Key pressed
__________________________________________________________

            96/45                           Numpad 0 Ins     
            97/35                           Numpad 1 End     
            98/40                           Numpad 2 Down    
            99/34                           Numpad 3 Pg Down 
           100/37                           Numpad 4 Left    
           101/12                           Numpad 5         
           102/39                           Numpad 6 Right   
           103/36                           Numpad 7 Home    
           104/38                           Numpad 8 Up      
           105/33                           Numpad 9 Pg Up   
           106/106                          Numpad *         
           107/107                          Numpad +         
           109/109                          Numpad -         
           110/46                           Numpad . Del     
           111/111                          Numpad /          

See also:
What event properties can I use to analyze keyboard events?
Which key did the user press?
Which character did the user type?
KeyEvent object (predefined key code constants in Firefox)

Copyright © 1999-2015, JavaScripter.net.