Rev 422 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
422 | giacomo | 1 | #ifndef _INPUT_H |
2 | #define _INPUT_H |
||
3 | |||
4 | /* |
||
5 | * Copyright (c) 1999-2002 Vojtech Pavlik |
||
6 | * |
||
7 | * This program is free software; you can redistribute it and/or modify it |
||
8 | * under the terms of the GNU General Public License version 2 as published by |
||
9 | * the Free Software Foundation. |
||
10 | */ |
||
11 | |||
12 | #ifdef __KERNEL__ |
||
13 | #include <linux/time.h> |
||
14 | #include <linux/list.h> |
||
15 | #else |
||
16 | #include <sys/time.h> |
||
17 | #include <sys/ioctl.h> |
||
18 | #include <asm/types.h> |
||
19 | #endif |
||
20 | |||
21 | /* |
||
22 | * The event structure itself |
||
23 | */ |
||
24 | |||
25 | struct input_event { |
||
26 | struct timeval time; |
||
27 | __u16 type; |
||
28 | __u16 code; |
||
29 | __s32 value; |
||
30 | }; |
||
31 | |||
32 | /* |
||
33 | * Protocol version. |
||
34 | */ |
||
35 | |||
36 | #define EV_VERSION 0x010000 |
||
37 | |||
38 | /* |
||
39 | * IOCTLs (0x00 - 0x7f) |
||
40 | */ |
||
41 | |||
42 | struct input_id { |
||
43 | __u16 bustype; |
||
44 | __u16 vendor; |
||
45 | __u16 product; |
||
46 | __u16 version; |
||
47 | }; |
||
48 | |||
49 | struct input_absinfo { |
||
50 | __s32 value; |
||
51 | __s32 minimum; |
||
52 | __s32 maximum; |
||
53 | __s32 fuzz; |
||
54 | __s32 flat; |
||
55 | }; |
||
56 | |||
57 | #define EVIOCGVERSION _IOR('E', 0x01, int) /* get driver version */ |
||
58 | #define EVIOCGID _IOR('E', 0x02, struct input_id) /* get device ID */ |
||
59 | #define EVIOCGKEYCODE _IOR('E', 0x04, int[2]) /* get keycode */ |
||
60 | #define EVIOCSKEYCODE _IOW('E', 0x04, int[2]) /* set keycode */ |
||
61 | |||
62 | #define EVIOCGNAME(len) _IOC(_IOC_READ, 'E', 0x06, len) /* get device name */ |
||
63 | #define EVIOCGPHYS(len) _IOC(_IOC_READ, 'E', 0x07, len) /* get physical location */ |
||
64 | #define EVIOCGUNIQ(len) _IOC(_IOC_READ, 'E', 0x08, len) /* get unique identifier */ |
||
65 | |||
66 | #define EVIOCGKEY(len) _IOC(_IOC_READ, 'E', 0x18, len) /* get global keystate */ |
||
67 | #define EVIOCGLED(len) _IOC(_IOC_READ, 'E', 0x19, len) /* get all LEDs */ |
||
68 | #define EVIOCGSND(len) _IOC(_IOC_READ, 'E', 0x1a, len) /* get all sounds status */ |
||
69 | |||
70 | #define EVIOCGBIT(ev,len) _IOC(_IOC_READ, 'E', 0x20 + ev, len) /* get event bits */ |
||
71 | #define EVIOCGABS(abs) _IOR('E', 0x40 + abs, struct input_absinfo) /* get abs value/limits */ |
||
72 | #define EVIOCSABS(abs) _IOW('E', 0xc0 + abs, struct input_absinfo) /* set abs value/limits */ |
||
73 | |||
74 | #define EVIOCSFF _IOC(_IOC_WRITE, 'E', 0x80, sizeof(struct ff_effect)) /* send a force effect to a force feedback device */ |
||
75 | #define EVIOCRMFF _IOW('E', 0x81, int) /* Erase a force effect */ |
||
76 | #define EVIOCGEFFECTS _IOR('E', 0x84, int) /* Report number of effects playable at the same time */ |
||
77 | |||
78 | #define EVIOCGRAB _IOW('E', 0x90, int) /* Grab/Release device */ |
||
79 | |||
80 | /* |
||
81 | * Event types |
||
82 | */ |
||
83 | |||
84 | #define EV_SYN 0x00 |
||
85 | #define EV_KEY 0x01 |
||
86 | #define EV_REL 0x02 |
||
87 | #define EV_ABS 0x03 |
||
88 | #define EV_MSC 0x04 |
||
89 | #define EV_LED 0x11 |
||
90 | #define EV_SND 0x12 |
||
91 | #define EV_REP 0x14 |
||
92 | #define EV_FF 0x15 |
||
93 | #define EV_PWR 0x16 |
||
94 | #define EV_FF_STATUS 0x17 |
||
95 | #define EV_MAX 0x1f |
||
96 | |||
97 | /* |
||
98 | * Synchronization events. |
||
99 | */ |
||
100 | |||
101 | #define SYN_REPORT 0 |
||
102 | #define SYN_CONFIG 1 |
||
103 | |||
104 | /* |
||
105 | * Keys and buttons |
||
106 | */ |
||
107 | |||
108 | #define KEY_RESERVED 0 |
||
109 | #define KEY_ESC 1 |
||
110 | #define KEY_1 2 |
||
111 | #define KEY_2 3 |
||
112 | #define KEY_3 4 |
||
113 | #define KEY_4 5 |
||
114 | #define KEY_5 6 |
||
115 | #define KEY_6 7 |
||
116 | #define KEY_7 8 |
||
117 | #define KEY_8 9 |
||
118 | #define KEY_9 10 |
||
119 | #define KEY_0 11 |
||
120 | #define KEY_MINUS 12 |
||
121 | #define KEY_EQUAL 13 |
||
122 | #define KEY_BACKSPACE 14 |
||
123 | #define KEY_TAB 15 |
||
124 | #define KEY_Q 16 |
||
125 | #define KEY_W 17 |
||
126 | #define KEY_E 18 |
||
127 | #define KEY_R 19 |
||
128 | #define KEY_T 20 |
||
129 | #define KEY_Y 21 |
||
130 | #define KEY_U 22 |
||
131 | #define KEY_I 23 |
||
132 | #define KEY_O 24 |
||
133 | #define KEY_P 25 |
||
134 | #define KEY_LEFTBRACE 26 |
||
135 | #define KEY_RIGHTBRACE 27 |
||
136 | #define KEY_ENTER 28 |
||
137 | #define KEY_LEFTCTRL 29 |
||
138 | #define KEY_A 30 |
||
139 | #define KEY_S 31 |
||
140 | #define KEY_D 32 |
||
141 | #define KEY_F 33 |
||
142 | #define KEY_G 34 |
||
143 | #define KEY_H 35 |
||
144 | #define KEY_J 36 |
||
145 | #define KEY_K 37 |
||
146 | #define KEY_L 38 |
||
147 | #define KEY_SEMICOLON 39 |
||
148 | #define KEY_APOSTROPHE 40 |
||
149 | #define KEY_GRAVE 41 |
||
150 | #define KEY_LEFTSHIFT 42 |
||
151 | #define KEY_BACKSLASH 43 |
||
152 | #define KEY_Z 44 |
||
153 | #define KEY_X 45 |
||
154 | #define KEY_C 46 |
||
155 | #define KEY_V 47 |
||
156 | #define KEY_B 48 |
||
157 | #define KEY_N 49 |
||
158 | #define KEY_M 50 |
||
159 | #define KEY_COMMA 51 |
||
160 | #define KEY_DOT 52 |
||
161 | #define KEY_SLASH 53 |
||
162 | #define KEY_RIGHTSHIFT 54 |
||
163 | #define KEY_KPASTERISK 55 |
||
164 | #define KEY_LEFTALT 56 |
||
165 | #define KEY_SPACE 57 |
||
166 | #define KEY_CAPSLOCK 58 |
||
167 | #define KEY_F1 59 |
||
168 | #define KEY_F2 60 |
||
169 | #define KEY_F3 61 |
||
170 | #define KEY_F4 62 |
||
171 | #define KEY_F5 63 |
||
172 | #define KEY_F6 64 |
||
173 | #define KEY_F7 65 |
||
174 | #define KEY_F8 66 |
||
175 | #define KEY_F9 67 |
||
176 | #define KEY_F10 68 |
||
177 | #define KEY_NUMLOCK 69 |
||
178 | #define KEY_SCROLLLOCK 70 |
||
179 | #define KEY_KP7 71 |
||
180 | #define KEY_KP8 72 |
||
181 | #define KEY_KP9 73 |
||
182 | #define KEY_KPMINUS 74 |
||
183 | #define KEY_KP4 75 |
||
184 | #define KEY_KP5 76 |
||
185 | #define KEY_KP6 77 |
||
186 | #define KEY_KPPLUS 78 |
||
187 | #define KEY_KP1 79 |
||
188 | #define KEY_KP2 80 |
||
189 | #define KEY_KP3 81 |
||
190 | #define KEY_KP0 82 |
||
191 | #define KEY_KPDOT 83 |
||
192 | #define KEY_103RD 84 |
||
193 | #define KEY_F13 85 |
||
194 | #define KEY_102ND 86 |
||
195 | #define KEY_F11 87 |
||
196 | #define KEY_F12 88 |
||
197 | #define KEY_F14 89 |
||
198 | #define KEY_F15 90 |
||
199 | #define KEY_F16 91 |
||
200 | #define KEY_F17 92 |
||
201 | #define KEY_F18 93 |
||
202 | #define KEY_F19 94 |
||
203 | #define KEY_F20 95 |
||
204 | #define KEY_KPENTER 96 |
||
205 | #define KEY_RIGHTCTRL 97 |
||
206 | #define KEY_KPSLASH 98 |
||
207 | #define KEY_SYSRQ 99 |
||
208 | #define KEY_RIGHTALT 100 |
||
209 | #define KEY_LINEFEED 101 |
||
210 | #define KEY_HOME 102 |
||
211 | #define KEY_UP 103 |
||
212 | #define KEY_PAGEUP 104 |
||
213 | #define KEY_LEFT 105 |
||
214 | #define KEY_RIGHT 106 |
||
215 | #define KEY_END 107 |
||
216 | #define KEY_DOWN 108 |
||
217 | #define KEY_PAGEDOWN 109 |
||
218 | #define KEY_INSERT 110 |
||
219 | #define KEY_DELETE 111 |
||
220 | #define KEY_MACRO 112 |
||
221 | #define KEY_MUTE 113 |
||
222 | #define KEY_VOLUMEDOWN 114 |
||
223 | #define KEY_VOLUMEUP 115 |
||
224 | #define KEY_POWER 116 |
||
225 | #define KEY_KPEQUAL 117 |
||
226 | #define KEY_KPPLUSMINUS 118 |
||
227 | #define KEY_PAUSE 119 |
||
228 | #define KEY_F21 120 |
||
229 | #define KEY_F22 121 |
||
230 | #define KEY_F23 122 |
||
231 | #define KEY_F24 123 |
||
232 | #define KEY_KPCOMMA 124 |
||
233 | #define KEY_LEFTMETA 125 |
||
234 | #define KEY_RIGHTMETA 126 |
||
235 | #define KEY_COMPOSE 127 |
||
236 | |||
237 | #define KEY_STOP 128 |
||
238 | #define KEY_AGAIN 129 |
||
239 | #define KEY_PROPS 130 |
||
240 | #define KEY_UNDO 131 |
||
241 | #define KEY_FRONT 132 |
||
242 | #define KEY_COPY 133 |
||
243 | #define KEY_OPEN 134 |
||
244 | #define KEY_PASTE 135 |
||
245 | #define KEY_FIND 136 |
||
246 | #define KEY_CUT 137 |
||
247 | #define KEY_HELP 138 |
||
248 | #define KEY_MENU 139 |
||
249 | #define KEY_CALC 140 |
||
250 | #define KEY_SETUP 141 |
||
251 | #define KEY_SLEEP 142 |
||
252 | #define KEY_WAKEUP 143 |
||
253 | #define KEY_FILE 144 |
||
254 | #define KEY_SENDFILE 145 |
||
255 | #define KEY_DELETEFILE 146 |
||
256 | #define KEY_XFER 147 |
||
257 | #define KEY_PROG1 148 |
||
258 | #define KEY_PROG2 149 |
||
259 | #define KEY_WWW 150 |
||
260 | #define KEY_MSDOS 151 |
||
261 | #define KEY_COFFEE 152 |
||
262 | #define KEY_DIRECTION 153 |
||
263 | #define KEY_CYCLEWINDOWS 154 |
||
264 | #define KEY_MAIL 155 |
||
265 | #define KEY_BOOKMARKS 156 |
||
266 | #define KEY_COMPUTER 157 |
||
267 | #define KEY_BACK 158 |
||
268 | #define KEY_FORWARD 159 |
||
269 | #define KEY_CLOSECD 160 |
||
270 | #define KEY_EJECTCD 161 |
||
271 | #define KEY_EJECTCLOSECD 162 |
||
272 | #define KEY_NEXTSONG 163 |
||
273 | #define KEY_PLAYPAUSE 164 |
||
274 | #define KEY_PREVIOUSSONG 165 |
||
275 | #define KEY_STOPCD 166 |
||
276 | #define KEY_RECORD 167 |
||
277 | #define KEY_REWIND 168 |
||
278 | #define KEY_PHONE 169 |
||
279 | #define KEY_ISO 170 |
||
280 | #define KEY_CONFIG 171 |
||
281 | #define KEY_HOMEPAGE 172 |
||
282 | #define KEY_REFRESH 173 |
||
283 | #define KEY_EXIT 174 |
||
284 | #define KEY_MOVE 175 |
||
285 | #define KEY_EDIT 176 |
||
286 | #define KEY_SCROLLUP 177 |
||
287 | #define KEY_SCROLLDOWN 178 |
||
288 | #define KEY_KPLEFTPAREN 179 |
||
289 | #define KEY_KPRIGHTPAREN 180 |
||
290 | |||
291 | #define KEY_INTL1 181 |
||
292 | #define KEY_INTL2 182 |
||
293 | #define KEY_INTL3 183 |
||
294 | #define KEY_INTL4 184 |
||
295 | #define KEY_INTL5 185 |
||
296 | #define KEY_INTL6 186 |
||
297 | #define KEY_INTL7 187 |
||
298 | #define KEY_INTL8 188 |
||
299 | #define KEY_INTL9 189 |
||
300 | #define KEY_LANG1 190 |
||
301 | #define KEY_LANG2 191 |
||
302 | #define KEY_LANG3 192 |
||
303 | #define KEY_LANG4 193 |
||
304 | #define KEY_LANG5 194 |
||
305 | #define KEY_LANG6 195 |
||
306 | #define KEY_LANG7 196 |
||
307 | #define KEY_LANG8 197 |
||
308 | #define KEY_LANG9 198 |
||
309 | |||
310 | #define KEY_PLAYCD 200 |
||
311 | #define KEY_PAUSECD 201 |
||
312 | #define KEY_PROG3 202 |
||
313 | #define KEY_PROG4 203 |
||
314 | #define KEY_SUSPEND 205 |
||
315 | #define KEY_CLOSE 206 |
||
316 | #define KEY_PLAY 207 |
||
317 | #define KEY_FASTFORWARD 208 |
||
318 | #define KEY_BASSBOOST 209 |
||
319 | #define KEY_PRINT 210 |
||
320 | #define KEY_HP 211 |
||
321 | #define KEY_CAMERA 212 |
||
322 | #define KEY_SOUND 213 |
||
323 | #define KEY_QUESTION 214 |
||
324 | #define KEY_EMAIL 215 |
||
325 | #define KEY_CHAT 216 |
||
326 | #define KEY_SEARCH 217 |
||
327 | #define KEY_CONNECT 218 |
||
328 | #define KEY_FINANCE 219 |
||
329 | #define KEY_SPORT 220 |
||
330 | #define KEY_SHOP 221 |
||
331 | #define KEY_ALTERASE 222 |
||
332 | #define KEY_CANCEL 223 |
||
333 | #define KEY_BRIGHTNESSDOWN 224 |
||
334 | #define KEY_BRIGHTNESSUP 225 |
||
335 | #define KEY_MEDIA 226 |
||
336 | |||
337 | #define KEY_UNKNOWN 240 |
||
338 | |||
339 | #define BTN_MISC 0x100 |
||
340 | #define BTN_0 0x100 |
||
341 | #define BTN_1 0x101 |
||
342 | #define BTN_2 0x102 |
||
343 | #define BTN_3 0x103 |
||
344 | #define BTN_4 0x104 |
||
345 | #define BTN_5 0x105 |
||
346 | #define BTN_6 0x106 |
||
347 | #define BTN_7 0x107 |
||
348 | #define BTN_8 0x108 |
||
349 | #define BTN_9 0x109 |
||
350 | |||
351 | #define BTN_MOUSE 0x110 |
||
352 | #define BTN_LEFT 0x110 |
||
353 | #define BTN_RIGHT 0x111 |
||
354 | #define BTN_MIDDLE 0x112 |
||
355 | #define BTN_SIDE 0x113 |
||
356 | #define BTN_EXTRA 0x114 |
||
357 | #define BTN_FORWARD 0x115 |
||
358 | #define BTN_BACK 0x116 |
||
359 | #define BTN_TASK 0x117 |
||
360 | |||
361 | #define BTN_JOYSTICK 0x120 |
||
362 | #define BTN_TRIGGER 0x120 |
||
363 | #define BTN_THUMB 0x121 |
||
364 | #define BTN_THUMB2 0x122 |
||
365 | #define BTN_TOP 0x123 |
||
366 | #define BTN_TOP2 0x124 |
||
367 | #define BTN_PINKIE 0x125 |
||
368 | #define BTN_BASE 0x126 |
||
369 | #define BTN_BASE2 0x127 |
||
370 | #define BTN_BASE3 0x128 |
||
371 | #define BTN_BASE4 0x129 |
||
372 | #define BTN_BASE5 0x12a |
||
373 | #define BTN_BASE6 0x12b |
||
374 | #define BTN_DEAD 0x12f |
||
375 | |||
376 | #define BTN_GAMEPAD 0x130 |
||
377 | #define BTN_A 0x130 |
||
378 | #define BTN_B 0x131 |
||
379 | #define BTN_C 0x132 |
||
380 | #define BTN_X 0x133 |
||
381 | #define BTN_Y 0x134 |
||
382 | #define BTN_Z 0x135 |
||
383 | #define BTN_TL 0x136 |
||
384 | #define BTN_TR 0x137 |
||
385 | #define BTN_TL2 0x138 |
||
386 | #define BTN_TR2 0x139 |
||
387 | #define BTN_SELECT 0x13a |
||
388 | #define BTN_START 0x13b |
||
389 | #define BTN_MODE 0x13c |
||
390 | #define BTN_THUMBL 0x13d |
||
391 | #define BTN_THUMBR 0x13e |
||
392 | |||
393 | #define BTN_DIGI 0x140 |
||
394 | #define BTN_TOOL_PEN 0x140 |
||
395 | #define BTN_TOOL_RUBBER 0x141 |
||
396 | #define BTN_TOOL_BRUSH 0x142 |
||
397 | #define BTN_TOOL_PENCIL 0x143 |
||
398 | #define BTN_TOOL_AIRBRUSH 0x144 |
||
399 | #define BTN_TOOL_FINGER 0x145 |
||
400 | #define BTN_TOOL_MOUSE 0x146 |
||
401 | #define BTN_TOOL_LENS 0x147 |
||
402 | #define BTN_TOUCH 0x14a |
||
403 | #define BTN_STYLUS 0x14b |
||
404 | #define BTN_STYLUS2 0x14c |
||
405 | #define BTN_TOOL_DOUBLETAP 0x14d |
||
406 | #define BTN_TOOL_TRIPLETAP 0x14e |
||
407 | |||
408 | #define BTN_WHEEL 0x150 |
||
409 | #define BTN_GEAR_DOWN 0x150 |
||
410 | #define BTN_GEAR_UP 0x151 |
||
411 | |||
412 | #define KEY_OK 0x160 |
||
413 | #define KEY_SELECT 0x161 |
||
414 | #define KEY_GOTO 0x162 |
||
415 | #define KEY_CLEAR 0x163 |
||
416 | #define KEY_POWER2 0x164 |
||
417 | #define KEY_OPTION 0x165 |
||
418 | #define KEY_INFO 0x166 |
||
419 | #define KEY_TIME 0x167 |
||
420 | #define KEY_VENDOR 0x168 |
||
421 | #define KEY_ARCHIVE 0x169 |
||
422 | #define KEY_PROGRAM 0x16a |
||
423 | #define KEY_CHANNEL 0x16b |
||
424 | #define KEY_FAVORITES 0x16c |
||
425 | #define KEY_EPG 0x16d |
||
426 | #define KEY_PVR 0x16e |
||
427 | #define KEY_MHP 0x16f |
||
428 | #define KEY_LANGUAGE 0x170 |
||
429 | #define KEY_TITLE 0x171 |
||
430 | #define KEY_SUBTITLE 0x172 |
||
431 | #define KEY_ANGLE 0x173 |
||
432 | #define KEY_ZOOM 0x174 |
||
433 | #define KEY_MODE 0x175 |
||
434 | #define KEY_KEYBOARD 0x176 |
||
435 | #define KEY_SCREEN 0x177 |
||
436 | #define KEY_PC 0x178 |
||
437 | #define KEY_TV 0x179 |
||
438 | #define KEY_TV2 0x17a |
||
439 | #define KEY_VCR 0x17b |
||
440 | #define KEY_VCR2 0x17c |
||
441 | #define KEY_SAT 0x17d |
||
442 | #define KEY_SAT2 0x17e |
||
443 | #define KEY_CD 0x17f |
||
444 | #define KEY_TAPE 0x180 |
||
445 | #define KEY_RADIO 0x181 |
||
446 | #define KEY_TUNER 0x182 |
||
447 | #define KEY_PLAYER 0x183 |
||
448 | #define KEY_TEXT 0x184 |
||
449 | #define KEY_DVD 0x185 |
||
450 | #define KEY_AUX 0x186 |
||
451 | #define KEY_MP3 0x187 |
||
452 | #define KEY_AUDIO 0x188 |
||
453 | #define KEY_VIDEO 0x189 |
||
454 | #define KEY_DIRECTORY 0x18a |
||
455 | #define KEY_LIST 0x18b |
||
456 | #define KEY_MEMO 0x18c |
||
457 | #define KEY_CALENDAR 0x18d |
||
458 | #define KEY_RED 0x18e |
||
459 | #define KEY_GREEN 0x18f |
||
460 | #define KEY_YELLOW 0x190 |
||
461 | #define KEY_BLUE 0x191 |
||
462 | #define KEY_CHANNELUP 0x192 |
||
463 | #define KEY_CHANNELDOWN 0x193 |
||
464 | #define KEY_FIRST 0x194 |
||
465 | #define KEY_LAST 0x195 |
||
466 | #define KEY_AB 0x196 |
||
467 | #define KEY_NEXT 0x197 |
||
468 | #define KEY_RESTART 0x198 |
||
469 | #define KEY_SLOW 0x199 |
||
470 | #define KEY_SHUFFLE 0x19a |
||
471 | #define KEY_BREAK 0x19b |
||
472 | #define KEY_PREVIOUS 0x19c |
||
473 | #define KEY_DIGITS 0x19d |
||
474 | #define KEY_TEEN 0x19e |
||
475 | #define KEY_TWEN 0x19f |
||
476 | |||
477 | #define KEY_DEL_EOL 0x1c0 |
||
478 | #define KEY_DEL_EOS 0x1c1 |
||
479 | #define KEY_INS_LINE 0x1c2 |
||
480 | #define KEY_DEL_LINE 0x1c3 |
||
481 | |||
482 | #define KEY_MAX 0x1ff |
||
483 | |||
484 | /* |
||
485 | * Relative axes |
||
486 | */ |
||
487 | |||
488 | #define REL_X 0x00 |
||
489 | #define REL_Y 0x01 |
||
490 | #define REL_Z 0x02 |
||
491 | #define REL_HWHEEL 0x06 |
||
492 | #define REL_DIAL 0x07 |
||
493 | #define REL_WHEEL 0x08 |
||
494 | #define REL_MISC 0x09 |
||
495 | #define REL_MAX 0x0f |
||
496 | |||
497 | /* |
||
498 | * Absolute axes |
||
499 | */ |
||
500 | |||
501 | #define ABS_X 0x00 |
||
502 | #define ABS_Y 0x01 |
||
503 | #define ABS_Z 0x02 |
||
504 | #define ABS_RX 0x03 |
||
505 | #define ABS_RY 0x04 |
||
506 | #define ABS_RZ 0x05 |
||
507 | #define ABS_THROTTLE 0x06 |
||
508 | #define ABS_RUDDER 0x07 |
||
509 | #define ABS_WHEEL 0x08 |
||
510 | #define ABS_GAS 0x09 |
||
511 | #define ABS_BRAKE 0x0a |
||
512 | #define ABS_HAT0X 0x10 |
||
513 | #define ABS_HAT0Y 0x11 |
||
514 | #define ABS_HAT1X 0x12 |
||
515 | #define ABS_HAT1Y 0x13 |
||
516 | #define ABS_HAT2X 0x14 |
||
517 | #define ABS_HAT2Y 0x15 |
||
518 | #define ABS_HAT3X 0x16 |
||
519 | #define ABS_HAT3Y 0x17 |
||
520 | #define ABS_PRESSURE 0x18 |
||
521 | #define ABS_DISTANCE 0x19 |
||
522 | #define ABS_TILT_X 0x1a |
||
523 | #define ABS_TILT_Y 0x1b |
||
524 | #define ABS_TOOL_WIDTH 0x1c |
||
525 | #define ABS_VOLUME 0x20 |
||
526 | #define ABS_MISC 0x28 |
||
527 | #define ABS_MAX 0x3f |
||
528 | |||
529 | /* |
||
530 | * Misc events |
||
531 | */ |
||
532 | |||
533 | #define MSC_SERIAL 0x00 |
||
534 | #define MSC_PULSELED 0x01 |
||
535 | #define MSC_GESTURE 0x02 |
||
536 | #define MSC_MAX 0x07 |
||
537 | |||
538 | /* |
||
539 | * LEDs |
||
540 | */ |
||
541 | |||
542 | #define LED_NUML 0x00 |
||
543 | #define LED_CAPSL 0x01 |
||
544 | #define LED_SCROLLL 0x02 |
||
545 | #define LED_COMPOSE 0x03 |
||
546 | #define LED_KANA 0x04 |
||
547 | #define LED_SLEEP 0x05 |
||
548 | #define LED_SUSPEND 0x06 |
||
549 | #define LED_MUTE 0x07 |
||
550 | #define LED_MISC 0x08 |
||
551 | #define LED_MAX 0x0f |
||
552 | |||
553 | /* |
||
554 | * Autorepeat values |
||
555 | */ |
||
556 | |||
557 | #define REP_DELAY 0x00 |
||
558 | #define REP_PERIOD 0x01 |
||
559 | #define REP_MAX 0x01 |
||
560 | |||
561 | /* |
||
562 | * Sounds |
||
563 | */ |
||
564 | |||
565 | #define SND_CLICK 0x00 |
||
566 | #define SND_BELL 0x01 |
||
567 | #define SND_TONE 0x02 |
||
568 | #define SND_MAX 0x07 |
||
569 | |||
570 | /* |
||
571 | * IDs. |
||
572 | */ |
||
573 | |||
574 | #define ID_BUS 0 |
||
575 | #define ID_VENDOR 1 |
||
576 | #define ID_PRODUCT 2 |
||
577 | #define ID_VERSION 3 |
||
578 | |||
579 | #define BUS_PCI 0x01 |
||
580 | #define BUS_ISAPNP 0x02 |
||
581 | #define BUS_USB 0x03 |
||
582 | #define BUS_HIL 0x04 |
||
583 | |||
584 | #define BUS_ISA 0x10 |
||
585 | #define BUS_I8042 0x11 |
||
586 | #define BUS_XTKBD 0x12 |
||
587 | #define BUS_RS232 0x13 |
||
588 | #define BUS_GAMEPORT 0x14 |
||
589 | #define BUS_PARPORT 0x15 |
||
590 | #define BUS_AMIGA 0x16 |
||
591 | #define BUS_ADB 0x17 |
||
592 | #define BUS_I2C 0x18 |
||
593 | #define BUS_HOST 0x19 |
||
594 | |||
595 | /* |
||
596 | * Values describing the status of an effect |
||
597 | */ |
||
598 | #define FF_STATUS_STOPPED 0x00 |
||
599 | #define FF_STATUS_PLAYING 0x01 |
||
600 | #define FF_STATUS_MAX 0x01 |
||
601 | |||
602 | /* |
||
603 | * Structures used in ioctls to upload effects to a device |
||
604 | * The first structures are not passed directly by using ioctls. |
||
605 | * They are sub-structures of the actually sent structure (called ff_effect) |
||
606 | */ |
||
607 | |||
608 | struct ff_replay { |
||
609 | __u16 length; /* Duration of an effect in ms. All other times are also expressed in ms */ |
||
610 | __u16 delay; /* Time to wait before to start playing an effect */ |
||
611 | }; |
||
612 | |||
613 | struct ff_trigger { |
||
614 | __u16 button; /* Number of button triggering an effect */ |
||
615 | __u16 interval; /* Time to wait before an effect can be re-triggered (ms) */ |
||
616 | }; |
||
617 | |||
618 | struct ff_envelope { |
||
619 | __u16 attack_length; /* Duration of attack (ms) */ |
||
620 | __u16 attack_level; /* Level at beginning of attack */ |
||
621 | __u16 fade_length; /* Duration of fade (ms) */ |
||
622 | __u16 fade_level; /* Level at end of fade */ |
||
623 | }; |
||
624 | |||
625 | /* FF_CONSTANT */ |
||
626 | struct ff_constant_effect { |
||
627 | __s16 level; /* Strength of effect. Negative values are OK */ |
||
628 | struct ff_envelope envelope; |
||
629 | }; |
||
630 | |||
631 | /* FF_RAMP */ |
||
632 | struct ff_ramp_effect { |
||
633 | __s16 start_level; |
||
634 | __s16 end_level; |
||
635 | struct ff_envelope envelope; |
||
636 | }; |
||
637 | |||
638 | /* FF_SPRING of FF_FRICTION */ |
||
639 | struct ff_condition_effect { |
||
640 | __u16 right_saturation; /* Max level when joystick is on the right */ |
||
641 | __u16 left_saturation; /* Max level when joystick in on the left */ |
||
642 | |||
643 | __s16 right_coeff; /* Indicates how fast the force grows when the |
||
644 | joystick moves to the right */ |
||
645 | __s16 left_coeff; /* Same for left side */ |
||
646 | |||
647 | __u16 deadband; /* Size of area where no force is produced */ |
||
648 | __s16 center; /* Position of dead zone */ |
||
649 | |||
650 | }; |
||
651 | |||
652 | /* FF_PERIODIC */ |
||
653 | struct ff_periodic_effect { |
||
654 | __u16 waveform; /* Kind of wave (sine, square...) */ |
||
655 | __u16 period; /* in ms */ |
||
656 | __s16 magnitude; /* Peak value */ |
||
657 | __s16 offset; /* Mean value of wave (roughly) */ |
||
658 | __u16 phase; /* 'Horizontal' shift */ |
||
659 | |||
660 | struct ff_envelope envelope; |
||
661 | |||
662 | /* Only used if waveform == FF_CUSTOM */ |
||
663 | __u32 custom_len; /* Number of samples */ |
||
664 | __s16 *custom_data; /* Buffer of samples */ |
||
665 | /* Note: the data pointed by custom_data is copied by the driver. You can |
||
666 | * therefore dispose of the memory after the upload/update */ |
||
667 | }; |
||
668 | |||
669 | /* FF_RUMBLE */ |
||
670 | /* Some rumble pads have two motors of different weight. |
||
671 | strong_magnitude represents the magnitude of the vibration generated |
||
672 | by the heavy motor. |
||
673 | */ |
||
674 | struct ff_rumble_effect { |
||
675 | __u16 strong_magnitude; /* Magnitude of the heavy motor */ |
||
676 | __u16 weak_magnitude; /* Magnitude of the light one */ |
||
677 | }; |
||
678 | |||
679 | /* |
||
680 | * Structure sent through ioctl from the application to the driver |
||
681 | */ |
||
682 | struct ff_effect { |
||
683 | __u16 type; |
||
684 | /* Following field denotes the unique id assigned to an effect. |
||
685 | * If user sets if to -1, a new effect is created, and its id is returned in the same field |
||
686 | * Else, the user sets it to the effect id it wants to update. |
||
687 | */ |
||
688 | __s16 id; |
||
689 | |||
690 | __u16 direction; /* Direction. 0 deg -> 0x0000 (down) |
||
691 | 90 deg -> 0x4000 (left) |
||
692 | 180 deg -> 0x8000 (up) |
||
693 | 270 deg -> 0xC000 (right) |
||
694 | */ |
||
695 | |||
696 | struct ff_trigger trigger; |
||
697 | struct ff_replay replay; |
||
698 | |||
699 | union { |
||
700 | struct ff_constant_effect constant; |
||
701 | struct ff_ramp_effect ramp; |
||
702 | struct ff_periodic_effect periodic; |
||
703 | struct ff_condition_effect condition[2]; /* One for each axis */ |
||
704 | struct ff_rumble_effect rumble; |
||
705 | } u; |
||
706 | }; |
||
707 | |||
708 | /* |
||
709 | * Force feedback effect types |
||
710 | */ |
||
711 | |||
712 | #define FF_RUMBLE 0x50 |
||
713 | #define FF_PERIODIC 0x51 |
||
714 | #define FF_CONSTANT 0x52 |
||
715 | #define FF_SPRING 0x53 |
||
716 | #define FF_FRICTION 0x54 |
||
717 | #define FF_DAMPER 0x55 |
||
718 | #define FF_INERTIA 0x56 |
||
719 | #define FF_RAMP 0x57 |
||
720 | |||
721 | /* |
||
722 | * Force feedback periodic effect types |
||
723 | */ |
||
724 | |||
725 | #define FF_SQUARE 0x58 |
||
726 | #define FF_TRIANGLE 0x59 |
||
727 | #define FF_SINE 0x5a |
||
728 | #define FF_SAW_UP 0x5b |
||
729 | #define FF_SAW_DOWN 0x5c |
||
730 | #define FF_CUSTOM 0x5d |
||
731 | |||
732 | /* |
||
733 | * Set ff device properties |
||
734 | */ |
||
735 | |||
736 | #define FF_GAIN 0x60 |
||
737 | #define FF_AUTOCENTER 0x61 |
||
738 | |||
739 | #define FF_MAX 0x7f |
||
740 | |||
741 | #ifdef __KERNEL__ |
||
742 | |||
743 | /* |
||
744 | * In-kernel definitions. |
||
745 | */ |
||
746 | |||
747 | #include <linux/fs.h> |
||
748 | #include <linux/timer.h> |
||
749 | |||
750 | #define NBITS(x) ((((x)-1)/BITS_PER_LONG)+1) |
||
751 | #define BIT(x) (1UL<<((x)%BITS_PER_LONG)) |
||
752 | #define LONG(x) ((x)/BITS_PER_LONG) |
||
753 | |||
754 | #define INPUT_KEYCODE(dev, scancode) ((dev->keycodesize == 1) ? ((u8*)dev->keycode)[scancode] : \ |
||
755 | ((dev->keycodesize == 2) ? ((u16*)dev->keycode)[scancode] : (((u32*)dev->keycode)[scancode]))) |
||
756 | |||
757 | #define init_input_dev(dev) do { INIT_LIST_HEAD(&((dev)->h_list)); INIT_LIST_HEAD(&((dev)->node)); } while (0) |
||
758 | |||
759 | struct input_dev { |
||
760 | |||
761 | void *private; |
||
762 | |||
763 | char *name; |
||
764 | char *phys; |
||
765 | char *uniq; |
||
766 | struct input_id id; |
||
767 | |||
768 | unsigned long evbit[NBITS(EV_MAX)]; |
||
769 | unsigned long keybit[NBITS(KEY_MAX)]; |
||
770 | unsigned long relbit[NBITS(REL_MAX)]; |
||
771 | unsigned long absbit[NBITS(ABS_MAX)]; |
||
772 | unsigned long mscbit[NBITS(MSC_MAX)]; |
||
773 | unsigned long ledbit[NBITS(LED_MAX)]; |
||
774 | unsigned long sndbit[NBITS(SND_MAX)]; |
||
775 | unsigned long ffbit[NBITS(FF_MAX)]; |
||
776 | int ff_effects_max; |
||
777 | |||
778 | unsigned int keycodemax; |
||
779 | unsigned int keycodesize; |
||
780 | void *keycode; |
||
781 | |||
782 | unsigned int repeat_key; |
||
783 | struct timer_list timer; |
||
784 | |||
785 | struct pm_dev *pm_dev; |
||
786 | struct pt_regs *regs; |
||
787 | int state; |
||
788 | |||
789 | int sync; |
||
790 | |||
791 | int abs[ABS_MAX + 1]; |
||
792 | int rep[REP_MAX + 1]; |
||
793 | |||
794 | unsigned long key[NBITS(KEY_MAX)]; |
||
795 | unsigned long led[NBITS(LED_MAX)]; |
||
796 | unsigned long snd[NBITS(SND_MAX)]; |
||
797 | |||
798 | int absmax[ABS_MAX + 1]; |
||
799 | int absmin[ABS_MAX + 1]; |
||
800 | int absfuzz[ABS_MAX + 1]; |
||
801 | int absflat[ABS_MAX + 1]; |
||
802 | |||
803 | int (*open)(struct input_dev *dev); |
||
804 | void (*close)(struct input_dev *dev); |
||
805 | int (*accept)(struct input_dev *dev, struct file *file); |
||
806 | int (*flush)(struct input_dev *dev, struct file *file); |
||
807 | int (*event)(struct input_dev *dev, unsigned int type, unsigned int code, int value); |
||
808 | int (*upload_effect)(struct input_dev *dev, struct ff_effect *effect); |
||
809 | int (*erase_effect)(struct input_dev *dev, int effect_id); |
||
810 | |||
811 | struct input_handle *grab; |
||
812 | |||
813 | struct list_head h_list; |
||
814 | struct list_head node; |
||
815 | }; |
||
816 | |||
817 | /* |
||
818 | * Structure for hotplug & device<->driver matching. |
||
819 | */ |
||
820 | |||
821 | #define INPUT_DEVICE_ID_MATCH_BUS 1 |
||
822 | #define INPUT_DEVICE_ID_MATCH_VENDOR 2 |
||
823 | #define INPUT_DEVICE_ID_MATCH_PRODUCT 4 |
||
824 | #define INPUT_DEVICE_ID_MATCH_VERSION 8 |
||
825 | |||
826 | #define INPUT_DEVICE_ID_MATCH_EVBIT 0x010 |
||
827 | #define INPUT_DEVICE_ID_MATCH_KEYBIT 0x020 |
||
828 | #define INPUT_DEVICE_ID_MATCH_RELBIT 0x040 |
||
829 | #define INPUT_DEVICE_ID_MATCH_ABSBIT 0x080 |
||
830 | #define INPUT_DEVICE_ID_MATCH_MSCIT 0x100 |
||
831 | #define INPUT_DEVICE_ID_MATCH_LEDBIT 0x200 |
||
832 | #define INPUT_DEVICE_ID_MATCH_SNDBIT 0x400 |
||
833 | #define INPUT_DEVICE_ID_MATCH_FFBIT 0x800 |
||
834 | |||
835 | #define INPUT_DEVICE_ID_MATCH_DEVICE\ |
||
836 | (INPUT_DEVICE_ID_MATCH_BUS | INPUT_DEVICE_ID_MATCH_VENDOR | INPUT_DEVICE_ID_MATCH_PRODUCT) |
||
837 | #define INPUT_DEVICE_ID_MATCH_DEVICE_AND_VERSION\ |
||
838 | (INPUT_DEVICE_ID_MATCH_DEVICE | INPUT_DEVICE_ID_MATCH_VERSION) |
||
839 | |||
840 | struct input_device_id { |
||
841 | |||
842 | unsigned long flags; |
||
843 | |||
844 | struct input_id id; |
||
845 | |||
846 | unsigned long evbit[NBITS(EV_MAX)]; |
||
847 | unsigned long keybit[NBITS(KEY_MAX)]; |
||
848 | unsigned long relbit[NBITS(REL_MAX)]; |
||
849 | unsigned long absbit[NBITS(ABS_MAX)]; |
||
850 | unsigned long mscbit[NBITS(MSC_MAX)]; |
||
851 | unsigned long ledbit[NBITS(LED_MAX)]; |
||
852 | unsigned long sndbit[NBITS(SND_MAX)]; |
||
853 | unsigned long ffbit[NBITS(FF_MAX)]; |
||
854 | |||
855 | unsigned long driver_info; |
||
856 | }; |
||
857 | |||
858 | struct input_handle; |
||
859 | |||
860 | struct input_handler { |
||
861 | |||
862 | void *private; |
||
863 | |||
864 | void (*event)(struct input_handle *handle, unsigned int type, unsigned int code, int value); |
||
865 | struct input_handle* (*connect)(struct input_handler *handler, struct input_dev *dev, struct input_device_id *id); |
||
866 | void (*disconnect)(struct input_handle *handle); |
||
867 | |||
868 | struct file_operations *fops; |
||
869 | int minor; |
||
870 | char *name; |
||
871 | |||
872 | struct input_device_id *id_table; |
||
873 | |||
874 | struct list_head h_list; |
||
875 | struct list_head node; |
||
876 | }; |
||
877 | |||
878 | struct input_handle { |
||
879 | |||
880 | void *private; |
||
881 | |||
882 | int open; |
||
883 | char *name; |
||
884 | |||
885 | struct input_dev *dev; |
||
886 | struct input_handler *handler; |
||
887 | |||
888 | struct list_head d_node; |
||
889 | struct list_head h_node; |
||
890 | }; |
||
891 | |||
892 | #define to_dev(n) container_of(n,struct input_dev,node) |
||
893 | #define to_handler(n) container_of(n,struct input_handler,node); |
||
894 | #define to_handle(n) container_of(n,struct input_handle,d_node) |
||
895 | #define to_handle_h(n) container_of(n,struct input_handle,h_node) |
||
896 | |||
897 | void input_register_device(struct input_dev *); |
||
898 | void input_unregister_device(struct input_dev *); |
||
899 | |||
900 | void input_register_handler(struct input_handler *); |
||
901 | void input_unregister_handler(struct input_handler *); |
||
902 | |||
903 | int input_grab_device(struct input_handle *); |
||
904 | void input_release_device(struct input_handle *); |
||
905 | |||
906 | int input_open_device(struct input_handle *); |
||
907 | void input_close_device(struct input_handle *); |
||
908 | |||
909 | int input_accept_process(struct input_handle *handle, struct file *file); |
||
910 | int input_flush_device(struct input_handle* handle, struct file* file); |
||
911 | |||
912 | void input_event(struct input_dev *dev, unsigned int type, unsigned int code, int value); |
||
913 | |||
914 | #define input_report_key(a,b,c) input_event(a, EV_KEY, b, !!(c)) |
||
915 | #define input_report_rel(a,b,c) input_event(a, EV_REL, b, c) |
||
916 | #define input_report_abs(a,b,c) input_event(a, EV_ABS, b, c) |
||
917 | #define input_report_ff(a,b,c) input_event(a, EV_FF, b, c) |
||
918 | #define input_report_ff_status(a,b,c) input_event(a, EV_FF_STATUS, b, c) |
||
919 | |||
920 | #define input_regs(a,b) do { (a)->regs = (b); } while (0) |
||
921 | #define input_sync(a) do { input_event(a, EV_SYN, SYN_REPORT, 0); (a)->regs = NULL; } while (0) |
||
922 | |||
923 | extern struct class input_class; |
||
924 | |||
925 | #endif |
||
926 | #endif |