I don't know how this would fit into the current AES evnt_multi() call.
Perhaps, add a KEYSTATE event mask type to evnt_multi() so when waiting
on this you would get the Key Down and Key Up events. The KEYSTATE
event wouldn't even need extra places to store the information. The key
would be returned in the same manner as regular keyboard events, and the
state could be another bit returned along with the status of the
keyboard modifier keys (Shift, Control, Alt, etc). If you use both the
existing keyboard (key-press) events and the newer Key-State, we could
return "Key Down" and the regular AES Keypress at the same time (the
data is compatible) to consolidate events if needed. For key-repeat,
you'd get a new Key-Down with the keypress, then 1 or more keypress
events, and then a keypress with a Key-Up, although I'd bet, for games
and such, you'd turn off the old keyboard event so you don't get all
repeat keys and just look at the Key Down and Key Up.