This is really fun- thanks for sharing!
If you set the "shortcut" field for the buttons in your "navigator" contraption you can make them respond to the a/w/d keys for keyboard-based movement; it would also be possible to overload the top-level navigate[] event if you wanted to respond to cursor keys or swipe gestures as another input method.