Add KeyboardController class
Update main to use KeyboardController
Update JsonPlaylist to silently fail instead of crashing