Allow data to be overwritten
Handle both keyCode and charCode (and listen to both events)