NSMBW-Decomp
A decompilation of New Super Mario Bros. Wii
Loading...
Searching...
No Matches
uinput.h
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
23extern "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
562struct uinput_id {
563 uint16_t bustype;
564 uint16_t vendor;
565 uint16_t product;
566 uint16_t version;
567};
568
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
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 */