• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /******************************************************************************
2  *
3  *  Copyright (C) 2009-2012 Broadcom Corporation
4  *
5  *  Licensed under the Apache License, Version 2.0 (the "License");
6  *  you may not use this file except in compliance with the License.
7  *  You may obtain a copy of the License at:
8  *
9  *  http://www.apache.org/licenses/LICENSE-2.0
10  *
11  *  Unless required by applicable law or agreed to in writing, software
12  *  distributed under the License is distributed on an "AS IS" BASIS,
13  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  *  See the License for the specific language governing permissions and
15  *  limitations under the License.
16  *
17  ******************************************************************************/
18 
19 #ifndef __UINPUT_H
20 #define __UINPUT_H
21 
22 #ifdef __cplusplus
23 extern "C" {
24 #endif
25 
26 #include <stdint.h>
27 #include <sys/time.h>
28 #include <sys/ioctl.h>
29 
30 /*******************************************************************************
31 **  Constants & Macros
32 ********************************************************************************/
33 
34 /* Events */
35 
36 #define EV_SYN          0x00
37 #define EV_KEY          0x01
38 #define EV_REL          0x02
39 #define EV_ABS          0x03
40 #define EV_MSC          0x04
41 #define EV_LED          0x11
42 #define EV_SND          0x12
43 #define EV_REP          0x14
44 #define EV_FF           0x15
45 #define EV_PWR          0x16
46 #define EV_FF_STATUS        0x17
47 #define EV_MAX          0x1f
48 
49 /* Synchronization events */
50 
51 #define SYN_REPORT      0
52 #define SYN_CONFIG      1
53 
54 /* Keys and buttons */
55 
56 #define KEY_RESERVED        0
57 #define KEY_ESC         1
58 #define KEY_1           2
59 #define KEY_2           3
60 #define KEY_3           4
61 #define KEY_4           5
62 #define KEY_5           6
63 #define KEY_6           7
64 #define KEY_7           8
65 #define KEY_8           9
66 #define KEY_9           10
67 #define KEY_0           11
68 #define KEY_MINUS       12
69 #define KEY_EQUAL       13
70 #define KEY_BACKSPACE       14
71 #define KEY_TAB         15
72 #define KEY_Q           16
73 #define KEY_W           17
74 #define KEY_E           18
75 #define KEY_R           19
76 #define KEY_T           20
77 #define KEY_Y           21
78 #define KEY_U           22
79 #define KEY_I           23
80 #define KEY_O           24
81 #define KEY_P           25
82 #define KEY_LEFTBRACE       26
83 #define KEY_RIGHTBRACE      27
84 #define KEY_ENTER       28
85 #define KEY_LEFTCTRL        29
86 #define KEY_A           30
87 #define KEY_S           31
88 #define KEY_D           32
89 #define KEY_F           33
90 #define KEY_G           34
91 #define KEY_H           35
92 #define KEY_J           36
93 #define KEY_K           37
94 #define KEY_L           38
95 #define KEY_SEMICOLON       39
96 #define KEY_APOSTROPHE      40
97 #define KEY_GRAVE       41
98 #define KEY_LEFTSHIFT       42
99 #define KEY_BACKSLASH       43
100 #define KEY_Z           44
101 #define KEY_X           45
102 #define KEY_C           46
103 #define KEY_V           47
104 #define KEY_B           48
105 #define KEY_N           49
106 #define KEY_M           50
107 #define KEY_COMMA       51
108 #define KEY_DOT         52
109 #define KEY_SLASH       53
110 #define KEY_RIGHTSHIFT      54
111 #define KEY_KPASTERISK      55
112 #define KEY_LEFTALT     56
113 #define KEY_SPACE       57
114 #define KEY_CAPSLOCK        58
115 #define KEY_F1          59
116 #define KEY_F2          60
117 #define KEY_F3          61
118 #define KEY_F4          62
119 #define KEY_F5          63
120 #define KEY_F6          64
121 #define KEY_F7          65
122 #define KEY_F8          66
123 #define KEY_F9          67
124 #define KEY_F10         68
125 #define KEY_NUMLOCK     69
126 #define KEY_SCROLLLOCK      70
127 #define KEY_KP7         71
128 #define KEY_KP8         72
129 #define KEY_KP9         73
130 #define KEY_KPMINUS     74
131 #define KEY_KP4         75
132 #define KEY_KP5         76
133 #define KEY_KP6         77
134 #define KEY_KPPLUS      78
135 #define KEY_KP1         79
136 #define KEY_KP2         80
137 #define KEY_KP3         81
138 #define KEY_KP0         82
139 #define KEY_KPDOT       83
140 #define KEY_103RD       84
141 #define KEY_F13         85
142 #define KEY_102ND       86
143 #define KEY_F11         87
144 #define KEY_F12         88
145 #define KEY_F14         89
146 #define KEY_F15         90
147 #define KEY_F16         91
148 #define KEY_F17         92
149 #define KEY_F18         93
150 #define KEY_F19         94
151 #define KEY_F20         95
152 #define KEY_KPENTER     96
153 #define KEY_RIGHTCTRL       97
154 #define KEY_KPSLASH     98
155 #define KEY_SYSRQ       99
156 #define KEY_RIGHTALT        100
157 #define KEY_LINEFEED        101
158 #define KEY_HOME        102
159 #define KEY_UP          103
160 #define KEY_PAGEUP      104
161 #define KEY_LEFT        105
162 #define KEY_RIGHT       106
163 #define KEY_END         107
164 #define KEY_DOWN        108
165 #define KEY_PAGEDOWN        109
166 #define KEY_INSERT      110
167 #define KEY_DELETE      111
168 #define KEY_MACRO       112
169 #define KEY_MUTE        113
170 #define KEY_VOLUMEDOWN      114
171 #define KEY_VOLUMEUP        115
172 #define KEY_POWER       116
173 #define KEY_KPEQUAL     117
174 #define KEY_KPPLUSMINUS     118
175 #define KEY_PAUSE       119
176 #define KEY_F21         120
177 #define KEY_F22         121
178 #define KEY_F23         122
179 #define KEY_F24         123
180 #define KEY_KPCOMMA     124
181 #define KEY_LEFTMETA        125
182 #define KEY_RIGHTMETA       126
183 #define KEY_COMPOSE     127
184 
185 #define KEY_STOP        128
186 #define KEY_AGAIN       129
187 #define KEY_PROPS       130
188 #define KEY_UNDO        131
189 #define KEY_FRONT       132
190 #define KEY_COPY        133
191 #define KEY_OPEN        134
192 #define KEY_PASTE       135
193 #define KEY_FIND        136
194 #define KEY_CUT         137
195 #define KEY_HELP        138
196 #define KEY_MENU        139
197 #define KEY_CALC        140
198 #define KEY_SETUP       141
199 #define KEY_SLEEP       142
200 #define KEY_WAKEUP      143
201 #define KEY_FILE        144
202 #define KEY_SENDFILE        145
203 #define KEY_DELETEFILE      146
204 #define KEY_XFER        147
205 #define KEY_PROG1       148
206 #define KEY_PROG2       149
207 #define KEY_WWW         150
208 #define KEY_MSDOS       151
209 #define KEY_COFFEE      152
210 #define KEY_DIRECTION       153
211 #define KEY_CYCLEWINDOWS    154
212 #define KEY_MAIL        155
213 #define KEY_BOOKMARKS       156
214 #define KEY_COMPUTER        157
215 #define KEY_BACK        158
216 #define KEY_FORWARD     159
217 #define KEY_CLOSECD     160
218 #define KEY_EJECTCD     161
219 #define KEY_EJECTCLOSECD    162
220 #define KEY_NEXTSONG        163
221 #define KEY_PLAYPAUSE       164
222 #define KEY_PREVIOUSSONG    165
223 #define KEY_STOPCD      166
224 #define KEY_RECORD      167
225 #define KEY_REWIND      168
226 #define KEY_PHONE       169
227 #define KEY_ISO         170
228 #define KEY_CONFIG      171
229 #define KEY_HOMEPAGE        172
230 #define KEY_REFRESH     173
231 #define KEY_EXIT        174
232 #define KEY_MOVE        175
233 #define KEY_EDIT        176
234 #define KEY_SCROLLUP        177
235 #define KEY_SCROLLDOWN      178
236 #define KEY_KPLEFTPAREN     179
237 #define KEY_KPRIGHTPAREN    180
238 
239 #define KEY_INTL1       181
240 #define KEY_INTL2       182
241 #define KEY_INTL3       183
242 #define KEY_INTL4       184
243 #define KEY_INTL5       185
244 #define KEY_INTL6       186
245 #define KEY_INTL7       187
246 #define KEY_INTL8       188
247 #define KEY_INTL9       189
248 #define KEY_LANG1       190
249 #define KEY_LANG2       191
250 #define KEY_LANG3       192
251 #define KEY_LANG4       193
252 #define KEY_LANG5       194
253 #define KEY_LANG6       195
254 #define KEY_LANG7       196
255 #define KEY_LANG8       197
256 #define KEY_LANG9       198
257 
258 #define KEY_PLAYCD      200
259 #define KEY_PAUSECD     201
260 #define KEY_PROG3       202
261 #define KEY_PROG4       203
262 #define KEY_SUSPEND     205
263 #define KEY_CLOSE       206
264 #define KEY_PLAY        207
265 
266 #define KEY_UNKNOWN     220
267 
268 #define KEY_BRIGHTNESSDOWN  224
269 #define KEY_BRIGHTNESSUP    225
270 
271 #define BTN_MISC        0x100
272 #define BTN_0           0x100
273 #define BTN_1           0x101
274 #define BTN_2           0x102
275 #define BTN_3           0x103
276 #define BTN_4           0x104
277 #define BTN_5           0x105
278 #define BTN_6           0x106
279 #define BTN_7           0x107
280 #define BTN_8           0x108
281 #define BTN_9           0x109
282 
283 #define BTN_MOUSE       0x110
284 #define BTN_LEFT        0x110
285 #define BTN_RIGHT       0x111
286 #define BTN_MIDDLE      0x112
287 #define BTN_SIDE        0x113
288 #define BTN_EXTRA       0x114
289 #define BTN_FORWARD     0x115
290 #define BTN_BACK        0x116
291 #define BTN_TASK        0x117
292 
293 #define BTN_JOYSTICK        0x120
294 #define BTN_TRIGGER     0x120
295 #define BTN_THUMB       0x121
296 #define BTN_THUMB2      0x122
297 #define BTN_TOP         0x123
298 #define BTN_TOP2        0x124
299 #define BTN_PINKIE      0x125
300 #define BTN_BASE        0x126
301 #define BTN_BASE2       0x127
302 #define BTN_BASE3       0x128
303 #define BTN_BASE4       0x129
304 #define BTN_BASE5       0x12a
305 #define BTN_BASE6       0x12b
306 #define BTN_DEAD        0x12f
307 
308 #define BTN_GAMEPAD     0x130
309 #define BTN_A           0x130
310 #define BTN_B           0x131
311 #define BTN_C           0x132
312 #define BTN_X           0x133
313 #define BTN_Y           0x134
314 #define BTN_Z           0x135
315 #define BTN_TL          0x136
316 #define BTN_TR          0x137
317 #define BTN_TL2         0x138
318 #define BTN_TR2         0x139
319 #define BTN_SELECT      0x13a
320 #define BTN_START       0x13b
321 #define BTN_MODE        0x13c
322 #define BTN_THUMBL      0x13d
323 #define BTN_THUMBR      0x13e
324 
325 #define BTN_DIGI        0x140
326 #define BTN_TOOL_PEN        0x140
327 #define BTN_TOOL_RUBBER     0x141
328 #define BTN_TOOL_BRUSH      0x142
329 #define BTN_TOOL_PENCIL     0x143
330 #define BTN_TOOL_AIRBRUSH   0x144
331 #define BTN_TOOL_FINGER     0x145
332 #define BTN_TOOL_MOUSE      0x146
333 #define BTN_TOOL_LENS       0x147
334 #define BTN_TOUCH       0x14a
335 #define BTN_STYLUS      0x14b
336 #define BTN_STYLUS2     0x14c
337 #define BTN_TOOL_DOUBLETAP  0x14d
338 #define BTN_TOOL_TRIPLETAP  0x14e
339 
340 #define BTN_WHEEL       0x150
341 #define BTN_GEAR_DOWN       0x150
342 #define BTN_GEAR_UP     0x151
343 
344 #define KEY_OK          0x160
345 #define KEY_SELECT      0x161
346 #define KEY_GOTO        0x162
347 #define KEY_CLEAR       0x163
348 #define KEY_POWER2      0x164
349 #define KEY_OPTION      0x165
350 #define KEY_INFO        0x166
351 #define KEY_TIME        0x167
352 #define KEY_VENDOR      0x168
353 #define KEY_ARCHIVE     0x169
354 #define KEY_PROGRAM     0x16a
355 #define KEY_CHANNEL     0x16b
356 #define KEY_FAVORITES       0x16c
357 #define KEY_EPG         0x16d
358 #define KEY_PVR         0x16e
359 #define KEY_MHP         0x16f
360 #define KEY_LANGUAGE        0x170
361 #define KEY_TITLE       0x171
362 #define KEY_SUBTITLE        0x172
363 #define KEY_ANGLE       0x173
364 #define KEY_ZOOM        0x174
365 #define KEY_MODE        0x175
366 #define KEY_KEYBOARD        0x176
367 #define KEY_SCREEN      0x177
368 #define KEY_PC          0x178
369 #define KEY_TV          0x179
370 #define KEY_TV2         0x17a
371 #define KEY_VCR         0x17b
372 #define KEY_VCR2        0x17c
373 #define KEY_SAT         0x17d
374 #define KEY_SAT2        0x17e
375 #define KEY_CD          0x17f
376 #define KEY_TAPE        0x180
377 #define KEY_RADIO       0x181
378 #define KEY_TUNER       0x182
379 #define KEY_PLAYER      0x183
380 #define KEY_TEXT        0x184
381 #define KEY_DVD         0x185
382 #define KEY_AUX         0x186
383 #define KEY_MP3         0x187
384 #define KEY_AUDIO       0x188
385 #define KEY_VIDEO       0x189
386 #define KEY_DIRECTORY       0x18a
387 #define KEY_LIST        0x18b
388 #define KEY_MEMO        0x18c
389 #define KEY_CALENDAR        0x18d
390 #define KEY_RED         0x18e
391 #define KEY_GREEN       0x18f
392 #define KEY_YELLOW      0x190
393 #define KEY_BLUE        0x191
394 #define KEY_CHANNELUP       0x192
395 #define KEY_CHANNELDOWN     0x193
396 #define KEY_FIRST       0x194
397 #define KEY_LAST        0x195
398 #define KEY_AB          0x196
399 #define KEY_NEXT        0x197
400 #define KEY_RESTART     0x198
401 #define KEY_SLOW        0x199
402 #define KEY_SHUFFLE     0x19a
403 #define KEY_BREAK       0x19b
404 #define KEY_PREVIOUS        0x19c
405 #define KEY_DIGITS      0x19d
406 #define KEY_TEEN        0x19e
407 #define KEY_TWEN        0x19f
408 
409 #define KEY_FRAMEBACK       0x1b2
410 #define KEY_FRAMEFORWARD    0x1b3
411 #define KEY_CONTEXT_MENU    0x1fb
412 
413 #define KEY_MAX         0x1ff
414 
415 /* Relative axes */
416 
417 #define REL_X           0x00
418 #define REL_Y           0x01
419 #define REL_Z           0x02
420 #define REL_RX          0x03
421 #define REL_RY          0x04
422 #define REL_RZ          0x05
423 #define REL_HWHEEL      0x06
424 #define REL_DIAL        0x07
425 #define REL_WHEEL       0x08
426 #define REL_MISC        0x09
427 #define REL_MAX         0x0f
428 
429 /* Absolute axes */
430 
431 #define ABS_X           0x00
432 #define ABS_Y           0x01
433 #define ABS_Z           0x02
434 #define ABS_RX          0x03
435 #define ABS_RY          0x04
436 #define ABS_RZ          0x05
437 #define ABS_THROTTLE        0x06
438 #define ABS_RUDDER      0x07
439 #define ABS_WHEEL       0x08
440 #define ABS_GAS         0x09
441 #define ABS_BRAKE       0x0a
442 #define ABS_HAT0X       0x10
443 #define ABS_HAT0Y       0x11
444 #define ABS_HAT1X       0x12
445 #define ABS_HAT1Y       0x13
446 #define ABS_HAT2X       0x14
447 #define ABS_HAT2Y       0x15
448 #define ABS_HAT3X       0x16
449 #define ABS_HAT3Y       0x17
450 #define ABS_PRESSURE        0x18
451 #define ABS_DISTANCE        0x19
452 #define ABS_TILT_X      0x1a
453 #define ABS_TILT_Y      0x1b
454 #define ABS_TOOL_WIDTH      0x1c
455 #define ABS_VOLUME      0x20
456 #define ABS_MISC        0x28
457 #define ABS_MAX         0x3f
458 
459 /* Switch events */
460 
461 #define SW_0            0x00
462 #define SW_1            0x01
463 #define SW_2            0x02
464 #define SW_3            0x03
465 #define SW_4            0x04
466 #define SW_5            0x05
467 #define SW_6            0x06
468 #define SW_7            0x07
469 #define SW_MAX          0x0f
470 
471 /* Misc events */
472 
473 #define MSC_SERIAL      0x00
474 #define MSC_PULSELED        0x01
475 #define MSC_GESTURE     0x02
476 #define MSC_RAW         0x03
477 #define MSC_SCAN        0x04
478 #define MSC_MAX         0x07
479 
480 /* LEDs */
481 
482 #define LED_NUML        0x00
483 #define LED_CAPSL       0x01
484 #define LED_SCROLLL     0x02
485 #define LED_COMPOSE     0x03
486 #define LED_KANA        0x04
487 #define LED_SLEEP       0x05
488 #define LED_SUSPEND     0x06
489 #define LED_MUTE        0x07
490 #define LED_MISC        0x08
491 #define LED_MAIL        0x09
492 #define LED_CHARGING        0x0a
493 #define LED_MAX         0x0f
494 
495 /* Autorepeat values */
496 
497 #define REP_DELAY       0x00
498 #define REP_PERIOD      0x01
499 #define REP_MAX         0x01
500 
501 /* Sounds */
502 
503 #define SND_CLICK       0x00
504 #define SND_BELL        0x01
505 #define SND_TONE        0x02
506 #define SND_MAX         0x07
507 
508 /* Identifiers */
509 
510 #define ID_BUS          0
511 #define ID_VENDOR       1
512 #define ID_PRODUCT      2
513 #define ID_VERSION      3
514 
515 #define BUS_PCI         0x01
516 #define BUS_ISAPNP      0x02
517 #define BUS_USB         0x03
518 #define BUS_HIL         0x04
519 #define BUS_BLUETOOTH       0x05
520 
521 #define BUS_ISA         0x10
522 #define BUS_I8042       0x11
523 #define BUS_XTKBD       0x12
524 #define BUS_RS232       0x13
525 #define BUS_GAMEPORT        0x14
526 #define BUS_PARPORT     0x15
527 #define BUS_AMIGA       0x16
528 #define BUS_ADB         0x17
529 #define BUS_I2C         0x18
530 #define BUS_HOST        0x19
531 #define BUS_GSC         0x1A
532 
533 /* User input interface */
534 
535 #define UINPUT_IOCTL_BASE   'U'
536 
537 #define UI_DEV_CREATE       _IO(UINPUT_IOCTL_BASE, 1)
538 #define UI_DEV_DESTROY      _IO(UINPUT_IOCTL_BASE, 2)
539 
540 #define UI_SET_EVBIT        _IOW(UINPUT_IOCTL_BASE, 100, int)
541 #define UI_SET_KEYBIT       _IOW(UINPUT_IOCTL_BASE, 101, int)
542 #define UI_SET_RELBIT       _IOW(UINPUT_IOCTL_BASE, 102, int)
543 #define UI_SET_ABSBIT       _IOW(UINPUT_IOCTL_BASE, 103, int)
544 #define UI_SET_MSCBIT       _IOW(UINPUT_IOCTL_BASE, 104, int)
545 #define UI_SET_LEDBIT       _IOW(UINPUT_IOCTL_BASE, 105, int)
546 #define UI_SET_SNDBIT       _IOW(UINPUT_IOCTL_BASE, 106, int)
547 #define UI_SET_FFBIT        _IOW(UINPUT_IOCTL_BASE, 107, int)
548 #define UI_SET_PHYS     _IOW(UINPUT_IOCTL_BASE, 108, char*)
549 #define UI_SET_SWBIT        _IOW(UINPUT_IOCTL_BASE, 109, int)
550 
551 #ifndef NBITS
552 #define NBITS(x) ((((x) - 1) / (sizeof(long) * 8)) + 1)
553 #endif
554 
555 #define UINPUT_MAX_NAME_SIZE    80
556 
557 
558 /*******************************************************************************
559 **  Type definitions and return values
560 ********************************************************************************/
561 
562 struct uinput_id {
563     uint16_t bustype;
564     uint16_t vendor;
565     uint16_t product;
566     uint16_t version;
567 };
568 
569 struct uinput_dev {
570     char name[UINPUT_MAX_NAME_SIZE];
571     struct uinput_id id;
572     int ff_effects_max;
573     int absmax[ABS_MAX + 1];
574     int absmin[ABS_MAX + 1];
575     int absfuzz[ABS_MAX + 1];
576     int absflat[ABS_MAX + 1];
577 };
578 
579 struct uinput_event {
580     struct timeval time;
581     uint16_t type;
582     uint16_t code;
583     int32_t value;
584 };
585 
586 #ifdef __cplusplus
587 }
588 #endif
589 
590 #endif /* __UINPUT_H */
591