Dealing with keydown
events is a pain, since the event object has always encoded the key as an arbitrary numeric code, so any program that deals with key-related events has something like:
var charcodes = {
32 : ' ',
8 : 'Backspace',
20 : 'CapsLock',
46 : 'Delete',
13 : 'Enter',
27 : 'Escape',
45 : 'Insert',
144 : 'NumLock',
9 : 'Tab'
};
And so on. There is a proposal to add a key
field that uses standardized names for the keys, but only Firefox and IE implement that right now. The time is ripe for a polyfill to bring Chrome and Safari into the twenty-first century, and I'd already worked on something similar with my $.keymap
plugin.
So I updated that plugin to simply implement the key
field in keydown
and keyup
events. Now just include the plugin and you can do things like:
$('textarea').keydown(function(event){
if (event.key == 'Escape') { do something useful }
});