The structure that defines an extended virtual joystick description
Defined in SDL_joystick.h
typedef struct SDL_VirtualJoystickDesc
{/**< `SDL_VIRTUAL_JOYSTICK_DESC_VERSION` */
Uint16 version; /**< `SDL_JoystickType` */
Uint16 type; /**< the number of axes on this joystick */
Uint16 naxes; /**< the number of buttons on this joystick */
Uint16 nbuttons; /**< the number of hats on this joystick */
Uint16 nhats; /**< the USB vendor ID of this joystick */
Uint16 vendor_id; /**< the USB product ID of this joystick */
Uint16 product_id; /**< unused */
Uint16 padding; /**< A mask of which buttons are valid for this controller
Uint32 button_mask; e.g. (1 << SDL_CONTROLLER_BUTTON_A) */
/**< A mask of which axes are valid for this controller
Uint32 axis_mask; e.g. (1 << SDL_CONTROLLER_AXIS_LEFTX) */
const char *name; /**< the name of the joystick */
void *userdata; /**< User data pointer passed to callbacks */
void (SDLCALL *Update)(void *userdata); /**< Called when the joystick state should be updated */
void (SDLCALL *SetPlayerIndex)(void *userdata, int player_index); /**< Called when the player index is set */
int (SDLCALL *Rumble)(void *userdata, Uint16 low_frequency_rumble, Uint16 high_frequency_rumble); /**< Implements SDL_JoystickRumble() */
int (SDLCALL *RumbleTriggers)(void *userdata, Uint16 left_rumble, Uint16 right_rumble); /**< Implements SDL_JoystickRumbleTriggers() */
int (SDLCALL *SetLED)(void *userdata, Uint8 red, Uint8 green, Uint8 blue); /**< Implements SDL_JoystickSetLED() */
int (SDLCALL *SendEffect)(void *userdata, const void *data, int size); /**< Implements SDL_JoystickSendEffect() */
} SDL_VirtualJoystickDesc;
The caller must zero the structure and then initialize the version with SDL_VIRTUAL_JOYSTICK_DESC_VERSION
before passing it to SDL_JoystickAttachVirtualEx() All other elements of this structure are optional and can be left 0.