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