add keyboard handler