updated event to allow keys to be reconfigured

moved sdl_add/remove timer into static functions which check for errors
and throw exceptions.