123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613 |
- //from sdl_gamecontroller.h
- {**
- * SDL_gamecontroller.h
- *
- * In order to use these functions, SDL_Init() must have been called
- * with the ::SDL_INIT_JOYSTICK flag. This causes SDL to scan the system
- * for game controllers, and load appropriate drivers.
- *
- * If you would like to receive controller updates while the application
- * is in the background, you should set the following hint before calling
- * SDL_Init(): SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS
- *}
- {* The gamecontroller structure used to identify an SDL game controller *}
- type
- PPSDL_GameController = ^PSDL_GameController;
- PSDL_GameController = ^TSDL_GameController;
- TSDL_GameController = record end;
- PPSDL_GameControllerType = ^PSDL_GameControllerType;
- PSDL_GameControllerType = ^TSDL_GameControllerType;
- TSDL_GameControllerType = type cint;
- const
- SDL_CONTROLLER_TYPE_UNKNOWN = TSDL_GameControllerType(0);
- SDL_CONTROLLER_TYPE_XBOX360 = TSDL_GameControllerType(1);
- SDL_CONTROLLER_TYPE_XBOXONE = TSDL_GameControllerType(2);
- SDL_CONTROLLER_TYPE_PS3 = TSDL_GameControllerType(3);
- SDL_CONTROLLER_TYPE_PS4 = TSDL_GameControllerType(4);
- SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_PRO = TSDL_GameControllerType(5);
- SDL_CONTROLLER_TYPE_VIRTUAL = TSDL_GameControllerType(6);
- SDL_CONTROLLER_TYPE_PS5 = TSDL_GameControllerType(7);
- SDL_CONTROLLER_TYPE_AMAZON_LUNA = TSDL_GameControllerType(8);
- SDL_CONTROLLER_TYPE_GOOGLE_STADIA = TSDL_GameControllerType(9);
- SDL_CONTROLLER_TYPE_NVIDIA_SHIELD = TSDL_GameControllerType(10);
- SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_LEFT = TSDL_GameControllerType(11);
- SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_RIGHT = TSDL_GameControllerType(12);
- SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_PAIR = TSDL_GameControllerType(13);
- type
- PPSDL_GameControllerBindType = ^PSDL_GameControllerBindType;
- PSDL_GameControllerBindType = ^TSDL_GameControllerBindType;
- TSDL_GameControllerBindType = type cint;
- const
- SDL_CONTROLLER_BINDTYPE_NONE = TSDL_GameControllerBindType(0);
- SDL_CONTROLLER_BINDTYPE_BUTTON = TSDL_GameControllerBindType(1);
- SDL_CONTROLLER_BINDTYPE_AXIS = TSDL_GameControllerBindType(2);
- SDL_CONTROLLER_BINDTYPE_HAT = TSDL_GameControllerBindType(3);
- {**
- * Get the SDL joystick layer binding for this controller button/axis mapping
- *}
- type
- THat = record
- hat: cint;
- hat_mask: cint;
- end;
- PPSDL_GameControllerButtonBind = ^PSDL_GameControllerButtonBind;
- PSDL_GameControllerButtonBind = ^TSDL_GameControllerButtonBind;
- TSDL_GameControllerButtonBind = record
- bindType: TSDL_GameControllerBindType;
- case cint of
- 0: ( button: cint; );
- 1: ( axis: cint; );
- 2: ( hat: THat; );
- end;
- {**
- * To count the number of game controllers in the system for the following:
- * int nJoysticks = SDL_NumJoysticks();
- * int nGameControllers = 0;
- * for ( int i = 0; i < nJoysticks; i++ ) [
- * if ( SDL_IsGameController(i) ) [
- * nGameControllers++;
- *
- * !! Pascal Conv.: Changed curly to square brackets in above example code
- to prevent opening comment blocks!
- *
- * Using the SDL_HINT_GAMECONTROLLERCONFIG hint or the SDL_GameControllerAddMapping you can add support for controllers SDL is unaware of or cause an existing controller to have a different binding. The format is:
- * guid,name,mappings
- *
- * Where GUID is the string value from SDL_JoystickGetGUIDString(), name is the human readable string for the device and mappings are controller mappings to joystick ones.
- * Under Windows there is a reserved GUID of "xinput" that covers any XInput devices.
- * The mapping format for joystick is:
- * bX - a joystick button, index X
- * hX.Y - hat X with value Y
- * aX - axis X of the joystick
- * Buttons can be used as a controller axis and vice versa.
- *
- * This string shows an example of a valid mapping for a controller
- * "341a3608000000000000504944564944,Afterglow PS3 Controller,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftshoulder:b4,rightshoulder:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7",
- *
- *}
- {**
- * Add or update an existing mapping configuration
- *
- * 1 if mapping is added, 0 if updated, -1 on error
- *}
- function SDL_GameControllerAddMapping( mappingString: PAnsiChar ): cint cdecl; external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GameControllerAddMapping' {$ENDIF} {$ENDIF};
- {**
- * Load a set of mappings from a seekable SDL data stream (memory or file), filtered by the current SDL_GetPlatform()
- * A community sourced database of controllers is available at https://raw.github.com/gabomdq/SDL_GameControllerDB/master/gamecontrollerdb.txt
- *
- * If freerw is non-zero, the stream will be closed after being read.
- *
- * Returns number of mappings added, -1 on error
- *}
- function SDL_GameControllerAddMappingsFromRW(rw: PSDL_RWops; freerw: cint32):cint32;
- cdecl; external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GameControllerAddMappingsFromRW' {$ENDIF} {$ENDIF};
- {**
- * Get the number of mappings installed.
- *}
- function SDL_GameControllerNumMappings():cint; cdecl;
- external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GameControllerNumMappings' {$ENDIF} {$ENDIF};
- {**
- * Get a mapping string for a GUID
- *
- * the mapping string. Must be freed with SDL_free. Returns NULL if no mapping is available
- *}
- function SDL_GameControllerMappingForGUID( guid: TSDL_JoystickGUID ): PAnsiChar cdecl; external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GameControllerMappingForGUID' {$ENDIF} {$ENDIF};
- {**
- * Get the mapping at a particular index.
- *
- * Returns the mapping string. Must be freed with SDL_free().
- * Returns NIL if the index is out of range.
- *}
- function SDL_GameControllerMappingForIndex(mapping_index: cint): PAnsiChar; cdecl;
- external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GameControllerMappingForIndex' {$ENDIF} {$ENDIF};
- {**
- * Get a mapping string for an open GameController
- *
- * the mapping string. Must be freed with SDL_free. Returns NULL if no mapping is available
- *}
- function SDL_GameControllerMapping( gamecontroller: PSDL_GameController ): PAnsiChar cdecl; external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GameControllerMapping' {$ENDIF} {$ENDIF};
- {**
- * Is the joystick on this index supported by the game controller interface?
- *}
- function SDL_IsGameController(joystick_index: cint): TSDL_Bool cdecl; external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_IsGameController' {$ENDIF} {$ENDIF};
- {**
- * Get the implementation dependent name of a game controller.
- * This can be called before any controllers are opened.
- * If no name can be found, this function returns NULL.
- *}
- function SDL_GameControllerNameForIndex(joystick_index: cint): PAnsiChar cdecl; external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GameControllerNameForIndex' {$ENDIF} {$ENDIF};
- {**
- * Get the implementation dependent path for the game controller.
- *
- * This function can be called before any controllers are opened.
- *
- * `joystick_index` is the same as the `device_index` passed to
- * SDL_JoystickOpen().
- *
- * \param joystick_index the device_index of a device, from zero to
- * SDL_NumJoysticks()-1
- * \returns the implementation-dependent path for the game controller, or NIL
- * if there is no path or the index is invalid.
- *
- * \since This function is available since SDL 2.24.0.
- *
- * \sa SDL_GameControllerPath
- *}
- function SDL_GameControllerPathForIndex(joystick_index: cint): PAnsiChar; cdecl;
- external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GameControllerPathForIndex' {$ENDIF} {$ENDIF};
- {**
- * Get the type of a game controller.
- * This can be called before any controllers are opened.
- *}
- function SDL_GameControllerTypeForIndex(joystick_index: cint): TSDL_GameControllerType; cdecl;
- external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GameControllerTypeForIndex' {$ENDIF} {$ENDIF};
- {**
- * Get the mapping of a game controller.
- * This can be called before any controllers are opened.
- *
- * Returns the mapping string. Must be freed with SDL_free().
- * Returns NIL if no mapping is available.
- *}
- function SDL_GameControllerMappingForDeviceIndex(joystick_index: cint): PAnsiChar; cdecl;
- external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GameControllerMappingForDeviceIndex' {$ENDIF} {$ENDIF};
- {**
- * Open a game controller for use.
- * The index passed as an argument refers to the N'th game controller on the system.
- * This index is the value which will identify this controller in future controller
- * events.
- *
- * A controller identifier, or NULL if an error occurred.
- *}
- function SDL_GameControllerOpen(joystick_index: cint): PSDL_GameController cdecl; external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GameControllerOpen' {$ENDIF} {$ENDIF};
- {**
- * Return the SDL_GameController associated with an instance id.
- *}
- function SDL_GameControllerFromInstanceID(joyid: TSDL_JoystickID): PSDL_GameController; cdecl;
- external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GameControllerFromInstanceID' {$ENDIF} {$ENDIF};
- {**
- * Get the SDL_GameController associated with a player index.
- *
- * Please note that the player index is _not_ the device index, nor is it the
- * instance id!
- *
- *}
- function SDL_GameControllerFromPlayerIndex(player_index: cint): PSDL_GameController; cdecl;
- external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GameControllerFromPlayerIndex' {$ENDIF} {$ENDIF};
- {**
- * Return the name for this currently opened controller
- *}
- function SDL_GameControllerName(gamecontroller: PSDL_GameController): PAnsiChar cdecl; external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GameControllerName' {$ENDIF} {$ENDIF};
- {**
- * Get the implementation-dependent path for an opened game controller.
- *
- * This is the same path as returned by SDL_GameControllerNameForIndex(), but
- * it takes a controller identifier instead of the (unstable) device index.
- *
- * \param gamecontroller a game controller identifier previously returned by
- * SDL_GameControllerOpen()
- * \returns the implementation dependent path for the game controller, or NIL
- * if there is no path or the identifier passed is invalid.
- *
- * \since This function is available since SDL 2.24.0.
- *
- * \sa SDL_GameControllerPathForIndex
- *}
- function SDL_GameControllerPath(gamecontroller: PSDL_GameController): PAnsiChar; cdecl;
- external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GameControllerPath' {$ENDIF} {$ENDIF};
- {**
- * Get the type of this currently opened controller
- *
- * This is the same name as returned by SDL_GameControllerTypeForIndex(), but
- * it takes a controller identifier instead of the (unstable) device index.
- *}
- function SDL_GameControllerGetType(gamecontroller: PSDL_GameController): TSDL_GameControllerType; cdecl;
- external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GameControllerGetType' {$ENDIF} {$ENDIF};
- {**
- * Get the player index of an opened game controller.
- * For XInput controllers this returns the XInput user index.
- *
- * Returns the player index for controller, or -1 if it's not available.
- *}
- function SDL_GameControllerGetPlayerIndex(gamecontroller: PSDL_GameController): cint; cdecl;
- external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GameControllerGetPlayerIndex' {$ENDIF} {$ENDIF};
- {**
- * Set the player index of an opened game controller.
- *}
- procedure SDL_GameControllerSetPlayerIndex(gamecontroller: PSDL_GameController; player_index: cint); cdecl;
- external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GameControllerSetPlayerIndex' {$ENDIF} {$ENDIF};
- {**
- * Get the USB vendor ID of an opened controller, if available.
- *
- * If the vendor ID isn't available this function returns 0.
- *
- * \param gamecontroller the game controller object to query.
- * \return the USB vendor ID, or zero if unavailable.
- *
- * \since This function is available since SDL 2.0.6.
- *}
- function SDL_GameControllerGetVendor(gamecontroller: PSDL_GameController): cuint16; cdecl;
- external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GameControllerGetVendor' {$ENDIF} {$ENDIF};
- {**
- * Get the USB product ID of an opened controller, if available.
- * If the product ID isn't available, this function returns 0.
- *}
- function SDL_GameControllerGetProduct(gamecontroller: PSDL_GameController): cuint16; cdecl;
- external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GameControllerGetProduct' {$ENDIF} {$ENDIF};
- {**
- * Get the product version of an opened controller, if available.
- * If the product version isn't available, this function returns 0.
- *}
- function SDL_GameControllerGetProductVersion(gamecontroller: PSDL_GameController): cuint16; cdecl;
- external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GameControllerGetProductVersion' {$ENDIF} {$ENDIF};
- {**
- * Get the firmware version of an opened controller, if available.
- *
- * If the firmware version isn't available this function returns 0.
- *
- * \param gamecontroller the game controller object to query.
- * \return the controller firmware version, or zero if unavailable.
- *
- * \since This function is available since SDL 2.24.0.
- *}
- function SDL_GameControllerGetFirmwareVersion(gamecontroller: PSDL_GameController): cuint16; cdecl;
- external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GameControllerGetFirmwareVersion' {$ENDIF} {$ENDIF};
- {**
- * Get the serial number of an opened controller, if available.
- *
- * Returns a string containing the serial number of the controller,
- * or NIL if it is not available. Do _not_ free the string with SDL_free().
- *}
- function SDL_GameControllerGetSerial(gamecontroller: PSDL_GameController): PAnsiChar; cdecl;
- external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GameControllerGetSerial' {$ENDIF} {$ENDIF};
- {**
- * Returns SDL_TRUE if the controller has been opened and currently connected,
- * or SDL_FALSE if it has not.
- *}
- function SDL_GameControllerGetAttached(gamecontroller: PSDL_GameController): TSDL_Bool cdecl; external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GameControllerGetAttached' {$ENDIF} {$ENDIF};
- {**
- * Get the underlying joystick object used by a controller
- *}
- function SDL_GameControllerGetJoystick(gamecontroller: PSDL_GameController): PSDL_Joystick cdecl; external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GameControllerGetJoystick' {$ENDIF} {$ENDIF};
- {**
- * Enable/disable controller event polling.
- *
- * If controller events are disabled, you must call SDL_GameControllerUpdate()
- * yourself and check the state of the controller when you want controller
- * information.
- *
- * The state can be one of ::SDL_QUERY, ::SDL_ENABLE or ::SDL_IGNORE.
- *}
- function SDL_GameControllerEventState(state: cint): cint cdecl; external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GameControllerEventState' {$ENDIF} {$ENDIF};
- {**
- * Update the current state of the open game controllers.
- *
- * This is called automatically by the event loop if any game controller
- * events are enabled.
- *}
- procedure SDL_GameControllerUpdate() cdecl; external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GameControllerUpdate' {$ENDIF} {$ENDIF};
- {**
- * The list of axes available from a controller
- *}
- type
- PPSDL_GameControllerAxis = ^PSDL_GameControllerAxis;
- PSDL_GameControllerAxis = ^TSDL_GameControllerAxis;
- TSDL_GameControllerAxis = type cint;
- const
- SDL_CONTROLLER_AXIS_INVALID = TSDL_GameControllerAxis(-1);
- SDL_CONTROLLER_AXIS_LEFTX = TSDL_GameControllerAxis(0);
- SDL_CONTROLLER_AXIS_LEFTY = TSDL_GameControllerAxis(1);
- SDL_CONTROLLER_AXIS_RIGHTX = TSDL_GameControllerAxis(2);
- SDL_CONTROLLER_AXIS_RIGHTY = TSDL_GameControllerAxis(3);
- SDL_CONTROLLER_AXIS_TRIGGERLEFT = TSDL_GameControllerAxis(4);
- SDL_CONTROLLER_AXIS_TRIGGERRIGHT = TSDL_GameControllerAxis(5);
- SDL_CONTROLLER_AXIS_MAX = TSDL_GameControllerAxis(6);
- {**
- * turn this string into a axis mapping
- *}
- function SDL_GameControllerGetAxisFromString(pchString: PAnsiChar): TSDL_GameControllerAxis cdecl; external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GameControllerGetAxisFromString' {$ENDIF} {$ENDIF};
- {**
- * turn this axis enum into a string mapping
- *}
- function SDL_GameControllerGetStringForAxis(axis: TSDL_GameControllerAxis): PAnsiChar cdecl; external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GameControllerGetStringForAxis' {$ENDIF} {$ENDIF};
- {**
- * Get the SDL joystick layer binding for this controller button mapping
- *}
- function SDL_GameControllerGetBindForAxis(gamecontroller: PSDL_GameController; axis: TSDL_GameControllerAxis): TSDL_GameControllerButtonBind cdecl; external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GameControllerGetBindForAxis' {$ENDIF} {$ENDIF};
- {**
- * Query whether a game controller has a given axis.
- *
- * This merely reports whether the controller's mapping defined this axis,
- * as that is all the information SDL has about the physical device.
- *}
- function SDL_GameControllerHasAxis(gamecontroller: PSDL_GameController; axis: TSDL_GameControllerAxis): TSDL_Bool; cdecl;
- external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GameControllerHasAxis' {$ENDIF} {$ENDIF};
- {**
- * Get the current state of an axis control on a game controller.
- *
- * The state is a value ranging from -32768 to 32767.
- *
- * The axis indices start at index 0.
- *}
- function SDL_GameControllerGetAxis(gamecontroller: PSDL_GameController; axis: TSDL_GameControllerAxis): cint16 cdecl; external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GameControllerGetAxis' {$ENDIF} {$ENDIF};
- {**
- * The list of buttons available from a controller
- *}
- type
- PPSDL_GameControllerButton = ^PSDL_GameControllerButton;
- PSDL_GameControllerButton = ^TSDL_GameControllerButton;
- TSDL_GameControllerButton = type cint;
- const
- SDL_CONTROLLER_BUTTON_INVALID = TSDL_GameControllerButton(-1);
- SDL_CONTROLLER_BUTTON_A = TSDL_GameControllerButton(0);
- SDL_CONTROLLER_BUTTON_B = TSDL_GameControllerButton(1);
- SDL_CONTROLLER_BUTTON_X = TSDL_GameControllerButton(2);
- SDL_CONTROLLER_BUTTON_Y = TSDL_GameControllerButton(3);
- SDL_CONTROLLER_BUTTON_BACK = TSDL_GameControllerButton(4);
- SDL_CONTROLLER_BUTTON_GUIDE = TSDL_GameControllerButton(5);
- SDL_CONTROLLER_BUTTON_START = TSDL_GameControllerButton(6);
- SDL_CONTROLLER_BUTTON_LEFTSTICK = TSDL_GameControllerButton(7);
- SDL_CONTROLLER_BUTTON_RIGHTSTICK = TSDL_GameControllerButton(8);
- SDL_CONTROLLER_BUTTON_LEFTSHOULDER = TSDL_GameControllerButton(9);
- SDL_CONTROLLER_BUTTON_RIGHTSHOULDER = TSDL_GameControllerButton(10);
- SDL_CONTROLLER_BUTTON_DPAD_UP = TSDL_GameControllerButton(11);
- SDL_CONTROLLER_BUTTON_DPAD_DOWN = TSDL_GameControllerButton(12);
- SDL_CONTROLLER_BUTTON_DPAD_LEFT = TSDL_GameControllerButton(13);
- SDL_CONTROLLER_BUTTON_DPAD_RIGHT = TSDL_GameControllerButton(14);
- SDL_CONTROLLER_BUTTON_MISC1 = TSDL_GameControllerButton(15); {**< Xbox Series X share button, PS5 microphone button, Nintendo Switch Pro capture button, Amazon Luna microphone button *}
- SDL_CONTROLLER_BUTTON_PADDLE1 = TSDL_GameControllerButton(16); {**< Xbox Elite paddle P1 *}
- SDL_CONTROLLER_BUTTON_PADDLE2 = TSDL_GameControllerButton(17); {**< Xbox Elite paddle P3 *}
- SDL_CONTROLLER_BUTTON_PADDLE3 = TSDL_GameControllerButton(18); {**< Xbox Elite paddle P2 *}
- SDL_CONTROLLER_BUTTON_PADDLE4 = TSDL_GameControllerButton(19); {**< Xbox Elite paddle P4 *}
- SDL_CONTROLLER_BUTTON_TOUCHPAD = TSDL_GameControllerButton(20); {**< PS4/PS5 touchpad button *}
- SDL_CONTROLLER_BUTTON_MAX = TSDL_GameControllerButton(21);
- {**
- * turn this string into a button mapping
- *}
- function SDL_GameControllerGetButtonFromString(pchString: PAnsiChar): TSDL_GameControllerButton cdecl; external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GameControllerGetButtonFromString' {$ENDIF} {$ENDIF};
- {**
- * turn this button enum into a string mapping
- *}
- function SDL_GameControllerGetStringForButton(button: TSDL_GameControllerButton): PAnsiChar cdecl; external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GameControllerGetStringForButton' {$ENDIF} {$ENDIF};
- {**
- * Get the SDL joystick layer binding for this controller button mapping
- *}
- function SDL_GameControllerGetBindForButton(gamecontroller: PSDL_GameController; button: TSDL_GameControllerButton): TSDL_GameControllerButtonBind cdecl; external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GameControllerGetBindForButton' {$ENDIF} {$ENDIF};
- {**
- * Query whether a game controller has a given button.
- *
- * This merely reports whether the controller's mapping defined this button,
- * as that is all the information SDL has about the physical device.
- *}
- function SDL_GameControllerHasButton(gamecontroller: PSDL_GameController; button: TSDL_GameControllerButton): TSDL_Bool; cdecl;
- external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GameControllerHasButton' {$ENDIF} {$ENDIF};
- {**
- * Get the current state of a button on a game controller.
- *
- * The button indices start at index 0.
- *}
- function SDL_GameControllerGetButton(gamecontroller: PSDL_GameController; button: TSDL_GameControllerButton): cuint8 cdecl; external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GameControllerGetButton' {$ENDIF} {$ENDIF};
- {**
- * Get the number of touchpads on a game controller.
- *}
- function SDL_GameControllerGetNumTouchpads(gamecontroller: PSDL_GameController): cint; cdecl;
- external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GameControllerGetNumTouchpads' {$ENDIF} {$ENDIF};
- {**
- * Get the number of supported simultaneous fingers on a touchpad on a game controller.
- *}
- function SDL_GameControllerGetNumTouchpadFingers(gamecontroller: PSDL_GameController; touchpad: cint): cint; cdecl;
- external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GameControllerGetNumTouchpadFingers' {$ENDIF} {$ENDIF};
- {**
- * Get the current state of a finger on a touchpad on a game controller.
- *}
- function SDL_GameControllerGetTouchpadFinger(
- gamecontroller: PSDL_GameController;
- touchpad, finger: cint;
- state: pcuint8;
- x, y, pressure: pcfloat
- ): cint; cdecl;
- external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GameControllerGetTouchpadFinger' {$ENDIF} {$ENDIF};
- {**
- * Return whether a game controller has a particular sensor.
- *}
- function SDL_GameControllerHasSensor(gamecontroller: PSDL_GameController; senstype: TSDL_SensorType): TSDL_Bool; cdecl;
- external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GameControllerHasSensor' {$ENDIF} {$ENDIF};
- {**
- * Set whether data reporting for a game controller sensor is enabled.
- *}
- function SDL_GameControllerSetSensorEnabled(gamecontroller: PSDL_GameController; senstype: TSDL_SensorType; enabled: TSDL_bool): cint; cdecl;
- external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GameControllerSetSensorEnabled' {$ENDIF} {$ENDIF};
- {**
- * Query whether sensor data reporting is enabled for a game controller.
- *}
- function SDL_GameControllerIsSensorEnabled(gamecontroller: PSDL_GameController; senstype: TSDL_SensorType): TSDL_Bool; cdecl;
- external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GameControllerIsSensorEnabled' {$ENDIF} {$ENDIF};
- {**
- * Get the data rate (number of events per second) of
- * a game controller sensor.
- *
- * Returns the data rate, or 0.0 if the data rate is not available.
- *}
- function SDL_GameControllerGetSensorDataRate(gamecontroller: PSDL_GameController; senstype: TSDL_SensorType): cfloat; cdecl;
- external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GameControllerGetSensorDataRate' {$ENDIF} {$ENDIF};
- {**
- * Get the current state of a game controller sensor.
- *
- * The number of values and interpretation of the data is sensor dependent.
- * See sdlsensor.inc for the details for each type of sensor.
- *}
- function SDL_GameControllerGetSensorData(gamecontroller: PSDL_GameController; senstype: TSDL_SensorType; data: pcfloat; num_values: cint): cint; cdecl;
- external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GameControllerGetSensorData' {$ENDIF} {$ENDIF};
- {**
- * Query whether a game controller has rumble support.
- *}
- function SDL_GameControllerHasRumble(gamecontroller: PSDL_GameController): TSDL_Bool; cdecl;
- external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GameControllerHasRumble' {$ENDIF} {$ENDIF};
- {**
- * Start a rumble effect on a game controller.
- *
- * Each call to this function cancels any previous rumble effect, and calling
- * it with 0 intensity stops any rumbling.
- *
- * Returns 0, or -1 if rumble isn't supported on this controller.
- *}
- function SDL_GameControllerRumble(
- gamecontroller: PSDL_GameController;
- low_frequency_rumble, high_frequency_rumble: cuint16;
- duration_ms: cuint32
- ): cint; cdecl;
- external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GameControllerRumble' {$ENDIF} {$ENDIF};
- {**
- * Query whether a game controller has rumble support on triggers.
- *}
- function SDL_GameControllerHasRumbleTriggers(gamecontroller: PSDL_GameController): TSDL_Bool; cdecl;
- external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GameControllerHasRumbleTriggers' {$ENDIF} {$ENDIF};
- {**
- * Start a rumble effect in the game controller's triggers.
- *
- * Each call to this function cancels any previous trigger rumble effect, and
- * calling it with 0 intensity stops any rumbling.
- *
- * Note that this is rumbling of the _triggers_ and not the game controller as
- * a whole. This is currently only supported on Xbox One controllers. If you
- * want the (more common) whole-controller rumble, use
- * SDL_GameControllerRumble() instead.
- *
- * Returns 0, or -1 if trigger rumble isn't supported on this controller
- *}
- function SDL_GameControllerRumbleTriggers(
- gamecontroller: PSDL_GameController;
- left_rumble, right_rumble: cuint16;
- duration_ms: cuint32
- ): cint; cdecl;
- external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GameControllerRumbleTriggers' {$ENDIF} {$ENDIF};
- {**
- * Query whether a game controller has an LED.
- *}
- function SDL_GameControllerHasLED(gamecontroller: PSDL_GameController): TSDL_Bool; cdecl;
- external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GameControllerHasLED' {$ENDIF} {$ENDIF};
- {**
- * Update a game controller's LED color.
- *
- * Returns 0, or -1 if this controller does not have a modifiable LED.
- *}
- function SDL_GameControllerSetLED(gamecontroller: PSDL_GameController; red, green, blue: cuint8): cint; cdecl;
- external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GameControllerSetLED' {$ENDIF} {$ENDIF};
- {**
- * Send a controller-specific effect packet.
- *
- * Returns 0, or -1 if this controller or driver does not
- * support effect packets.
- *}
- function SDL_GameControllerSendEffect(gamecontroller: PSDL_GameController; data: Pointer; size: cint): cint; cdecl;
- external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GameControllerSendEffect' {$ENDIF} {$ENDIF};
- {**
- * Close a controller previously opened with SDL_GameControllerOpen().
- *}
- procedure SDL_GameControllerClose(gamecontroller: PSDL_GameController) cdecl; external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GameControllerClose' {$ENDIF} {$ENDIF};
- {**
- * Return the sfSymbolsName for a given axis on a game controller
- * on Apple platforms.
- *
- * Returns the sfSymbolsName, or NIL if the name can't be found.
- * Do _not_ pass this string to SDL_free().
- *}
- function SDL_GameControllerGetAppleSFSymbolsNameForAxis(gamecontroller: PSDL_GameController; axis: TSDL_GameControllerAxis): PAnsiChar; cdecl;
- external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GameControllerGetAppleSFSymbolsNameForAxis' {$ENDIF} {$ENDIF};
- {**
- * Return the sfSymbolsName for a given button on a game controller
- * on Apple platforms.
- *
- * Returns the sfSymbolsName, or NIL if the name can't be found.
- * Do _not_ pass this string to SDL_free().
- *}
- function SDL_GameControllerGetAppleSFSymbolsNameForButton(gamecontroller: PSDL_GameController; button: TSDL_GameControllerButton): PAnsiChar; cdecl;
- external {$IFDEF DYNAMIC_LINK}SDL_LibName{$ENDIF} {$IFDEF DELPHI} {$IFDEF MACOS} name '_SDL_GameControllerGetAppleSFSymbolsNameForButton' {$ENDIF} {$ENDIF};
- function SDL_GameControllerAddMappingsFromFile(Const FilePath:PAnsiChar):cint32;
|