I don't think this is an Angular issue. KeyUp and KeyDown events are different from KeyPress events. KeyUp/Down give you key codes while KeyPress gives you character codes - sometimes these are the same, sometimes they are not. The way in which the different browser have implemented the events differs as well. Some libraries, like jQuery, normalize the different browser implementations - not sure the Angular does this.
My suggestion would be to use the json pipe to look at the keyEvent object like:
<string>Event:</strong>{{ keyEvent | json }}<br>