6 static struct usbjoy *joys[4];
7 static char joyCount = 0;
8 static int buttonMap[4][32];
12 static int repeatCounter = 0;
15 memset(&Inp,0,sizeof(Inp));
20 struct usbjoy *joy = joy_open(i);
24 memset(buttonMap[joyCount],0,sizeof(buttonMap[joyCount]));
25 buttonMap[joyCount][0] = (1<<INP_BUTTON_A);
26 buttonMap[joyCount][1] = (1<<INP_BUTTON_B);
27 buttonMap[joyCount][2] = (1<<INP_BUTTON_X);
28 buttonMap[joyCount][3] = (1<<INP_BUTTON_Y);
29 buttonMap[joyCount][4] = (1<<INP_BUTTON_L);
30 buttonMap[joyCount][5] = (1<<INP_BUTTON_R);
31 if (joy->numbuttons<10)
33 buttonMap[joyCount][6] = (1<<INP_BUTTON_SELECT);
34 buttonMap[joyCount][7] = (1<<INP_BUTTON_START);
38 buttonMap[joyCount][6] = (1<<INP_BUTTON_L);
39 buttonMap[joyCount][7] = (1<<INP_BUTTON_R);
40 buttonMap[joyCount][8] = (1<<INP_BUTTON_SELECT);
41 buttonMap[joyCount][9] = (1<<INP_BUTTON_START);
54 for (i=0; i<joyCount; i++)
60 int joy_getButton(int joyNumber)
63 if (joyNumber<joyCount)
66 joy_update(joys[joyNumber]);
67 if(joy_getaxe(JOYUP, joys[joyNumber])) key|= (1<<INP_BUTTON_UP);
68 if(joy_getaxe(JOYDOWN, joys[joyNumber])) key|= (1<<INP_BUTTON_DOWN);
69 if(joy_getaxe(JOYLEFT, joys[joyNumber])) key|= (1<<INP_BUTTON_LEFT);
70 if(joy_getaxe(JOYRIGHT, joys[joyNumber])) key|= (1<<INP_BUTTON_RIGHT);
71 for (i = 0; i < joy_buttons(joys[joyNumber]); i++)
73 if (joy_getbutton(i, joys[joyNumber]))
74 key|= buttonMap[joyNumber][i];
86 int InputUpdate(int EnableDiagnals)
92 key=gp_getButton(EnableDiagnals);
93 key&= (1<<INP_BUTTON_UP)|
96 (1<<INP_BUTTON_RIGHT)|
101 (1<<INP_BUTTON_REWIND)|
102 (1<<INP_BUTTON_FORWARD)|
103 (1<<INP_BUTTON_PLAY)|
104 (1<<INP_BUTTON_STOP)|
105 (1<<INP_BUTTON_BRIGHT);
108 #if defined(__GP2X__)
109 key=gp_getButton(EnableDiagnals);
110 key&= (1<<INP_BUTTON_UP)|
111 (1<<INP_BUTTON_LEFT)|
112 (1<<INP_BUTTON_DOWN)|
113 (1<<INP_BUTTON_RIGHT)|
114 (1<<INP_BUTTON_START)|
115 (1<<INP_BUTTON_SELECT)|
122 (1<<INP_BUTTON_VOL_UP)|
123 (1<<INP_BUTTON_VOL_DOWN)|
124 (1<<INP_BUTTON_STICK_PUSH);
125 key |= joy_getButton(0);
127 // Find out how long key was pressed for
130 int held=Inp.held[i];
132 if (key&(1<<i)) held++; else held=0;
134 //if (held>=0x80) held&=0xbf; // Keep looping around
139 // Work out some key repeat values:
143 int held=Inp.held[i];
147 // Key has just been pressed again, so set repeat by default
152 // Now make sure key has been held for a period of time
153 // before auto toggling the repeat flag