Virtual keyboard: Fix some key codes and allow vertical cursor movement

This uses the cursor movement keys defined in the key-bindings rather than
having them hard coded. Also if the shift is on pressing the return button
will insert a newline and the left/right buttons will move the cursor up/down.