Well, I'm not a big fan of the on_...-events and I don't think that there's an event for all keys on a normal Keyboard.
Using a custom input system seems more elegant and cleaner to me.
@Reconnoiter: The method I'm going to use is similar to the one you posted. However, I think using strings as keycodes adds unnecessary complexity (parsing the string on every poll...) and makes it harder to implement actual ingame binding (which is important to me aswell).
Edit: I just saw that theres a reverse function for key_for_str() (str_for_key(), I searched for key_to_str()...)
So ingame binding with your method wouldn't be a problem. But it's still just wasted performance imo.. going from the scancode to the key-string just to do the reverse for every key poll