#include"SDL3/SDL.h"typedefstructSDL_VirtualJoystickDesc{Uint32version;/**<theversionofthisinterface*/Uint16type;/**<`SDL_JoystickType`*/Uint16padding;/**<unused*/Uint16vendor_id;/**<theUSBvendorIDofthisjoystick*/Uint16product_id;/**<theUSBproductIDofthisjoystick*/Uint16naxes;/**<thenumberofaxesonthisjoystick*/Uint16nbuttons;/**<thenumberofbuttonsonthisjoystick*/Uint16nballs;/**<thenumberofballsonthisjoystick*/Uint16nhats;/**<thenumberofhatsonthisjoystick*/Uint16ntouchpads;/**<thenumberoftouchpadsonthisjoystick,requires`touchpads`topointatvaliddescriptions*/Uint16nsensors;/**<thenumberofsensorsonthisjoystick,requires`sensors`topointatvaliddescriptions*/Uint16padding2[2];/**<unused*/Uint32button_mask;/**<Amaskofwhichbuttonsarevalidforthiscontrollere.g.(1<<SDL_GAMEPAD_BUTTON_SOUTH)*/Uint32axis_mask;/**<Amaskofwhichaxesarevalidforthiscontrollere.g.(1<<SDL_GAMEPAD_AXIS_LEFTX)*/constchar*name;/**<thenameofthejoystick*/constSDL_VirtualJoystickTouchpadDesc*touchpads;/**<Apointertoanarrayoftouchpaddescriptions,requiredif`ntouchpads`is>0*/constSDL_VirtualJoystickSensorDesc*sensors;/**<Apointertoanarrayofsensordescriptions,requiredif`nsensors`is>0*/void*userdata;/**<Userdatapointerpassedtocallbacks*/void(SDLCALL*Update)(void*userdata);/**<Calledwhenthejoystickstateshouldbeupdated*/void(SDLCALL*SetPlayerIndex)(void*userdata,intplayer_index);/**<Calledwhentheplayerindexisset*/bool(SDLCALL*Rumble)(void*userdata,Uint16low_frequency_rumble,Uint16high_frequency_rumble);/**<ImplementsSDL_RumbleJoystick()*/bool(SDLCALL*RumbleTriggers)(void*userdata,Uint16left_rumble,Uint16right_rumble);/**<ImplementsSDL_RumbleJoystickTriggers()*/bool(SDLCALL*SetLED)(void*userdata,Uint8red,Uint8green,Uint8blue);/**<ImplementsSDL_SetJoystickLED()*/bool(SDLCALL*SendEffect)(void*userdata,constvoid*data,intsize);/**<ImplementsSDL_SendJoystickEffect()*/bool(SDLCALL*SetSensorsEnabled)(void*userdata,boolenabled);/**<ImplementsSDL_SetGamepadSensorEnabled()*/void(SDLCALL*Cleanup)(void*userdata);/**<Cleansuptheuserdatawhenthejoystickisdetached*/}SDL_VirtualJoystickDesc;