Improve keyboard event handling and add zooming