added engine.keyboard.repeat_events(), improved keyboard event handling