/* Title: USB Joystick library Version 0.2 Written by Puck2099 (puck2099@gmail.com), (c) 2006. If you use this library or a part of it, please, let it know. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef USBJOY_H #define USBJOY_H /* Enumeration: Axes values This enumeration contains shortcuts to the values used on axes. Constants: JOYUP - Joystick Up JOYDOWN - Joystick Down JOYLEFT - Joystick Left JOYRIGHT - Joystick Right See also: */ #define JOYUP (0) #define JOYDOWN (1) #define JOYLEFT (2) #define JOYRIGHT (3) /* Struct: usbjoy Contains all Joystick needed information. Fields: fd - File descriptor used. name - Joystick's name. device - /dev/input/jsX device. numbuttons - Joystick's buttons. numaxes - Joystick's axes. numhats - Joystick's hats. statebuttons - Current state of each button. stateaxes - Current state of each direction. */ struct usbjoy { int fd; char name [128]; char device [128]; int numbuttons; int numaxes; int numhats; int statebuttons[32]; int stateaxes[4]; }; /* Function: joy_open Opens a USB joystick and fills its information. Parameters: joynumber - Joystick's identifier (0 reserved for GP2X's builtin Joystick). Returns: Filled usbjoy structure. */ struct usbjoy * joy_open (int joynumber); /* Function: joy_name Returns Joystick's name. Parameters: joy - Selected joystick. Returns: Joystick's name or NULL if struct is empty. */ char * joy_name (struct usbjoy * joy); /* Function: joy_device Returns Joystick's device. Parameters: joy - Selected joystick. Returns: Joystick's device or NULL if struct is empty. */ char * joy_device (struct usbjoy * joy); /* Function: joy_buttons Returns Joystick's buttons number. Parameters: joy - Selected joystick. Returns: Joystick's buttons or 0 if struct is empty. */ int joy_buttons (struct usbjoy * joy); /* Function: joy_axes Returns Joystick's axes number. Parameters: joy - Selected joystick. Returns: Joystick's axes or 0 if struct is empty. */ int joy_axes (struct usbjoy * joy); /* Function: joy_update Updates Joystick's internal information ( and fields). Parameters: joy - Selected joystick. Returns: 0 - No events registered (no need to update). 1 - Events registered (a button or axe has been pushed). -1 - Error: struct is empty. */ int joy_update (struct usbjoy * joy); /* Function: joy_getbutton Returns Joystick's button information. Parameters: button - Button which value you want to know (from 0 to 31). joy - Selected joystick. Returns: 0 - Button NOT pushed. 1 - Button pushed. -1 - Error: struct is empty. */ int joy_getbutton (int button, struct usbjoy * joy); /* Function: joy_getaxe Returns Joystick's axes information. Parameters: axe - Axe which value you want to know (see ). joy - Selected joystick. Returns: 0 - Direction NOT pushed. 1 - Direction pushed. -1 - Error: struct is empty. */ int joy_getaxe (int axe, struct usbjoy * joy); /* Function: joy_close Closes selected joystick's file descriptor and detroys it's fields. Parameters: joy - Selected joystick. Returns: 0 - Joystick successfully closed. -1 - Error: struct is empty. */ int joy_close (struct usbjoy * joy); #endif // USBJOY_H