extensible keymap in ui.keypress

I suggest turning `keysByCode` object into a provider to enable adding new named key codes or to change the name if one wish,