Split KeyboardEvent into two separate types

Signed-off-by: Jacky Boen <aqiank@gmail.com>