add keyboard input handler