adding keyup, keydown, and keypress events

adding keyup, keydown, and keypress events

also added binding that fixes issue with keyboard events not emitting due to object structure changes.

Signed-off-by: m4strmind <m4strmind@gmail.com>
This bound function can probably be declared as a variable inside `setKeyupTimeout`, I'd prefer to have the `setTimeout` call on one line for clarity's sake.