Fix for dvorak-qwerty keyboard layout.

(And any other languages in which ctrl/alt/meta modify the keyCode)

Gist:
  - If event.which is valid ASCII, and the keyIdentifier is something mappable (hex values good, left/right/enter bad), use event.which
  - If the keyIdentifier was not mappable, use the existing charCodeFromHexCharCode => keyFromCharCode mapping
  - Otherwise, use the keyIdentifier as-is.