Home | History | Annotate | Download | only in SDL
      1 /*
      2     SDL - Simple DirectMedia Layer
      3     Copyright (C) 1997-2006 Sam Lantinga
      4 
      5     This library is free software; you can redistribute it and/or
      6     modify it under the terms of the GNU Lesser General Public
      7     License as published by the Free Software Foundation; either
      8     version 2.1 of the License, or (at your option) any later version.
      9 
     10     This library is distributed in the hope that it will be useful,
     11     but WITHOUT ANY WARRANTY; without even the implied warranty of
     12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     13     Lesser General Public License for more details.
     14 
     15     You should have received a copy of the GNU Lesser General Public
     16     License along with this library; if not, write to the Free Software
     17     Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
     18 
     19     Sam Lantinga
     20     slouken (at) libsdl.org
     21 */
     22 
     23 /* Include file for SDL joystick event handling */
     24 
     25 #ifndef _SDL_joystick_h
     26 #define _SDL_joystick_h
     27 
     28 #include "SDL_stdinc.h"
     29 #include "SDL_error.h"
     30 
     31 #include "begin_code.h"
     32 /* Set up for C function definitions, even when using C++ */
     33 #ifdef __cplusplus
     34 extern "C" {
     35 #endif
     36 
     37 /* In order to use these functions, SDL_Init() must have been called
     38    with the SDL_INIT_JOYSTICK flag.  This causes SDL to scan the system
     39    for joysticks, and load appropriate drivers.
     40 */
     41 
     42 /* The joystick structure used to identify an SDL joystick */
     43 struct _SDL_Joystick;
     44 typedef struct _SDL_Joystick SDL_Joystick;
     45 
     46 
     47 /* Function prototypes */
     48 /*
     49  * Count the number of joysticks attached to the system
     50  */
     51 extern DECLSPEC int SDLCALL SDL_NumJoysticks(void);
     52 
     53 /*
     54  * Get the implementation dependent name of a joystick.
     55  * This can be called before any joysticks are opened.
     56  * If no name can be found, this function returns NULL.
     57  */
     58 extern DECLSPEC const char * SDLCALL SDL_JoystickName(int device_index);
     59 
     60 /*
     61  * Open a joystick for use - the index passed as an argument refers to
     62  * the N'th joystick on the system.  This index is the value which will
     63  * identify this joystick in future joystick events.
     64  *
     65  * This function returns a joystick identifier, or NULL if an error occurred.
     66  */
     67 extern DECLSPEC SDL_Joystick * SDLCALL SDL_JoystickOpen(int device_index);
     68 
     69 /*
     70  * Returns 1 if the joystick has been opened, or 0 if it has not.
     71  */
     72 extern DECLSPEC int SDLCALL SDL_JoystickOpened(int device_index);
     73 
     74 /*
     75  * Get the device index of an opened joystick.
     76  */
     77 extern DECLSPEC int SDLCALL SDL_JoystickIndex(SDL_Joystick *joystick);
     78 
     79 /*
     80  * Get the number of general axis controls on a joystick
     81  */
     82 extern DECLSPEC int SDLCALL SDL_JoystickNumAxes(SDL_Joystick *joystick);
     83 
     84 /*
     85  * Get the number of trackballs on a joystick
     86  * Joystick trackballs have only relative motion events associated
     87  * with them and their state cannot be polled.
     88  */
     89 extern DECLSPEC int SDLCALL SDL_JoystickNumBalls(SDL_Joystick *joystick);
     90 
     91 /*
     92  * Get the number of POV hats on a joystick
     93  */
     94 extern DECLSPEC int SDLCALL SDL_JoystickNumHats(SDL_Joystick *joystick);
     95 
     96 /*
     97  * Get the number of buttons on a joystick
     98  */
     99 extern DECLSPEC int SDLCALL SDL_JoystickNumButtons(SDL_Joystick *joystick);
    100 
    101 /*
    102  * Update the current state of the open joysticks.
    103  * This is called automatically by the event loop if any joystick
    104  * events are enabled.
    105  */
    106 extern DECLSPEC void SDLCALL SDL_JoystickUpdate(void);
    107 
    108 /*
    109  * Enable/disable joystick event polling.
    110  * If joystick events are disabled, you must call SDL_JoystickUpdate()
    111  * yourself and check the state of the joystick when you want joystick
    112  * information.
    113  * The state can be one of SDL_QUERY, SDL_ENABLE or SDL_IGNORE.
    114  */
    115 extern DECLSPEC int SDLCALL SDL_JoystickEventState(int state);
    116 
    117 /*
    118  * Get the current state of an axis control on a joystick
    119  * The state is a value ranging from -32768 to 32767.
    120  * The axis indices start at index 0.
    121  */
    122 extern DECLSPEC Sint16 SDLCALL SDL_JoystickGetAxis(SDL_Joystick *joystick, int axis);
    123 
    124 /*
    125  * Get the current state of a POV hat on a joystick
    126  * The return value is one of the following positions:
    127  */
    128 #define SDL_HAT_CENTERED	0x00
    129 #define SDL_HAT_UP		0x01
    130 #define SDL_HAT_RIGHT		0x02
    131 #define SDL_HAT_DOWN		0x04
    132 #define SDL_HAT_LEFT		0x08
    133 #define SDL_HAT_RIGHTUP		(SDL_HAT_RIGHT|SDL_HAT_UP)
    134 #define SDL_HAT_RIGHTDOWN	(SDL_HAT_RIGHT|SDL_HAT_DOWN)
    135 #define SDL_HAT_LEFTUP		(SDL_HAT_LEFT|SDL_HAT_UP)
    136 #define SDL_HAT_LEFTDOWN	(SDL_HAT_LEFT|SDL_HAT_DOWN)
    137 /*
    138  * The hat indices start at index 0.
    139  */
    140 extern DECLSPEC Uint8 SDLCALL SDL_JoystickGetHat(SDL_Joystick *joystick, int hat);
    141 
    142 /*
    143  * Get the ball axis change since the last poll
    144  * This returns 0, or -1 if you passed it invalid parameters.
    145  * The ball indices start at index 0.
    146  */
    147 extern DECLSPEC int SDLCALL SDL_JoystickGetBall(SDL_Joystick *joystick, int ball, int *dx, int *dy);
    148 
    149 /*
    150  * Get the current state of a button on a joystick
    151  * The button indices start at index 0.
    152  */
    153 extern DECLSPEC Uint8 SDLCALL SDL_JoystickGetButton(SDL_Joystick *joystick, int button);
    154 
    155 /*
    156  * Close a joystick previously opened with SDL_JoystickOpen()
    157  */
    158 extern DECLSPEC void SDLCALL SDL_JoystickClose(SDL_Joystick *joystick);
    159 
    160 
    161 /* Ends C function definitions when using C++ */
    162 #ifdef __cplusplus
    163 }
    164 #endif
    165 #include "close_code.h"
    166 
    167 #endif /* _SDL_joystick_h */
    168