1 #ifndef JOYDB_H
2 #define JOYDB_H
3 
4 
5 #define JOYDB_END_TOKEN 65536
6 #define JOYDB_STICK_AXES (JOYDB_END_TOKEN+1)
7 #define JOYDB_WHEEL_AXES (JOYDB_END_TOKEN+2)
8 #define JOYDB_FOOT_PADDLE_AXES (JOYDB_END_TOKEN+3)
9 #define JOYDB_SHIFT_PADDLE_BUTTONS (JOYDB_END_TOKEN+4)
10 #define JOYDB_SHOULDER_AXES (JOYDB_END_TOKEN+5)
11 #define JOYDB_SHOULDER_BUTTONS (JOYDB_END_TOKEN+6)
12 #define JOYDB_GENERIC_BUTTONS (JOYDB_END_TOKEN+7)
13 #define JOYDB_DPAD_AXES (JOYDB_END_TOKEN+8)
14 #define JOYDB_DPAD_BUTTONS (JOYDB_END_TOKEN+9)
15 #define JOYDB_STICK_PRESS (JOYDB_END_TOKEN+10)
16 
17 
18 
19 const char *name0000 = "Logitech WingMan Formula Force";
20 int desc0000[] =
21 {
22   JOYDB_STICK_AXES,
23   JOYDB_WHEEL_AXES, 0,
24   JOYDB_FOOT_PADDLE_AXES, 2, 1,
25   JOYDB_SHIFT_PADDLE_BUTTONS, 0, 2,
26   JOYDB_SHOULDER_AXES,
27   JOYDB_SHOULDER_BUTTONS,
28   JOYDB_GENERIC_BUTTONS, 1,3,4,5,
29   JOYDB_DPAD_AXES,
30   JOYDB_DPAD_BUTTONS,
31   JOYDB_STICK_PRESS,
32   JOYDB_END_TOKEN
33 };
34 
35 const char *name0001 = "GreenAsia Inc.    USB Joystick     ";
36 int desc0001[] =
37 {
38   JOYDB_STICK_AXES, 0, 1, 3, 2,
39   JOYDB_WHEEL_AXES,
40   JOYDB_FOOT_PADDLE_AXES,
41   JOYDB_SHIFT_PADDLE_BUTTONS,
42   JOYDB_SHOULDER_AXES,
43   JOYDB_SHOULDER_BUTTONS, 4, 6, 5, 7,
44   JOYDB_GENERIC_BUTTONS, 0, 1, 2, 3,
45   JOYDB_DPAD_AXES, 4, 5,
46   JOYDB_DPAD_BUTTONS,
47   JOYDB_STICK_PRESS, 10, 11,
48   JOYDB_END_TOKEN
49 };
50 
51 const char *name0002 = "Logitech WingMan RumblePad";
52 int desc0002[] =
53 {
54   JOYDB_STICK_AXES, 0, 1, 3, 4,
55   JOYDB_WHEEL_AXES,
56   JOYDB_FOOT_PADDLE_AXES,
57   JOYDB_SHIFT_PADDLE_BUTTONS,
58   JOYDB_SHOULDER_AXES,
59   JOYDB_SHOULDER_BUTTONS, 6, 7,
60   JOYDB_GENERIC_BUTTONS, 0, 1, 2, 3,
61   JOYDB_DPAD_AXES, 5, 6,
62   JOYDB_DPAD_BUTTONS,
63   JOYDB_STICK_PRESS,
64   JOYDB_END_TOKEN
65 };
66 
67 const char *name0003 = "ThrustMaster Dual Power GamePad      ";
68 int desc0003[] =
69 {
70   JOYDB_STICK_AXES, 0, 1, 3, 4,
71   JOYDB_WHEEL_AXES,
72   JOYDB_FOOT_PADDLE_AXES,
73   JOYDB_SHIFT_PADDLE_BUTTONS,
74   JOYDB_SHOULDER_AXES,
75   JOYDB_SHOULDER_BUTTONS, 14, 15,
76   JOYDB_GENERIC_BUTTONS, 8, 9, 10, 11, 12, 13,
77   JOYDB_DPAD_AXES,
78   JOYDB_DPAD_BUTTONS, 2, 3, 0, 1,
79   JOYDB_STICK_PRESS, 6, 7,
80   JOYDB_END_TOKEN
81 };
82 
83 const char *name0004 = "Microsoft X-Box pad (US)";
84 int desc0004[] =
85 {
86   JOYDB_STICK_AXES, 0, 1, 3, 4,
87   JOYDB_WHEEL_AXES,
88   JOYDB_FOOT_PADDLE_AXES,
89   JOYDB_SHIFT_PADDLE_BUTTONS,
90   JOYDB_SHOULDER_AXES, 2, 5,
91   JOYDB_SHOULDER_BUTTONS,
92   JOYDB_GENERIC_BUTTONS, 8, 9, 10, 11, 12, 13,
93   JOYDB_DPAD_AXES, 6, 7,
94   JOYDB_DPAD_BUTTONS,
95   JOYDB_STICK_PRESS, 7, 8,
96   JOYDB_END_TOKEN
97 };
98 
99 const char *name0005  = "Saitek Saitek P3000 RF Game-Pad";
100 const char *name0005b = "Saitek P3000 Wireless Gamepad";
101 int desc0005[] =
102 {
103   JOYDB_STICK_AXES, 0, 1, 2, 3,
104   JOYDB_WHEEL_AXES,
105   JOYDB_FOOT_PADDLE_AXES,
106   JOYDB_SHIFT_PADDLE_BUTTONS,
107   JOYDB_SHOULDER_AXES,
108   JOYDB_GENERIC_BUTTONS, 0,1,2,3,4,5,
109   JOYDB_SHOULDER_BUTTONS, 6, 7,
110   JOYDB_DPAD_AXES, 4, 5,
111   JOYDB_DPAD_BUTTONS,
112   JOYDB_STICK_PRESS, 8, 9,
113   JOYDB_END_TOKEN
114 };
115 
116 const char *name0006 = "Sony PLAYSTATION(R)3 Controller";
117 int desc0006[] =
118 {
119   JOYDB_STICK_AXES, 0, 1, 2, 3,
120   JOYDB_WHEEL_AXES,
121   JOYDB_FOOT_PADDLE_AXES,
122   JOYDB_SHIFT_PADDLE_BUTTONS,
123   JOYDB_SHOULDER_AXES, 12, 14, 13, 15,
124   JOYDB_SHOULDER_BUTTONS, 8, 10, 9, 11,
125   JOYDB_GENERIC_BUTTONS, 12, 13, 14, 15,
126   JOYDB_DPAD_AXES, 9, 8,
127   JOYDB_DPAD_BUTTONS, 7, 5, 6, 4,
128   JOYDB_STICK_PRESS, 1, 2,
129   JOYDB_END_TOKEN
130 };
131 
132 const char *name0007  = "Microsoft\xae Microsoft\xae SideWinder\xae Plug & Play Game Pad";
133 int desc0007[] =
134 {
135  JOYDB_STICK_AXES,
136  JOYDB_WHEEL_AXES,
137  JOYDB_FOOT_PADDLE_AXES,
138  JOYDB_SHIFT_PADDLE_BUTTONS,
139  JOYDB_SHOULDER_AXES,
140  JOYDB_GENERIC_BUTTONS, 0,1,2,3,
141  JOYDB_SHOULDER_BUTTONS, 4, 5,
142  JOYDB_DPAD_AXES, 0, 1,
143  JOYDB_DPAD_BUTTONS,
144  JOYDB_STICK_PRESS,
145  JOYDB_END_TOKEN
146 };
147 
148 const char *name0008 = "Logitech WingMan Formula GP";
149 int desc0008[] =
150 {
151   JOYDB_STICK_AXES,
152   JOYDB_WHEEL_AXES, 0,
153   JOYDB_FOOT_PADDLE_AXES, 1,
154   JOYDB_SHIFT_PADDLE_BUTTONS, 0, 1,
155   JOYDB_SHOULDER_AXES,
156   JOYDB_SHOULDER_BUTTONS,
157   JOYDB_GENERIC_BUTTONS, 2,3,4,5,
158   JOYDB_DPAD_AXES,
159   JOYDB_DPAD_BUTTONS,
160   JOYDB_STICK_PRESS,
161   JOYDB_END_TOKEN
162 };
163 
164 
165 const char *joydb_names[] =
166 {
167   name0000,
168   name0001,
169   name0002,
170   name0003,
171   name0004,
172   name0005,
173   name0005b,
174   name0006,
175   name0007,
176   name0008,
177   0
178 };
179 
180 int *joydb_descs[] =
181 {
182   desc0000,
183   desc0001,
184   desc0002,
185   desc0003,
186   desc0004,
187   desc0005,
188   desc0005,
189   desc0006,
190   desc0007,
191   desc0008,
192   0
193 };
194 
195 
joydb_search_cmd(int cmd,const int * desc)196 inline const int *joydb_search_cmd(int cmd, const int *desc)
197 {
198   const int *i=desc;
199   while (*i != JOYDB_END_TOKEN && *i != cmd)
200     i++;
201   if (*i == JOYDB_END_TOKEN) return 0;
202   return i;
203 }
204 
205 
joydb_get(int cmd,const int * desc,int * cnt)206 inline const int *joydb_get(int cmd, const int *desc, int *cnt)
207 {
208   const int *retval = joydb_search_cmd(cmd, desc);
209   assert(retval);
210   retval++;
211 
212   const int *i=retval;
213   while (*i < JOYDB_END_TOKEN) i++;
214   *cnt = (i-retval);
215   return retval;
216 };
217 
218 
219 #endif
220 
221