Improve Events interface and add keyboard event helpers