add keyboard handling and key shortcuts