mirror of
				https://github.com/RaySollium99/picodrive.git
				synced 2025-10-27 21:48:50 +01:00 
			
		
		
		
	 626f7c37bb
			
		
	
	
		626f7c37bb
		
	
	
	
	
		
			
			git-svn-id: file:///home/notaz/opt/svn/PicoDrive@183 be3aeb3a-fb24-0410-a615-afba39da0efa
		
			
				
	
	
		
			242 lines
		
	
	
	
		
			4.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			242 lines
		
	
	
	
		
			4.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* Title: USB Joystick library
 | |
|    Version 0.2
 | |
|    Written by Puck2099 (puck2099@gmail.com), (c) 2006.
 | |
|    <http://www.gp32wip.com>
 | |
| 
 | |
|    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
 | |
| 
 | |
| /* notaz: my Logitech has different button layout, and I want it to match gp2x's */
 | |
| typedef enum {
 | |
| 	JOY_TYPE_GENERIC,
 | |
| 	JOY_TYPE_LOGITECH
 | |
| } joy_type;
 | |
| 
 | |
| /*
 | |
|   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:
 | |
|   <joy_getaxe>
 | |
| */
 | |
| #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];
 | |
|   int axevals[2];
 | |
|   joy_type type;
 | |
| };
 | |
| 
 | |
| 
 | |
| /*
 | |
|   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 <usbjoy> 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 <usbjoy> 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 <usbjoy> 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 <usbjoy> struct is empty.
 | |
| */
 | |
| int joy_axes (struct usbjoy * joy);
 | |
| 
 | |
| 
 | |
| /*
 | |
|   Function: joy_update
 | |
| 
 | |
|   Updates Joystick's internal information (<statebuttons> and <stateaxes> 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: <usbjoy> 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: <usbjoy> 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 <Axes values>).
 | |
|   joy - Selected joystick.
 | |
| 
 | |
|   Returns:
 | |
| 
 | |
|   0 - Direction NOT pushed.
 | |
|   1 - Direction pushed.
 | |
|   -1 - Error: <usbjoy> 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: <usbjoy> struct is empty.
 | |
| */
 | |
| int joy_close (struct usbjoy * joy);
 | |
| 
 | |
| 
 | |
| 
 | |
| /* gp2x stuff */
 | |
| extern int num_of_joys;
 | |
| extern struct usbjoy *joys[4];
 | |
| 
 | |
| void gp2x_usbjoy_update(void);
 | |
| void gp2x_usbjoy_init(void);
 | |
| int  gp2x_usbjoy_check(int joyno);
 | |
| int  gp2x_usbjoy_check2(int joyno);
 | |
| void gp2x_usbjoy_deinit(void);
 | |
| 
 | |
| 
 | |
| #endif // USBJOY_H
 |