pcsxr-1.9.92
[pcsx_rearmed.git] / macosx / plugins / DFInput / SDL / include / SDL_joystick.h
1 /*
2     SDL - Simple DirectMedia Layer
3     Copyright (C) 1997-2010 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@libsdl.org
21 */
22
23 /**
24  *  \file SDL_joystick.h
25  *  
26  *  Include file for SDL joystick event handling
27  */
28
29 #ifndef _SDL_joystick_h
30 #define _SDL_joystick_h
31
32 #include "SDL_stdinc.h"
33 #include "SDL_error.h"
34
35 #include "begin_code.h"
36 /* Set up for C function definitions, even when using C++ */
37 #ifdef __cplusplus
38 /* *INDENT-OFF* */
39 extern "C" {
40 /* *INDENT-ON* */
41 #endif
42
43 /**
44  *  \file SDL_joystick.h
45  *
46  *  In order to use these functions, SDL_Init() must have been called
47  *  with the ::SDL_INIT_JOYSTICK flag.  This causes SDL to scan the system
48  *  for joysticks, and load appropriate drivers.
49  */
50
51 /* The joystick structure used to identify an SDL joystick */
52 struct _SDL_Joystick;
53 typedef struct _SDL_Joystick SDL_Joystick;
54
55
56 /* Function prototypes */
57 /**
58  *  Count the number of joysticks attached to the system
59  */
60 extern DECLSPEC int SDLCALL SDL_NumJoysticks(void);
61
62 /**
63  *  Get the implementation dependent name of a joystick.
64  *  This can be called before any joysticks are opened.
65  *  If no name can be found, this function returns NULL.
66  */
67 extern DECLSPEC const char *SDLCALL SDL_JoystickName(int device_index);
68
69 /**
70  *  Open a joystick for use.  
71  *  The index passed as an argument refers tothe N'th joystick on the system.  
72  *  This index is the value which will identify this joystick in future joystick
73  *  events.
74  *  
75  *  \return A joystick identifier, or NULL if an error occurred.
76  */
77 extern DECLSPEC SDL_Joystick *SDLCALL SDL_JoystickOpen(int device_index);
78
79 /**
80  *  Returns 1 if the joystick has been opened, or 0 if it has not.
81  */
82 extern DECLSPEC int SDLCALL SDL_JoystickOpened(int device_index);
83
84 /**
85  *  Get the device index of an opened joystick.
86  */
87 extern DECLSPEC int SDLCALL SDL_JoystickIndex(SDL_Joystick * joystick);
88
89 /**
90  *  Get the number of general axis controls on a joystick.
91  */
92 extern DECLSPEC int SDLCALL SDL_JoystickNumAxes(SDL_Joystick * joystick);
93
94 /**
95  *  Get the number of trackballs on a joystick.
96  *  
97  *  Joystick trackballs have only relative motion events associated
98  *  with them and their state cannot be polled.
99  */
100 extern DECLSPEC int SDLCALL SDL_JoystickNumBalls(SDL_Joystick * joystick);
101
102 /**
103  *  Get the number of POV hats on a joystick.
104  */
105 extern DECLSPEC int SDLCALL SDL_JoystickNumHats(SDL_Joystick * joystick);
106
107 /**
108  *  Get the number of buttons on a joystick.
109  */
110 extern DECLSPEC int SDLCALL SDL_JoystickNumButtons(SDL_Joystick * joystick);
111
112 /**
113  *  Update the current state of the open joysticks.
114  *  
115  *  This is called automatically by the event loop if any joystick
116  *  events are enabled.
117  */
118 extern DECLSPEC void SDLCALL SDL_JoystickUpdate(void);
119
120 /**
121  *  Enable/disable joystick event polling.
122  *  
123  *  If joystick events are disabled, you must call SDL_JoystickUpdate()
124  *  yourself and check the state of the joystick when you want joystick
125  *  information.
126  *  
127  *  The state can be one of ::SDL_QUERY, ::SDL_ENABLE or ::SDL_IGNORE.
128  */
129 extern DECLSPEC int SDLCALL SDL_JoystickEventState(int state);
130
131 /**
132  *  Get the current state of an axis control on a joystick.
133  *  
134  *  The state is a value ranging from -32768 to 32767.
135  *  
136  *  The axis indices start at index 0.
137  */
138 extern DECLSPEC Sint16 SDLCALL SDL_JoystickGetAxis(SDL_Joystick * joystick,
139                                                    int axis);
140
141 /**
142  *  \name Hat positions
143  */
144 /*@{*/
145 #define SDL_HAT_CENTERED        0x00
146 #define SDL_HAT_UP              0x01
147 #define SDL_HAT_RIGHT           0x02
148 #define SDL_HAT_DOWN            0x04
149 #define SDL_HAT_LEFT            0x08
150 #define SDL_HAT_RIGHTUP         (SDL_HAT_RIGHT|SDL_HAT_UP)
151 #define SDL_HAT_RIGHTDOWN       (SDL_HAT_RIGHT|SDL_HAT_DOWN)
152 #define SDL_HAT_LEFTUP          (SDL_HAT_LEFT|SDL_HAT_UP)
153 #define SDL_HAT_LEFTDOWN        (SDL_HAT_LEFT|SDL_HAT_DOWN)
154 /*@}*/
155
156 /**
157  *  Get the current state of a POV hat on a joystick.
158  *
159  *  The hat indices start at index 0.
160  *  
161  *  \return The return value is one of the following positions:
162  *           - ::SDL_HAT_CENTERED
163  *           - ::SDL_HAT_UP
164  *           - ::SDL_HAT_RIGHT
165  *           - ::SDL_HAT_DOWN
166  *           - ::SDL_HAT_LEFT
167  *           - ::SDL_HAT_RIGHTUP
168  *           - ::SDL_HAT_RIGHTDOWN
169  *           - ::SDL_HAT_LEFTUP
170  *           - ::SDL_HAT_LEFTDOWN
171  */
172 extern DECLSPEC Uint8 SDLCALL SDL_JoystickGetHat(SDL_Joystick * joystick,
173                                                  int hat);
174
175 /**
176  *  Get the ball axis change since the last poll.
177  *  
178  *  \return 0, or -1 if you passed it invalid parameters.
179  *  
180  *  The ball indices start at index 0.
181  */
182 extern DECLSPEC int SDLCALL SDL_JoystickGetBall(SDL_Joystick * joystick,
183                                                 int ball, int *dx, int *dy);
184
185 /**
186  *  Get the current state of a button on a joystick.
187  *  
188  *  The button indices start at index 0.
189  */
190 extern DECLSPEC Uint8 SDLCALL SDL_JoystickGetButton(SDL_Joystick * joystick,
191                                                     int button);
192
193 /**
194  *  Close a joystick previously opened with SDL_JoystickOpen().
195  */
196 extern DECLSPEC void SDLCALL SDL_JoystickClose(SDL_Joystick * joystick);
197
198
199 /* Ends C function definitions when using C++ */
200 #ifdef __cplusplus
201 /* *INDENT-OFF* */
202 }
203 /* *INDENT-ON* */
204 #endif
205 #include "close_code.h"
206
207 #endif /* _SDL_joystick_h */
208
209 /* vi: set ts=4 sw=4 expandtab: */