1 /* Title: USB Joystick library
3 Written by Puck2099 (puck2099@gmail.com), (c) 2006.
4 <http://www.gp32wip.com>
6 If you use this library or a part of it, please, let it know.
8 This library is free software; you can redistribute it and/or
9 modify it under the terms of the GNU Lesser General Public
10 License as published by the Free Software Foundation; either
11 version 2.1 of the License, or (at your option) any later version.
13 This library is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 Lesser General Public License for more details.
18 You should have received a copy of the GNU Lesser General Public
19 License along with this library; if not, write to the Free Software
20 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
26 /* notaz: my Logitech has different button layout, and I want it to match gptx's */
33 Enumeration: Axes values
34 This enumeration contains shortcuts to the values used on axes.
38 JOYDOWN - Joystick Down
39 JOYLEFT - Joystick Left
40 JOYRIGHT - Joystick Right
54 Contains all Joystick needed information.
57 fd - File descriptor used.
58 name - Joystick's name.
59 device - /dev/input/jsX device.
60 numbuttons - Joystick's buttons.
61 numaxes - Joystick's axes.
62 numhats - Joystick's hats.
63 statebuttons - Current state of each button.
64 stateaxes - Current state of each direction.
82 Opens a USB joystick and fills its information.
86 joynumber - Joystick's identifier (0 reserved for GP2X's builtin Joystick).
90 Filled usbjoy structure.
92 struct usbjoy * joy_open (int joynumber);
98 Returns Joystick's name.
102 joy - Selected joystick.
106 Joystick's name or NULL if <usbjoy> struct is empty.
108 char * joy_name (struct usbjoy * joy);
114 Returns Joystick's device.
118 joy - Selected joystick.
122 Joystick's device or NULL if <usbjoy> struct is empty.
124 char * joy_device (struct usbjoy * joy);
127 Function: joy_buttons
129 Returns Joystick's buttons number.
133 joy - Selected joystick.
137 Joystick's buttons or 0 if <usbjoy> struct is empty.
139 int joy_buttons (struct usbjoy * joy);
144 Returns Joystick's axes number.
148 joy - Selected joystick.
152 Joystick's axes or 0 if <usbjoy> struct is empty.
154 int joy_axes (struct usbjoy * joy);
160 Updates Joystick's internal information (<statebuttons> and <stateaxes> fields).
164 joy - Selected joystick.
168 0 - No events registered (no need to update).
169 1 - Events registered (a button or axe has been pushed).
170 -1 - Error: <usbjoy> struct is empty.
172 int joy_update (struct usbjoy * joy);
176 Function: joy_getbutton
178 Returns Joystick's button information.
182 button - Button which value you want to know (from 0 to 31).
183 joy - Selected joystick.
187 0 - Button NOT pushed.
189 -1 - Error: <usbjoy> struct is empty.
191 int joy_getbutton (int button, struct usbjoy * joy);
197 Returns Joystick's axes information.
201 axe - Axe which value you want to know (see <Axes values>).
202 joy - Selected joystick.
206 0 - Direction NOT pushed.
207 1 - Direction pushed.
208 -1 - Error: <usbjoy> struct is empty.
210 int joy_getaxe (int axe, struct usbjoy * joy);
215 Closes selected joystick's file descriptor and detroys it's fields.
219 joy - Selected joystick.
223 0 - Joystick successfully closed.
224 -1 - Error: <usbjoy> struct is empty.
226 int joy_close (struct usbjoy * joy);
231 extern int num_of_joys;
232 extern struct usbjoy *joys[4];
234 void gp2x_usbjoy_update(void);
235 void gp2x_usbjoy_init(void);
236 int gp2x_usbjoy_check(int joyno);
237 int gp2x_usbjoy_check2(int joyno);
238 void gp2x_usbjoy_deinit(void);