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