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