Line 0
Link Here
|
|
|
1 |
/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/lnx.h,v 3.2 2000/02/15 02:00:14 eich Exp $ */ |
2 |
|
3 |
#ifndef LNX_EVDEV_H_ |
4 |
#define LNX_EVDEV_H_ |
5 |
|
6 |
|
7 |
/* Stuff taken from the linux header. (With some minor changes.) */ |
8 |
|
9 |
#include <sys/time.h> |
10 |
#include <sys/ioctl.h> |
11 |
#include <asm/types.h> |
12 |
|
13 |
/* |
14 |
* The event structure itself |
15 |
*/ |
16 |
|
17 |
struct input_event { |
18 |
struct timeval time; |
19 |
__u16 type; |
20 |
__u16 code; |
21 |
__s32 value; |
22 |
}; |
23 |
|
24 |
/* |
25 |
* Protocol version. |
26 |
*/ |
27 |
|
28 |
#define EV_VERSION 0x010000 |
29 |
|
30 |
/* |
31 |
* IOCTLs (0x00 - 0x7f) |
32 |
*/ |
33 |
|
34 |
struct input_id { |
35 |
__u16 bustype; |
36 |
__u16 vendor; |
37 |
__u16 product; |
38 |
__u16 version; |
39 |
}; |
40 |
|
41 |
struct input_absinfo { |
42 |
__s32 value; |
43 |
__s32 minimum; |
44 |
__s32 maximum; |
45 |
__s32 fuzz; |
46 |
__s32 flat; |
47 |
}; |
48 |
|
49 |
#define EVIOCGVERSION _IOR('E', 0x01, int) /* get driver version */ |
50 |
#define EVIOCGID _IOR('E', 0x02, struct input_id) /* get device ID */ |
51 |
#define EVIOCGREP _IOR('E', 0x03, int[2]) /* get repeat settings */ |
52 |
#define EVIOCSREP _IOW('E', 0x03, int[2]) /* get repeat settings */ |
53 |
#define EVIOCGKEYCODE _IOR('E', 0x04, int[2]) /* get keycode */ |
54 |
#define EVIOCSKEYCODE _IOW('E', 0x04, int[2]) /* set keycode */ |
55 |
|
56 |
#define EVIOCGNAME(len) _IOC(_IOC_READ, 'E', 0x06, len) /* get device name */ |
57 |
#define EVIOCGPHYS(len) _IOC(_IOC_READ, 'E', 0x07, len) /* get physical location */ |
58 |
#define EVIOCGUNIQ(len) _IOC(_IOC_READ, 'E', 0x08, len) /* get unique identifier */ |
59 |
|
60 |
#define EVIOCGKEY(len) _IOC(_IOC_READ, 'E', 0x18, len) /* get global keystate */ |
61 |
#define EVIOCGLED(len) _IOC(_IOC_READ, 'E', 0x19, len) /* get all LEDs */ |
62 |
#define EVIOCGSND(len) _IOC(_IOC_READ, 'E', 0x1a, len) /* get all sounds status */ |
63 |
|
64 |
#define EVIOCGBIT(ev,len) _IOC(_IOC_READ, 'E', 0x20 + ev, len) /* get event bits */ |
65 |
#define EVIOCGABS(abs) _IOR('E', 0x40 + abs, struct input_absinfo) /* get abs value/limits */ |
66 |
#define EVIOCSABS(abs) _IOW('E', 0xc0 + abs, struct input_absinfo) /* set abs value/limits */ |
67 |
|
68 |
#define EVIOCSFF _IOC(_IOC_WRITE, 'E', 0x80, sizeof(struct ff_effect)) /* send a force effect to a force feedback device */ |
69 |
#define EVIOCRMFF _IOW('E', 0x81, int) /* Erase a force effect */ |
70 |
#define EVIOCGEFFECTS _IOR('E', 0x84, int) /* Report number of effects playable at the same time */ |
71 |
|
72 |
#define EVIOCGRAB _IOW('E', 0x90, int) /* Grab/Release device */ |
73 |
#define EVIOCGMASK _IOR('E', 0x91, unsigned long *) /* Get our input mask */ |
74 |
#define EVIOCSMASK _IOW('E', 0x92, unsigned long) /* Set our input mask */ |
75 |
#define EVIOCGDMASK _IOR('E', 0x93, unsigned long *) /* Get device input mask */ |
76 |
#define EVIOCSDMASK _IOW('E', 0x94, unsigned long) /* Set device input mask */ |
77 |
|
78 |
|
79 |
|
80 |
#define BITS_PER_LONG (sizeof(long) * 8) |
81 |
#define NBITS(x) ((((x)-1)/BITS_PER_LONG)+1) |
82 |
#define OFF(x) ((x)%BITS_PER_LONG) |
83 |
#define LONG(x) ((x)/BITS_PER_LONG) |
84 |
#define BIT(x) (1UL<<((x)%BITS_PER_LONG)) |
85 |
#define test_bit(bit, array) ((array[LONG(bit)] >> OFF(bit)) & 1) |
86 |
|
87 |
/* |
88 |
* Event types |
89 |
*/ |
90 |
|
91 |
#define EV_SYN 0x00 |
92 |
#define EV_KEY 0x01 |
93 |
#define EV_REL 0x02 |
94 |
#define EV_ABS 0x03 |
95 |
#define EV_MSC 0x04 |
96 |
#define EV_LED 0x11 |
97 |
#define EV_SND 0x12 |
98 |
#define EV_REP 0x14 |
99 |
#define EV_FF 0x15 |
100 |
#define EV_PWR 0x16 |
101 |
#define EV_FF_STATUS 0x17 |
102 |
#define EV_MAX 0x1f |
103 |
|
104 |
/* |
105 |
* Synchronization events. |
106 |
*/ |
107 |
|
108 |
#define EV_SYN_REPORT 0 |
109 |
#define EV_SYN_CONFIG 1 |
110 |
|
111 |
/* |
112 |
* Keys and buttons |
113 |
*/ |
114 |
|
115 |
#define EV_KEY_RESERVED 0 |
116 |
#define EV_KEY_ESC 1 |
117 |
#define EV_KEY_1 2 |
118 |
#define EV_KEY_2 3 |
119 |
#define EV_KEY_3 4 |
120 |
#define EV_KEY_4 5 |
121 |
#define EV_KEY_5 6 |
122 |
#define EV_KEY_6 7 |
123 |
#define EV_KEY_7 8 |
124 |
#define EV_KEY_8 9 |
125 |
#define EV_KEY_9 10 |
126 |
#define EV_KEY_0 11 |
127 |
#define EV_KEY_MINUS 12 |
128 |
#define EV_KEY_EQUAL 13 |
129 |
#define EV_KEY_BACKSPACE 14 |
130 |
#define EV_KEY_TAB 15 |
131 |
#define EV_KEY_Q 16 |
132 |
#define EV_KEY_W 17 |
133 |
#define EV_KEY_E 18 |
134 |
#define EV_KEY_R 19 |
135 |
#define EV_KEY_T 20 |
136 |
#define EV_KEY_Y 21 |
137 |
#define EV_KEY_U 22 |
138 |
#define EV_KEY_I 23 |
139 |
#define EV_KEY_O 24 |
140 |
#define EV_KEY_P 25 |
141 |
#define EV_KEY_LEFTBRACE 26 |
142 |
#define EV_KEY_RIGHTBRACE 27 |
143 |
#define EV_KEY_ENTER 28 |
144 |
#define EV_KEY_LEFTCTRL 29 |
145 |
#define EV_KEY_A 30 |
146 |
#define EV_KEY_S 31 |
147 |
#define EV_KEY_D 32 |
148 |
#define EV_KEY_F 33 |
149 |
#define EV_KEY_G 34 |
150 |
#define EV_KEY_H 35 |
151 |
#define EV_KEY_J 36 |
152 |
#define EV_KEY_K 37 |
153 |
#define EV_KEY_L 38 |
154 |
#define EV_KEY_SEMICOLON 39 |
155 |
#define EV_KEY_APOSTROPHE 40 |
156 |
#define EV_KEY_GRAVE 41 |
157 |
#define EV_KEY_LEFTSHIFT 42 |
158 |
#define EV_KEY_BACKSLASH 43 |
159 |
#define EV_KEY_Z 44 |
160 |
#define EV_KEY_X 45 |
161 |
#define EV_KEY_C 46 |
162 |
#define EV_KEY_V 47 |
163 |
#define EV_KEY_B 48 |
164 |
#define EV_KEY_N 49 |
165 |
#define EV_KEY_M 50 |
166 |
#define EV_KEY_COMMA 51 |
167 |
#define EV_KEY_DOT 52 |
168 |
#define EV_KEY_SLASH 53 |
169 |
#define EV_KEY_RIGHTSHIFT 54 |
170 |
#define EV_KEY_KPASTERISK 55 |
171 |
#define EV_KEY_LEFTALT 56 |
172 |
#define EV_KEY_SPACE 57 |
173 |
#define EV_KEY_CAPSLOCK 58 |
174 |
#define EV_KEY_F1 59 |
175 |
#define EV_KEY_F2 60 |
176 |
#define EV_KEY_F3 61 |
177 |
#define EV_KEY_F4 62 |
178 |
#define EV_KEY_F5 63 |
179 |
#define EV_KEY_F6 64 |
180 |
#define EV_KEY_F7 65 |
181 |
#define EV_KEY_F8 66 |
182 |
#define EV_KEY_F9 67 |
183 |
#define EV_KEY_F10 68 |
184 |
#define EV_KEY_NUMLOCK 69 |
185 |
#define EV_KEY_SCROLLLOCK 70 |
186 |
#define EV_KEY_KP7 71 |
187 |
#define EV_KEY_KP8 72 |
188 |
#define EV_KEY_KP9 73 |
189 |
#define EV_KEY_KPMINUS 74 |
190 |
#define EV_KEY_KP4 75 |
191 |
#define EV_KEY_KP5 76 |
192 |
#define EV_KEY_KP6 77 |
193 |
#define EV_KEY_KPPLUS 78 |
194 |
#define EV_KEY_KP1 79 |
195 |
#define EV_KEY_KP2 80 |
196 |
#define EV_KEY_KP3 81 |
197 |
#define EV_KEY_KP0 82 |
198 |
#define EV_KEY_KPDOT 83 |
199 |
#define EV_KEY_103RD 84 |
200 |
#define EV_KEY_F13 85 |
201 |
#define EV_KEY_102ND 86 |
202 |
#define EV_KEY_F11 87 |
203 |
#define EV_KEY_F12 88 |
204 |
#define EV_KEY_F14 89 |
205 |
#define EV_KEY_F15 90 |
206 |
#define EV_KEY_F16 91 |
207 |
#define EV_KEY_F17 92 |
208 |
#define EV_KEY_F18 93 |
209 |
#define EV_KEY_F19 94 |
210 |
#define EV_KEY_F20 95 |
211 |
#define EV_KEY_KPENTER 96 |
212 |
#define EV_KEY_RIGHTCTRL 97 |
213 |
#define EV_KEY_KPSLASH 98 |
214 |
#define EV_KEY_SYSRQ 99 |
215 |
#define EV_KEY_RIGHTALT 100 |
216 |
#define EV_KEY_LINEFEED 101 |
217 |
#define EV_KEY_HOME 102 |
218 |
#define EV_KEY_UP 103 |
219 |
#define EV_KEY_PAGEUP 104 |
220 |
#define EV_KEY_LEFT 105 |
221 |
#define EV_KEY_RIGHT 106 |
222 |
#define EV_KEY_END 107 |
223 |
#define EV_KEY_DOWN 108 |
224 |
#define EV_KEY_PAGEDOWN 109 |
225 |
#define EV_KEY_INSERT 110 |
226 |
#define EV_KEY_DELETE 111 |
227 |
#define EV_KEY_MACRO 112 |
228 |
#define EV_KEY_MUTE 113 |
229 |
#define EV_KEY_VOLUMEDOWN 114 |
230 |
#define EV_KEY_VOLUMEUP 115 |
231 |
#define EV_KEY_POWER 116 |
232 |
#define EV_KEY_KPEQUAL 117 |
233 |
#define EV_KEY_KPPLUSMINUS 118 |
234 |
#define EV_KEY_PAUSE 119 |
235 |
#define EV_KEY_F21 120 |
236 |
#define EV_KEY_F22 121 |
237 |
#define EV_KEY_F23 122 |
238 |
#define EV_KEY_F24 123 |
239 |
#define EV_KEY_KPCOMMA 124 |
240 |
#define EV_KEY_LEFTMETA 125 |
241 |
#define EV_KEY_RIGHTMETA 126 |
242 |
#define EV_KEY_COMPOSE 127 |
243 |
|
244 |
#define EV_KEY_STOP 128 |
245 |
#define EV_KEY_AGAIN 129 |
246 |
#define EV_KEY_PROPS 130 |
247 |
#define EV_KEY_UNDO 131 |
248 |
#define EV_KEY_FRONT 132 |
249 |
#define EV_KEY_COPY 133 |
250 |
#define EV_KEY_OPEN 134 |
251 |
#define EV_KEY_PASTE 135 |
252 |
#define EV_KEY_FIND 136 |
253 |
#define EV_KEY_CUT 137 |
254 |
#define EV_KEY_HELP 138 |
255 |
#define EV_KEY_MENU 139 |
256 |
#define EV_KEY_CALC 140 |
257 |
#define EV_KEY_SETUP 141 |
258 |
#define EV_KEY_SLEEP 142 |
259 |
#define EV_KEY_WAKEUP 143 |
260 |
#define EV_KEY_FILE 144 |
261 |
#define EV_KEY_SENDFILE 145 |
262 |
#define EV_KEY_DELETEFILE 146 |
263 |
#define EV_KEY_XFER 147 |
264 |
#define EV_KEY_PROG1 148 |
265 |
#define EV_KEY_PROG2 149 |
266 |
#define EV_KEY_WWW 150 |
267 |
#define EV_KEY_MSDOS 151 |
268 |
#define EV_KEY_COFFEE 152 |
269 |
#define EV_KEY_DIRECTION 153 |
270 |
#define EV_KEY_CYCLEWINDOWS 154 |
271 |
#define EV_KEY_MAIL 155 |
272 |
#define EV_KEY_BOOKMARKS 156 |
273 |
#define EV_KEY_COMPUTER 157 |
274 |
#define EV_KEY_BACK 158 |
275 |
#define EV_KEY_FORWARD 159 |
276 |
#define EV_KEY_CLOSECD 160 |
277 |
#define EV_KEY_EJECTCD 161 |
278 |
#define EV_KEY_EJECTCLOSECD 162 |
279 |
#define EV_KEY_NEXTSONG 163 |
280 |
#define EV_KEY_PLAYPAUSE 164 |
281 |
#define EV_KEY_PREVIOUSSONG 165 |
282 |
#define EV_KEY_STOPCD 166 |
283 |
#define EV_KEY_RECORD 167 |
284 |
#define EV_KEY_REWIND 168 |
285 |
#define EV_KEY_PHONE 169 |
286 |
#define EV_KEY_ISO 170 |
287 |
#define EV_KEY_CONFIG 171 |
288 |
#define EV_KEY_HOMEPAGE 172 |
289 |
#define EV_KEY_REFRESH 173 |
290 |
#define EV_KEY_EXIT 174 |
291 |
#define EV_KEY_MOVE 175 |
292 |
#define EV_KEY_EDIT 176 |
293 |
#define EV_KEY_SCROLLUP 177 |
294 |
#define EV_KEY_SCROLLDOWN 178 |
295 |
#define EV_KEY_KPLEFTPAREN 179 |
296 |
#define EV_KEY_KPRIGHTPAREN 180 |
297 |
|
298 |
#define EV_KEY_INTL1 181 |
299 |
#define EV_KEY_INTL2 182 |
300 |
#define EV_KEY_INTL3 183 |
301 |
#define EV_KEY_INTL4 184 |
302 |
#define EV_KEY_INTL5 185 |
303 |
#define EV_KEY_INTL6 186 |
304 |
#define EV_KEY_INTL7 187 |
305 |
#define EV_KEY_INTL8 188 |
306 |
#define EV_KEY_INTL9 189 |
307 |
#define EV_KEY_LANG1 190 |
308 |
#define EV_KEY_LANG2 191 |
309 |
#define EV_KEY_LANG3 192 |
310 |
#define EV_KEY_LANG4 193 |
311 |
#define EV_KEY_LANG5 194 |
312 |
#define EV_KEY_LANG6 195 |
313 |
#define EV_KEY_LANG7 196 |
314 |
#define EV_KEY_LANG8 197 |
315 |
#define EV_KEY_LANG9 198 |
316 |
|
317 |
#define EV_KEY_PLAYCD 200 |
318 |
#define EV_KEY_PAUSECD 201 |
319 |
#define EV_KEY_PROG3 202 |
320 |
#define EV_KEY_PROG4 203 |
321 |
#define EV_KEY_SUSPEND 205 |
322 |
#define EV_KEY_CLOSE 206 |
323 |
#define EV_KEY_PLAY 207 |
324 |
#define EV_KEY_FASTFORWARD 208 |
325 |
#define EV_KEY_BASSBOOST 209 |
326 |
#define EV_KEY_PRINT 210 |
327 |
#define EV_KEY_HP 211 |
328 |
#define EV_KEY_CAMERA 212 |
329 |
#define EV_KEY_SOUND 213 |
330 |
#define EV_KEY_QUESTION 214 |
331 |
#define EV_KEY_EMAIL 215 |
332 |
#define EV_KEY_CHAT 216 |
333 |
#define EV_KEY_SEARCH 217 |
334 |
#define EV_KEY_CONNECT 218 |
335 |
#define EV_KEY_FINANCE 219 |
336 |
#define EV_KEY_SPORT 220 |
337 |
#define EV_KEY_SHOP 221 |
338 |
#define EV_KEY_ALTERASE 222 |
339 |
#define EV_KEY_CANCEL 223 |
340 |
#define EV_KEY_BRIGHTNESSDOWN 224 |
341 |
#define EV_KEY_BRIGHTNESSUP 225 |
342 |
#define EV_KEY_MEDIA 226 |
343 |
|
344 |
#define EV_KEY_UNKNOWN 240 |
345 |
|
346 |
#define EV_BTN_MISC 0x100 |
347 |
#define EV_BTN_0 0x100 |
348 |
#define EV_BTN_1 0x101 |
349 |
#define EV_BTN_2 0x102 |
350 |
#define EV_BTN_3 0x103 |
351 |
#define EV_BTN_4 0x104 |
352 |
#define EV_BTN_5 0x105 |
353 |
#define EV_BTN_6 0x106 |
354 |
#define EV_BTN_7 0x107 |
355 |
#define EV_BTN_8 0x108 |
356 |
#define EV_BTN_9 0x109 |
357 |
|
358 |
#define EV_BTN_MOUSE 0x110 |
359 |
#define EV_BTN_LEFT 0x110 |
360 |
#define EV_BTN_RIGHT 0x111 |
361 |
#define EV_BTN_MIDDLE 0x112 |
362 |
#define EV_BTN_SIDE 0x113 |
363 |
#define EV_BTN_EXTRA 0x114 |
364 |
#define EV_BTN_FORWARD 0x115 |
365 |
#define EV_BTN_BACK 0x116 |
366 |
|
367 |
#define EV_BTN_JOYSTICK 0x120 |
368 |
#define EV_BTN_TRIGGER 0x120 |
369 |
#define EV_BTN_THUMB 0x121 |
370 |
#define EV_BTN_THUMB2 0x122 |
371 |
#define EV_BTN_TOP 0x123 |
372 |
#define EV_BTN_TOP2 0x124 |
373 |
#define EV_BTN_PINKIE 0x125 |
374 |
#define EV_BTN_BASE 0x126 |
375 |
#define EV_BTN_BASE2 0x127 |
376 |
#define EV_BTN_BASE3 0x128 |
377 |
#define EV_BTN_BASE4 0x129 |
378 |
#define EV_BTN_BASE5 0x12a |
379 |
#define EV_BTN_BASE6 0x12b |
380 |
#define EV_BTN_DEAD 0x12f |
381 |
|
382 |
#define EV_BTN_GAMEPAD 0x130 |
383 |
#define EV_BTN_A 0x130 |
384 |
#define EV_BTN_B 0x131 |
385 |
#define EV_BTN_C 0x132 |
386 |
#define EV_BTN_X 0x133 |
387 |
#define EV_BTN_Y 0x134 |
388 |
#define EV_BTN_Z 0x135 |
389 |
#define EV_BTN_TL 0x136 |
390 |
#define EV_BTN_TR 0x137 |
391 |
#define EV_BTN_TL2 0x138 |
392 |
#define EV_BTN_TR2 0x139 |
393 |
#define EV_BTN_SELECT 0x13a |
394 |
#define EV_BTN_START 0x13b |
395 |
#define EV_BTN_MODE 0x13c |
396 |
#define EV_BTN_THUMBL 0x13d |
397 |
#define EV_BTN_THUMBR 0x13e |
398 |
|
399 |
#define EV_BTN_DIGI 0x140 |
400 |
#define EV_BTN_TOOL_PEN 0x140 |
401 |
#define EV_BTN_TOOL_RUBBER 0x141 |
402 |
#define EV_BTN_TOOL_BRUSH 0x142 |
403 |
#define EV_BTN_TOOL_PENCIL 0x143 |
404 |
#define EV_BTN_TOOL_AIRBRUSH 0x144 |
405 |
#define EV_BTN_TOOL_FINGER 0x145 |
406 |
#define EV_BTN_TOOL_MOUSE 0x146 |
407 |
#define EV_BTN_TOOL_LENS 0x147 |
408 |
#define EV_BTN_TOUCH 0x14a |
409 |
#define EV_BTN_STYLUS 0x14b |
410 |
#define EV_BTN_STYLUS2 0x14c |
411 |
|
412 |
#define EV_BTN_WHEEL 0x150 |
413 |
#define EV_BTN_GEAR_DOWN 0x150 |
414 |
#define EV_BTN_GEAR_UP 0x151 |
415 |
|
416 |
#define EV_KEY_OK 0x160 |
417 |
#define EV_KEY_SELECT 0x161 |
418 |
#define EV_KEY_GOTO 0x162 |
419 |
#define EV_KEY_CLEAR 0x163 |
420 |
#define EV_KEY_POWER2 0x164 |
421 |
#define EV_KEY_OPTION 0x165 |
422 |
#define EV_KEY_INFO 0x166 |
423 |
#define EV_KEY_TIME 0x167 |
424 |
#define EV_KEY_VENDOR 0x168 |
425 |
#define EV_KEY_ARCHIVE 0x169 |
426 |
#define EV_KEY_PROGRAM 0x16a |
427 |
#define EV_KEY_CHANNEL 0x16b |
428 |
#define EV_KEY_FAVORITES 0x16c |
429 |
#define EV_KEY_EPG 0x16d |
430 |
#define EV_KEY_PVR 0x16e |
431 |
#define EV_KEY_MHP 0x16f |
432 |
#define EV_KEY_LANGUAGE 0x170 |
433 |
#define EV_KEY_TITLE 0x171 |
434 |
#define EV_KEY_SUBTITLE 0x172 |
435 |
#define EV_KEY_ANGLE 0x173 |
436 |
#define EV_KEY_ZOOM 0x174 |
437 |
#define EV_KEY_MODE 0x175 |
438 |
#define EV_KEY_KEYBOARD 0x176 |
439 |
#define EV_KEY_SCREEN 0x177 |
440 |
#define EV_KEY_PC 0x178 |
441 |
#define EV_KEY_TV 0x179 |
442 |
#define EV_KEY_TV2 0x17a |
443 |
#define EV_KEY_VCR 0x17b |
444 |
#define EV_KEY_VCR2 0x17c |
445 |
#define EV_KEY_SAT 0x17d |
446 |
#define EV_KEY_SAT2 0x17e |
447 |
#define EV_KEY_CD 0x17f |
448 |
#define EV_KEY_TAPE 0x180 |
449 |
#define EV_KEY_RADIO 0x181 |
450 |
#define EV_KEY_TUNER 0x182 |
451 |
#define EV_KEY_PLAYER 0x183 |
452 |
#define EV_KEY_TEXT 0x184 |
453 |
#define EV_KEY_DVD 0x185 |
454 |
#define EV_KEY_AUX 0x186 |
455 |
#define EV_KEY_MP3 0x187 |
456 |
#define EV_KEY_AUDIO 0x188 |
457 |
#define EV_KEY_VIDEO 0x189 |
458 |
#define EV_KEY_DIRECTORY 0x18a |
459 |
#define EV_KEY_LIST 0x18b |
460 |
#define EV_KEY_MEMO 0x18c |
461 |
#define EV_KEY_CALENDAR 0x18d |
462 |
#define EV_KEY_RED 0x18e |
463 |
#define EV_KEY_GREEN 0x18f |
464 |
#define EV_KEY_YELLOW 0x190 |
465 |
#define EV_KEY_BLUE 0x191 |
466 |
#define EV_KEY_CHANNELUP 0x192 |
467 |
#define EV_KEY_CHANNELDOWN 0x193 |
468 |
#define EV_KEY_FIRST 0x194 |
469 |
#define EV_KEY_LAST 0x195 |
470 |
#define EV_KEY_AB 0x196 |
471 |
#define EV_KEY_NEXT 0x197 |
472 |
#define EV_KEY_RESTART 0x198 |
473 |
#define EV_KEY_SLOW 0x199 |
474 |
#define EV_KEY_SHUFFLE 0x19a |
475 |
#define EV_KEY_BREAK 0x19b |
476 |
#define EV_KEY_PREVIOUS 0x19c |
477 |
#define EV_KEY_DIGITS 0x19d |
478 |
#define EV_KEY_TEEN 0x19e |
479 |
#define EV_KEY_TWEN 0x19f |
480 |
|
481 |
#define EV_KEY_MAX 0x1ff |
482 |
|
483 |
/* |
484 |
* Relative axes |
485 |
*/ |
486 |
|
487 |
#define EV_REL_X 0x00 |
488 |
#define EV_REL_Y 0x01 |
489 |
#define EV_REL_Z 0x02 |
490 |
#define EV_REL_HWHEEL 0x06 |
491 |
#define EV_REL_DIAL 0x07 |
492 |
#define EV_REL_WHEEL 0x08 |
493 |
#define EV_REL_MISC 0x09 |
494 |
#define EV_REL_MAX 0x0f |
495 |
|
496 |
/* |
497 |
* Absolute axes |
498 |
*/ |
499 |
|
500 |
#define EV_ABS_X 0x00 |
501 |
#define EV_ABS_Y 0x01 |
502 |
#define EV_ABS_Z 0x02 |
503 |
#define EV_ABS_RX 0x03 |
504 |
#define EV_ABS_RY 0x04 |
505 |
#define EV_ABS_RZ 0x05 |
506 |
#define EV_ABS_THROTTLE 0x06 |
507 |
#define EV_ABS_RUDDER 0x07 |
508 |
#define EV_ABS_WHEEL 0x08 |
509 |
#define EV_ABS_GAS 0x09 |
510 |
#define EV_ABS_BRAKE 0x0a |
511 |
#define EV_ABS_HAT0X 0x10 |
512 |
#define EV_ABS_HAT0Y 0x11 |
513 |
#define EV_ABS_HAT1X 0x12 |
514 |
#define EV_ABS_HAT1Y 0x13 |
515 |
#define EV_ABS_HAT2X 0x14 |
516 |
#define EV_ABS_HAT2Y 0x15 |
517 |
#define EV_ABS_HAT3X 0x16 |
518 |
#define EV_ABS_HAT3Y 0x17 |
519 |
#define EV_ABS_PRESSURE 0x18 |
520 |
#define EV_ABS_DISTANCE 0x19 |
521 |
#define EV_ABS_TILT_X 0x1a |
522 |
#define EV_ABS_TILT_Y 0x1b |
523 |
#define EV_ABS_VOLUME 0x20 |
524 |
#define EV_ABS_MISC 0x28 |
525 |
#define EV_ABS_MAX 0x3f |
526 |
|
527 |
/* |
528 |
* Misc events |
529 |
*/ |
530 |
|
531 |
#define EV_MSG_SERIAL 0x00 |
532 |
#define EV_MSG_PULSELED 0x01 |
533 |
#define EV_MSG_MAX 0x07 |
534 |
|
535 |
/* |
536 |
* LEDs |
537 |
*/ |
538 |
|
539 |
#define EV_LED_NUML 0x00 |
540 |
#define EV_LED_CAPSL 0x01 |
541 |
#define EV_LED_SCROLLL 0x02 |
542 |
#define EV_LED_COMPOSE 0x03 |
543 |
#define EV_LED_KANA 0x04 |
544 |
#define EV_LED_SLEEP 0x05 |
545 |
#define EV_LED_SUSPEND 0x06 |
546 |
#define EV_LED_MUTE 0x07 |
547 |
#define EV_LED_MISC 0x08 |
548 |
#define EV_LED_MAX 0x0f |
549 |
|
550 |
/* |
551 |
* Autorepeat values |
552 |
*/ |
553 |
|
554 |
#define EV_REP_DELAY 0x00 |
555 |
#define EV_REP_PERIOD 0x01 |
556 |
#define EV_REP_MAX 0x01 |
557 |
|
558 |
/* |
559 |
* Sounds |
560 |
*/ |
561 |
|
562 |
#define EV_SND_CLICK 0x00 |
563 |
#define EV_SND_BELL 0x01 |
564 |
#define EV_SND_TONE 0x02 |
565 |
#define EV_SND_MAX 0x07 |
566 |
|
567 |
/* |
568 |
* IDs. |
569 |
*/ |
570 |
|
571 |
#define EV_ID_BUS 0 |
572 |
#define EV_ID_VENDOR 1 |
573 |
#define EV_ID_PRODUCT 2 |
574 |
#define EV_ID_VERSION 3 |
575 |
|
576 |
#define EV_BUS_PCI 0x01 |
577 |
#define EV_BUS_ISAPNP 0x02 |
578 |
#define EV_BUS_USB 0x03 |
579 |
#define EV_BUS_HIL 0x04 |
580 |
|
581 |
#define EV_BUS_ISA 0x10 |
582 |
#define EV_BUS_I8042 0x11 |
583 |
#define EV_BUS_XTKBD 0x12 |
584 |
#define EV_BUS_RS232 0x13 |
585 |
#define EV_BUS_GAMEPORT 0x14 |
586 |
#define EV_BUS_PARPORT 0x15 |
587 |
#define EV_BUS_AMIGA 0x16 |
588 |
#define EV_BUS_ADB 0x17 |
589 |
#define EV_BUS_I2C 0x18 |
590 |
#define EV_BUS_HOST 0x19 |
591 |
|
592 |
/* |
593 |
* Values describing the status of an effect |
594 |
*/ |
595 |
#define EV_FF_STATUS_STOPPED 0x00 |
596 |
#define EV_FF_STATUS_PLAYING 0x01 |
597 |
#define EV_FF_STATUS_MAX 0x01 |
598 |
|
599 |
/* |
600 |
* Structures used in ioctls to upload effects to a device |
601 |
* The first structures are not passed directly by using ioctls. |
602 |
* They are sub-structures of the actually sent structure (called ff_effect) |
603 |
*/ |
604 |
|
605 |
struct ff_replay { |
606 |
__u16 length; /* Duration of an effect in ms. All other times are also expressed in ms */ |
607 |
__u16 delay; /* Time to wait before to start playing an effect */ |
608 |
}; |
609 |
|
610 |
struct ff_trigger { |
611 |
__u16 button; /* Number of button triggering an effect */ |
612 |
__u16 interval; /* Time to wait before an effect can be re-triggered (ms) */ |
613 |
}; |
614 |
|
615 |
struct ff_envelope { |
616 |
__u16 attack_length; /* Duration of attack (ms) */ |
617 |
__u16 attack_level; /* Level at beginning of attack */ |
618 |
__u16 fade_length; /* Duration of fade (ms) */ |
619 |
__u16 fade_level; /* Level at end of fade */ |
620 |
}; |
621 |
|
622 |
/* EV_FF_CONSTANT */ |
623 |
struct ff_constant_effect { |
624 |
__s16 level; /* Strength of effect. Negative values are OK */ |
625 |
struct ff_envelope envelope; |
626 |
}; |
627 |
|
628 |
/* EV_FF_RAMP */ |
629 |
struct ff_ramp_effect { |
630 |
__s16 start_level; |
631 |
__s16 end_level; |
632 |
struct ff_envelope envelope; |
633 |
}; |
634 |
|
635 |
/* EV_FF_SPRING of FF_FRICTION */ |
636 |
struct ff_condition_effect { |
637 |
__u16 right_saturation; /* Max level when joystick is on the right */ |
638 |
__u16 left_saturation; /* Max level when joystick in on the left */ |
639 |
|
640 |
__s16 right_coeff; /* Indicates how fast the force grows when the |
641 |
joystick moves to the right */ |
642 |
__s16 left_coeff; /* Same for left side */ |
643 |
|
644 |
__u16 deadband; /* Size of area where no force is produced */ |
645 |
__s16 center; /* Position of dead zone */ |
646 |
|
647 |
}; |
648 |
|
649 |
/* EV_FF_PERIODIC */ |
650 |
struct ff_periodic_effect { |
651 |
__u16 waveform; /* Kind of wave (sine, square...) */ |
652 |
__u16 period; /* in ms */ |
653 |
__s16 magnitude; /* Peak value */ |
654 |
__s16 offset; /* Mean value of wave (roughly) */ |
655 |
__u16 phase; /* 'Horizontal' shift */ |
656 |
|
657 |
struct ff_envelope envelope; |
658 |
|
659 |
/* Only used if waveform == EV_FF_CUSTOM */ |
660 |
__u32 custom_len; /* Number of samples */ |
661 |
__s16 *custom_data; /* Buffer of samples */ |
662 |
/* Note: the data pointed by custom_data is copied by the driver. You can |
663 |
* therefore dispose of the memory after the upload/update */ |
664 |
}; |
665 |
|
666 |
/* EV_FF_RUMBLE */ |
667 |
/* Some rumble pads have two motors of different weight. |
668 |
strong_magnitude represents the magnitude of the vibration generated |
669 |
by the heavy motor. |
670 |
*/ |
671 |
struct ff_rumble_effect { |
672 |
__u16 strong_magnitude; /* Magnitude of the heavy motor */ |
673 |
__u16 weak_magnitude; /* Magnitude of the light one */ |
674 |
}; |
675 |
|
676 |
/* |
677 |
* Structure sent through ioctl from the application to the driver |
678 |
*/ |
679 |
struct ff_effect { |
680 |
__u16 type; |
681 |
/* Following field denotes the unique id assigned to an effect. |
682 |
* If user sets if to -1, a new effect is created, and its id is returned in the same field |
683 |
* Else, the user sets it to the effect id it wants to update. |
684 |
*/ |
685 |
__s16 id; |
686 |
|
687 |
__u16 direction; /* Direction. 0 deg -> 0x0000 (down) |
688 |
90 deg -> 0x4000 (left) |
689 |
180 deg -> 0x8000 (up) |
690 |
270 deg -> 0xC000 (right) |
691 |
*/ |
692 |
|
693 |
struct ff_trigger trigger; |
694 |
struct ff_replay replay; |
695 |
|
696 |
union { |
697 |
struct ff_constant_effect constant; |
698 |
struct ff_ramp_effect ramp; |
699 |
struct ff_periodic_effect periodic; |
700 |
struct ff_condition_effect condition[2]; /* One for each axis */ |
701 |
struct ff_rumble_effect rumble; |
702 |
} u; |
703 |
}; |
704 |
|
705 |
/* |
706 |
* Force feedback effect types |
707 |
*/ |
708 |
|
709 |
#define EV_FF_RUMBLE 0x50 |
710 |
#define EV_FF_PERIODIC 0x51 |
711 |
#define EV_FF_CONSTANT 0x52 |
712 |
#define EV_FF_SPRING 0x53 |
713 |
#define EV_FF_FRICTION 0x54 |
714 |
#define EV_FF_DAMPER 0x55 |
715 |
#define EV_FF_INERTIA 0x56 |
716 |
#define EV_FF_RAMP 0x57 |
717 |
|
718 |
/* |
719 |
* Force feedback periodic effect types |
720 |
*/ |
721 |
|
722 |
#define EV_FF_SQUARE 0x58 |
723 |
#define EV_FF_TRIANGLE 0x59 |
724 |
#define EV_FF_SINE 0x5a |
725 |
#define EV_FF_SAW_UP 0x5b |
726 |
#define EV_FF_SAW_DOWN 0x5c |
727 |
#define EV_FF_CUSTOM 0x5d |
728 |
|
729 |
/* |
730 |
* Set ff device properties |
731 |
*/ |
732 |
|
733 |
#define EV_FF_GAIN 0x60 |
734 |
#define EV_FF_AUTOCENTER 0x61 |
735 |
|
736 |
#define EV_FF_MAX 0x7f |
737 |
|
738 |
|
739 |
|
740 |
typedef struct _evdevDriver { |
741 |
const char *name; |
742 |
const char *phys; |
743 |
void *cb_data; |
744 |
int (*callback)(void *cb_data, int what); |
745 |
struct _evdevDriver *next; |
746 |
} evdevDriver, *evdevDriverPtr; |
747 |
|
748 |
int evdevGetFDForDriver (evdevDriverPtr driver); |
749 |
Bool evdevStart (InputDriverPtr drv); |
750 |
Bool evdevNewDriver (evdevDriverPtr driver); |
751 |
|
752 |
#endif /* LNX_EVDEV_H_ */ |