I think your normalization of of `charCode` and `keyCode` are fine. However, my understanding of the spec is that `key` should be `"Enter"` when pressing **Enter** on all `keydown`, `keyup`, and `keypress` events. The code here will never set `key` to `"Enter"`.

By the way, I've been using this to see what browsers do: http://jsfiddle.net/yungsters/D9LjL/