src/joystick/SDL_joystick_c.h
author Sam Lantinga <slouken@libsdl.org>
Thu, 09 Aug 2018 16:00:17 -0700
changeset 12088 399cc39583cc
parent 11934 a7061d1f4ee4
child 12192 f03ca3ab9b30
permissions -rw-r--r--
Added HIDAPI joystick drivers for more consistent support for Xbox, PS4 and Nintendo Switch Pro controller support across platforms.
Added SDL_GameControllerRumble() and SDL_JoystickRumble() for simple force feedback outside of the SDL haptics API
slouken@0
     1
/*
slouken@5535
     2
  Simple DirectMedia Layer
slouken@11811
     3
  Copyright (C) 1997-2018 Sam Lantinga <slouken@libsdl.org>
slouken@0
     4
slouken@5535
     5
  This software is provided 'as-is', without any express or implied
slouken@5535
     6
  warranty.  In no event will the authors be held liable for any damages
slouken@5535
     7
  arising from the use of this software.
slouken@0
     8
slouken@5535
     9
  Permission is granted to anyone to use this software for any purpose,
slouken@5535
    10
  including commercial applications, and to alter it and redistribute it
slouken@5535
    11
  freely, subject to the following restrictions:
slouken@0
    12
slouken@5535
    13
  1. The origin of this software must not be misrepresented; you must not
slouken@5535
    14
     claim that you wrote the original software. If you use this software
slouken@5535
    15
     in a product, an acknowledgment in the product documentation would be
slouken@5535
    16
     appreciated but is not required.
slouken@5535
    17
  2. Altered source versions must be plainly marked as such, and must not be
slouken@5535
    18
     misrepresented as being the original software.
slouken@5535
    19
  3. This notice may not be removed or altered from any source distribution.
slouken@0
    20
*/
icculus@8093
    21
#include "../SDL_internal.h"
slouken@0
    22
slouken@0
    23
/* Useful functions and variables from SDL_joystick.c */
slouken@0
    24
#include "SDL_joystick.h"
slouken@0
    25
slouken@12088
    26
struct _SDL_JoystickDriver;
slouken@12088
    27
slouken@4472
    28
/* Initialization and shutdown functions */
slouken@4472
    29
extern int SDL_JoystickInit(void);
slouken@4472
    30
extern void SDL_JoystickQuit(void);
slouken@4472
    31
slouken@12088
    32
/* Function to get the next available joystick instance ID */
slouken@12088
    33
extern SDL_JoystickID SDL_GetNextJoystickInstanceID(void);
slouken@12088
    34
slouken@6690
    35
/* Initialization and shutdown functions */
slouken@11201
    36
extern int SDL_GameControllerInitMappings(void);
slouken@11201
    37
extern void SDL_GameControllerQuitMappings(void);
slouken@6690
    38
extern int SDL_GameControllerInit(void);
slouken@6690
    39
extern void SDL_GameControllerQuit(void);
slouken@6690
    40
slouken@12088
    41
/* Function to get the joystick driver and device index for an API device index */
slouken@12088
    42
extern SDL_bool SDL_GetDriverAndJoystickIndex(int device_index, struct _SDL_JoystickDriver **driver, int *driver_index);
slouken@12088
    43
slouken@12088
    44
/* Function to return the device index for a joystick ID, or -1 if not found */
slouken@12088
    45
extern int SDL_JoystickGetDeviceIndexFromInstanceID(SDL_JoystickID instance_id);
slouken@12088
    46
slouken@11201
    47
/* Function to extract information from an SDL joystick GUID */
slouken@11201
    48
extern void SDL_GetJoystickGUIDInfo(SDL_JoystickGUID guid, Uint16 *vendor, Uint16 *product, Uint16 *version);
slouken@11201
    49
slouken@12088
    50
/* Function to return whether a joystick is a PS4 controller */
slouken@12088
    51
extern SDL_bool SDL_IsJoystickPS4(Uint16 vendor_id, Uint16 product_id);
slouken@12088
    52
slouken@12088
    53
/* Function to return whether a joystick is a Nintendo Switch Pro controller */
slouken@12088
    54
extern SDL_bool SDL_IsJoystickNintendoSwitchPro(Uint16 vendor_id, Uint16 product_id);
slouken@12088
    55
slouken@12088
    56
/* Function to return whether a joystick is a Steam Controller */
slouken@12088
    57
extern SDL_bool SDL_IsJoystickSteamController(Uint16 vendor_id, Uint16 product_id);
slouken@12088
    58
slouken@12088
    59
/* Function to return whether a joystick is an Xbox 360 controller */
slouken@12088
    60
extern SDL_bool SDL_IsJoystickXbox360(Uint16 vendor_id, Uint16 product_id);
slouken@12088
    61
slouken@12088
    62
/* Function to return whether a joystick is an Xbox One controller */
slouken@12088
    63
extern SDL_bool SDL_IsJoystickXboxOne(Uint16 vendor_id, Uint16 product_id);
slouken@12088
    64
slouken@12088
    65
/* Function to return whether a joystick should be ignored */
slouken@12088
    66
extern SDL_bool SDL_ShouldIgnoreJoystick(const char *name, SDL_JoystickGUID guid);
slouken@12088
    67
slouken@11201
    68
/* Function to return whether a joystick name and GUID is a game controller  */
slouken@11201
    69
extern SDL_bool SDL_IsGameControllerNameAndGUID(const char *name, SDL_JoystickGUID guid);
slouken@11201
    70
slouken@11201
    71
/* Function to return whether a game controller should be ignored */
slouken@11201
    72
extern SDL_bool SDL_ShouldIgnoreGameController(const char *name, SDL_JoystickGUID guid);
slouken@11201
    73
slouken@11934
    74
/* Handle delayed guide button on a game controller */
slouken@11934
    75
extern void SDL_GameControllerHandleDelayedGuideButton(SDL_Joystick *joystick);
slouken@11934
    76
slouken@0
    77
/* Internal event queueing functions */
slouken@12088
    78
extern void SDL_PrivateJoystickAdded(SDL_JoystickID device_instance);
slouken@10226
    79
extern void SDL_PrivateJoystickRemoved(SDL_JoystickID device_instance);
slouken@1895
    80
extern int SDL_PrivateJoystickAxis(SDL_Joystick * joystick,
slouken@0
    81
                                   Uint8 axis, Sint16 value);
slouken@1895
    82
extern int SDL_PrivateJoystickBall(SDL_Joystick * joystick,
slouken@0
    83
                                   Uint8 ball, Sint16 xrel, Sint16 yrel);
slouken@1895
    84
extern int SDL_PrivateJoystickHat(SDL_Joystick * joystick,
slouken@1895
    85
                                  Uint8 hat, Uint8 value);
slouken@1895
    86
extern int SDL_PrivateJoystickButton(SDL_Joystick * joystick,
slouken@0
    87
                                     Uint8 button, Uint8 state);
slouken@10226
    88
extern void SDL_PrivateJoystickBatteryLevel(SDL_Joystick * joystick,
slouken@10226
    89
                                            SDL_JoystickPowerLevel ePowerLevel);
slouken@7191
    90
slouken@2713
    91
/* Internal sanity checking functions */
slouken@6690
    92
extern int SDL_PrivateJoystickValid(SDL_Joystick * joystick);
slouken@2713
    93
slouken@1895
    94
/* vi: set ts=4 sw=4 expandtab: */