diff options
| author | SND\weimingzhi_cp <SND\weimingzhi_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97> | 2009-04-16 06:22:51 +0000 |
|---|---|---|
| committer | SND\weimingzhi_cp <SND\weimingzhi_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97> | 2009-04-16 06:22:51 +0000 |
| commit | 8139fbf8204882663446bcb06f68789353597820 (patch) | |
| tree | 6ea1f39932b33faee84d603e956470e37f135804 /plugins/dfinput/padjoy.h | |
| download | pcsxr-8139fbf8204882663446bcb06f68789353597820.tar.gz | |
git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@23061 e17a0e51-4ae3-4d35-97c3-1a29b211df97
Diffstat (limited to 'plugins/dfinput/padjoy.h')
| -rw-r--r-- | plugins/dfinput/padjoy.h | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/plugins/dfinput/padjoy.h b/plugins/dfinput/padjoy.h new file mode 100644 index 00000000..e51f2db4 --- /dev/null +++ b/plugins/dfinput/padjoy.h @@ -0,0 +1,82 @@ +#ifndef _PADJOY_H_ + +#define _PADJOY_H_ + +#define DEBUG(x) fprintf(stderr, "DFInput: %s\n", x); + +// Maximum number of joy devices +#define MAXDEVICES 2 +// Maximum number of supported axis (per device, a normal joystick has 2) +#define MAXAXES 20 +// Maximum number of supported buttons (per device) +#define MAXBUTTONS 32 +// Number of PSX-Buttons (including analog axis) +#define MAXPSXBUTTONS 20 + +// Status of digital Axes (avoids repeated events of the same type on an analog pad) +#define AXESTS_UNUSED -1 +#define AXESTS_UNKNOWN 0 +#define AXESTS_CENTER 1 +#define AXESTS_PLUS 2 +#define AXESTS_MINUS 3 +#define AXESTS_ANALOG 4 + +// every kind of supported event is coded into a long int +typedef int32_t EventCode; + +// Position of directional buttons in PadButtons +#define PSXBTN_UP 12 +#define PSXBTN_RIGHT 13 +#define PSXBTN_DOWN 14 +#define PSXBTN_LEFT 15 + +// macros to define Eventcodes +// this may look like I make it too complicated, but it keeps things open for future improvements +#define NO_EVENT 0 +#define FIRST_KEY_EVENT 0 +#define FIRST_JOY_EVENT (1<<16) +#define RELEASE_EVENT (1<<30) +#define FIRST_ANALOG_EVENT (1<<20) + +#define KEY_EVENT(n) (FIRST_KEY_EVENT+(n)) +#define AXISPLUS_EVENT(p,n) (FIRST_JOY_EVENT+2*(n)+(p)*(2*MAXAXES+MAXBUTTONS)) +#define AXISMINUS_EVENT(p,n) (FIRST_JOY_EVENT+2*(n)+1+(p)*(2*MAXAXES+MAXBUTTONS)) +#define BUTTON_EVENT(p,n) (FIRST_JOY_EVENT+2*MAXAXES+(n)+(p)*(2*MAXAXES+MAXBUTTONS)) +#define ANALOGAXIS_EVENT(p,n,v) (FIRST_ANALOG_EVENT+256*(n)+(v)+(p)*(256*MAXAXES)) + +// Makro Definitions etc. +#define MAXMACROS 3 +#define MAXMACROLENGTH 100 + +typedef struct +{ + unsigned char controllerType; + unsigned short buttonStatus; + unsigned char rightJoyX, rightJoyY, leftJoyX, leftJoyY; + unsigned char moveX, moveY; + unsigned char reserved[91]; +} PadDataS; + +// Number of events to fetch at once... +#define MAXCNT 100 + +/* number of buttons required for configuration */ +#define CONFIGBUTTONCOUNT 20 + +#define EVENTTYPE_NONE -1 +#define EVENTTYPE_KEY 0 +#define EVENTTYPE_BUTTON 1 +#define EVENTTYPE_AXISPLUS 2 +#define EVENTTYPE_AXISMINUS 3 +#define EVENTTYPE_ANALOG 4 + +// The following struct is used in the config part only +typedef struct +{ + unsigned int event_type; // Button, Axe, AnalogAxe + unsigned int pad; + unsigned int no; // Keycode in case of key event + int value; // 0=release, 1=press, or analog value in case of EVENTTYPE_ANALOG +} PadJoyEvent; + +#endif |
