Fix keyboard possibly using previously typed keys

Key unicode wasn't being reset when a non-printable character was
typed, so the module could be reusing the last printable
character typed. For example, if a key could type both a
printable character 'A' and a non-printable character 'B', and
the user typed 'A' first, releasing the key will reset the
`isPressed` field but not the `unicode` field. If the user then
types the non-printable 'B', `unicode` will not be reset, causing
the result to be as if the user typed 'A' again.