introduced abstract level, switched keyboardHelper and virtualJoystick to TypeScript