• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* Copyright (C) 2007-2008 The Android Open Source Project
2 **
3 ** This software is licensed under the terms of the GNU General Public
4 ** License version 2, as published by the Free Software Foundation, and
5 ** may be copied, distributed, and modified under those terms.
6 **
7 ** This program is distributed in the hope that it will be useful,
8 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
9 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10 ** GNU General Public License for more details.
11 */
12 #ifndef _ANDROID_HW_EVENTS_H
13 #define _ANDROID_HW_EVENTS_H
14 
15 #include "android/utils/system.h"
16 
17 /* from the Linux kernel */
18 
19 #define  EVENT_TYPE_LIST  \
20   EV_TYPE(SYN,0x00)   \
21   EV_TYPE(KEY,0x01)   \
22   EV_TYPE(REL,0x02)   \
23   EV_TYPE(ABS,0x03)   \
24   EV_TYPE(MSC,0x04)   \
25   EV_TYPE(SW, 0x05)   \
26   EV_TYPE(LED,0x11)   \
27   EV_TYPE(SND,0x12)   \
28   EV_TYPE(REP,0x14)   \
29   EV_TYPE(FF, 0x15)   \
30   EV_TYPE(PWR,0x16)   \
31   EV_TYPE(FF_STATUS,0x17)  \
32   EV_TYPE(MAX,0x1f)
33 
34 #undef  EV_TYPE
35 #define EV_TYPE(n,v)    GLUE(EV_,n) = v,
36 typedef enum {
37     EVENT_TYPE_LIST
38 } EventType;
39 #undef  EV_TYPE
40 
41 /* BEWARE: The following codes are defined by the Linux kernel headers.
42  *         The Android "Menu" key is KEY_SOFT1, *not* KEY_MENU
43  */
44 /* NOTE: mingw's winnt.h define DELETE to constant
45    i586-mingw32msvc:       #define DELETE  0x00010000L
46    x86_64-w64-mingw32-gcc: #define DELETE  (0x00010000L)
47 
48    KEY_CODE belows glues "KEY_" and "DELETE".
49    While KEY_0x00010000L may not mean anything,
50    KEY_(0x00010000L) is absolutely harmful to compiler.
51    Undefine DELETE below
52  */
53 #undef DELETE
54 
55 #define  EVENT_KEY_LIST \
56    KEY_CODE(ESC         ,1)     \
57    KEY_CODE(1           ,2)     \
58    KEY_CODE(2           ,3)     \
59    KEY_CODE(3           ,4)     \
60    KEY_CODE(4           ,5)     \
61    KEY_CODE(5           ,6)     \
62    KEY_CODE(6           ,7)     \
63    KEY_CODE(7           ,8)     \
64    KEY_CODE(8           ,9)     \
65    KEY_CODE(9           ,10)    \
66    KEY_CODE(0           ,11)    \
67    KEY_CODE(MINUS       ,12)    \
68    KEY_CODE(EQUAL       ,13)    \
69    KEY_CODE(BACKSPACE   ,14)    \
70    KEY_CODE(TAB         ,15)    \
71    KEY_CODE(Q           ,16)    \
72    KEY_CODE(W           ,17)    \
73    KEY_CODE(E           ,18)    \
74    KEY_CODE(R           ,19)    \
75    KEY_CODE(T           ,20)    \
76    KEY_CODE(Y           ,21)    \
77    KEY_CODE(U           ,22)    \
78    KEY_CODE(I           ,23)    \
79    KEY_CODE(O           ,24)    \
80    KEY_CODE(P           ,25)    \
81    KEY_CODE(LEFTBRACE   ,26)    \
82    KEY_CODE(RIGHTBRACE  ,27)    \
83    KEY_CODE(ENTER       ,28)    \
84    KEY_CODE(LEFTCTRL    ,29)    \
85    KEY_CODE(A           ,30)    \
86    KEY_CODE(S           ,31)    \
87    KEY_CODE(D           ,32)    \
88    KEY_CODE(F           ,33)    \
89    KEY_CODE(G           ,34)    \
90    KEY_CODE(H           ,35)    \
91    KEY_CODE(J           ,36)    \
92    KEY_CODE(K           ,37)    \
93    KEY_CODE(L           ,38)    \
94    KEY_CODE(SEMICOLON   ,39)    \
95    KEY_CODE(APOSTROPHE  ,40)    \
96    KEY_CODE(GRAVE       ,41)    \
97    KEY_CODE(LEFTSHIFT   ,42)    \
98    KEY_CODE(BACKSLASH   ,43)    \
99    KEY_CODE(Z           ,44)    \
100    KEY_CODE(X           ,45)    \
101    KEY_CODE(C           ,46)    \
102    KEY_CODE(V           ,47)    \
103    KEY_CODE(B           ,48)    \
104    KEY_CODE(N           ,49)    \
105    KEY_CODE(M           ,50)    \
106    KEY_CODE(COMMA       ,51)    \
107    KEY_CODE(DOT         ,52)    \
108    KEY_CODE(SLASH       ,53)    \
109    KEY_CODE(RIGHTSHIFT  ,54)    \
110    KEY_CODE(KPASTERISK  ,55)    \
111    KEY_CODE(LEFTALT     ,56)    \
112    KEY_CODE(SPACE       ,57)    \
113    KEY_CODE(CAPSLOCK    ,58)    \
114    KEY_CODE(F1          ,59)    \
115    KEY_CODE(F2          ,60)    \
116    KEY_CODE(F3          ,61)    \
117    KEY_CODE(F4          ,62)    \
118    KEY_CODE(F5          ,63)    \
119    KEY_CODE(F6          ,64)    \
120    KEY_CODE(F7          ,65)    \
121    KEY_CODE(F8          ,66)    \
122    KEY_CODE(F9          ,67)    \
123    KEY_CODE(F10         ,68)    \
124    KEY_CODE(NUMLOCK     ,69)    \
125    KEY_CODE(SCROLLLOCK  ,70)    \
126    KEY_CODE(KP7         ,71)    \
127    KEY_CODE(KP8         ,72)    \
128    KEY_CODE(KP9         ,73)    \
129    KEY_CODE(KPMINUS     ,74)    \
130    KEY_CODE(KP4         ,75)    \
131    KEY_CODE(KP5         ,76)    \
132    KEY_CODE(KP6         ,77)    \
133    KEY_CODE(KPPLUS      ,78)    \
134    KEY_CODE(KP1         ,79)    \
135    KEY_CODE(KP2         ,80)    \
136    KEY_CODE(KP3         ,81)    \
137    KEY_CODE(KP0         ,82)    \
138    KEY_CODE(KPDOT       ,83)    \
139    KEY_CODE(ZENKAKUHANKAKU,85)    \
140    KEY_CODE(102ND       ,86)    \
141    KEY_CODE(F11         ,87)    \
142    KEY_CODE(F12         ,88)    \
143    KEY_CODE(RO          ,89)    \
144    KEY_CODE(KATAKANA    ,90)    \
145    KEY_CODE(HIRAGANA    ,91)    \
146    KEY_CODE(HENKAN      ,92)    \
147    KEY_CODE(KATAKANAHIRAGANA,93)    \
148    KEY_CODE(MUHENKAN    ,94)    \
149    KEY_CODE(KPJPCOMMA   ,95)    \
150    KEY_CODE(KPENTER     ,96)    \
151    KEY_CODE(RIGHTCTRL   ,97)    \
152    KEY_CODE(KPSLASH     ,98)    \
153    KEY_CODE(SYSRQ       ,99)    \
154    KEY_CODE(RIGHTALT    ,100)   \
155    KEY_CODE(LINEFEED    ,101)   \
156    KEY_CODE(HOME        ,102)   \
157    KEY_CODE(UP          ,103)   \
158    KEY_CODE(PAGEUP      ,104)   \
159    KEY_CODE(LEFT        ,105)   \
160    KEY_CODE(RIGHT       ,106)   \
161    KEY_CODE(END         ,107)   \
162    KEY_CODE(DOWN        ,108)   \
163    KEY_CODE(PAGEDOWN    ,109)   \
164    KEY_CODE(INSERT      ,110)   \
165    KEY_CODE(DELETE      ,111)   \
166    KEY_CODE(MACRO       ,112)   \
167    KEY_CODE(MUTE        ,113)   \
168    KEY_CODE(VOLUMEDOWN  ,114)   \
169    KEY_CODE(VOLUMEUP    ,115)   \
170    KEY_CODE(POWER       ,116)   \
171    KEY_CODE(KPEQUAL     ,117)   \
172    KEY_CODE(KPPLUSMINUS ,118)   \
173    KEY_CODE(PAUSE       ,119)   \
174    KEY_CODE(KPCOMMA     ,121)   \
175    KEY_CODE(HANGEUL     ,122)   \
176    KEY_CODE(HANJA       ,123)   \
177    KEY_CODE(YEN         ,124)   \
178    KEY_CODE(LEFTMETA    ,125)   \
179    KEY_CODE(RIGHTMETA   ,126)   \
180    KEY_CODE(COMPOSE     ,127)   \
181    KEY_CODE(STOP        ,128)   \
182    KEY_CODE(AGAIN       ,129)   \
183    KEY_CODE(PROPS       ,130)   \
184    KEY_CODE(UNDO        ,131)   \
185    KEY_CODE(FRONT       ,132)   \
186    KEY_CODE(COPY        ,133)   \
187    KEY_CODE(OPEN        ,134)   \
188    KEY_CODE(PASTE       ,135)   \
189    KEY_CODE(FIND        ,136)   \
190    KEY_CODE(CUT         ,137)   \
191    KEY_CODE(HELP        ,138)   \
192    KEY_CODE(MENU        ,139)   \
193    KEY_CODE(CALC        ,140)   \
194    KEY_CODE(SETUP       ,141)   \
195    KEY_CODE(SLEEP       ,142)   \
196    KEY_CODE(WAKEUP      ,143)   \
197    KEY_CODE(FILE        ,144)   \
198    KEY_CODE(SENDFILE    ,145)   \
199    KEY_CODE(DELETEFILE  ,146)   \
200    KEY_CODE(XFER        ,147)   \
201    KEY_CODE(PROG1       ,148)   \
202    KEY_CODE(PROG2       ,149)   \
203    KEY_CODE(WWW         ,150)   \
204    KEY_CODE(MSDOS       ,151)   \
205    KEY_CODE(COFFEE      ,152)   \
206    KEY_CODE(DIRECTION   ,153)   \
207    KEY_CODE(CYCLEWINDOWS,154)   \
208    KEY_CODE(MAIL        ,155)   \
209    KEY_CODE(BOOKMARKS   ,156)   \
210    KEY_CODE(COMPUTER    ,157)   \
211    KEY_CODE(BACK        ,158)   \
212    KEY_CODE(FORWARD     ,159)   \
213    KEY_CODE(CLOSECD     ,160)   \
214    KEY_CODE(EJECTCD     ,161)   \
215    KEY_CODE(EJECTCLOSECD,162)   \
216    KEY_CODE(NEXTSONG    ,163)   \
217    KEY_CODE(PLAYPAUSE   ,164)   \
218    KEY_CODE(PREVIOUSSONG,165)   \
219    KEY_CODE(STOPCD      ,166)   \
220    KEY_CODE(RECORD      ,167)   \
221    KEY_CODE(REWIND      ,168)   \
222    KEY_CODE(PHONE       ,169)   \
223    KEY_CODE(ISO         ,170)   \
224    KEY_CODE(CONFIG      ,171)   \
225    KEY_CODE(HOMEPAGE    ,172)   \
226    KEY_CODE(REFRESH     ,173)   \
227    KEY_CODE(EXIT        ,174)   \
228    KEY_CODE(MOVE        ,175)   \
229    KEY_CODE(EDIT        ,176)   \
230    KEY_CODE(SCROLLUP    ,177)   \
231    KEY_CODE(SCROLLDOWN  ,178)   \
232    KEY_CODE(KPLEFTPAREN ,179)   \
233    KEY_CODE(KPRIGHTPAREN,180)   \
234    KEY_CODE(NEW         ,181)   \
235    KEY_CODE(REDO        ,182)   \
236    KEY_CODE(F13         ,183)   \
237    KEY_CODE(F14         ,184)   \
238    KEY_CODE(F15         ,185)   \
239    KEY_CODE(F16         ,186)   \
240    KEY_CODE(F17         ,187)   \
241    KEY_CODE(F18         ,188)   \
242    KEY_CODE(F19         ,189)   \
243    KEY_CODE(F20         ,190)   \
244    KEY_CODE(F21         ,191)   \
245    KEY_CODE(F22         ,192)   \
246    KEY_CODE(F23         ,193)   \
247    KEY_CODE(F24         ,194)   \
248    KEY_CODE(PLAYCD      ,200)   \
249    KEY_CODE(PAUSECD     ,201)   \
250    KEY_CODE(PROG3       ,202)   \
251    KEY_CODE(PROG4       ,203)   \
252    KEY_CODE(SUSPEND     ,205)   \
253    KEY_CODE(CLOSE       ,206)   \
254    KEY_CODE(PLAY        ,207)   \
255    KEY_CODE(FASTFORWARD ,208)   \
256    KEY_CODE(BASSBOOST   ,209)   \
257    KEY_CODE(PRINT       ,210)   \
258    KEY_CODE(HP          ,211)   \
259    KEY_CODE(CAMERA      ,212)   \
260    KEY_CODE(SOUND       ,213)   \
261    KEY_CODE(QUESTION    ,214)   \
262    KEY_CODE(EMAIL       ,215)   \
263    KEY_CODE(CHAT        ,216)   \
264    KEY_CODE(SEARCH      ,217)   \
265    KEY_CODE(CONNECT     ,218)   \
266    KEY_CODE(FINANCE     ,219)   \
267    KEY_CODE(SPORT       ,220)   \
268    KEY_CODE(SHOP        ,221)   \
269    KEY_CODE(ALTERASE    ,222)   \
270    KEY_CODE(CANCEL      ,223)   \
271    KEY_CODE(BRIGHTNESSDOWN,224)   \
272    KEY_CODE(BRIGHTNESSUP,225)   \
273    KEY_CODE(MEDIA       ,226)   \
274    KEY_CODE(STAR        ,227)   \
275    KEY_CODE(SHARP       ,228)   \
276    KEY_CODE(SOFT1       ,229)   \
277    KEY_CODE(SOFT2       ,230)   \
278    KEY_CODE(SEND        ,231)   \
279    KEY_CODE(CENTER      ,232)   \
280    KEY_CODE(HEADSETHOOK ,233)   \
281    KEY_CODE(0_5         ,234)   \
282    KEY_CODE(2_5         ,235)   \
283    KEY_CODE(SWITCHVIDEOMODE,236)   \
284    KEY_CODE(KBDILLUMTOGGLE,237)   \
285    KEY_CODE(KBDILLUMDOWN,238)   \
286    KEY_CODE(KBDILLUMUP  ,239)   \
287    KEY_CODE(REPLY       ,232)   \
288    KEY_CODE(FORWARDMAIL ,233)   \
289    KEY_CODE(SAVE        ,234)   \
290    KEY_CODE(DOCUMENTS   ,235)   \
291    KEY_CODE(BATTERY     ,236)   \
292    KEY_CODE(UNKNOWN     ,240)   \
293    KEY_CODE(NUM         ,241)   \
294    KEY_CODE(FOCUS       ,242)   \
295    KEY_CODE(PLUS        ,243)   \
296    KEY_CODE(NOTIFICATION,244)   \
297    KEY_CODE(OK          ,0x160)  \
298    KEY_CODE(SELECT      ,0x161)  \
299    KEY_CODE(GOTO        ,0x162)  \
300    KEY_CODE(CLEAR       ,0x163)  \
301    KEY_CODE(POWER2      ,0x164)  \
302    KEY_CODE(OPTION      ,0x165)  \
303    KEY_CODE(INFO        ,0x166)  \
304    KEY_CODE(TIME        ,0x167)  \
305    KEY_CODE(VENDOR      ,0x168)  \
306    KEY_CODE(ARCHIVE     ,0x169)  \
307    KEY_CODE(PROGRAM     ,0x16a)  \
308    KEY_CODE(CHANNEL     ,0x16b)  \
309    KEY_CODE(FAVORITES   ,0x16c)  \
310    KEY_CODE(EPG         ,0x16d)  \
311    KEY_CODE(PVR         ,0x16e)  \
312    KEY_CODE(MHP         ,0x16f)  \
313    KEY_CODE(LANGUAGE    ,0x170)  \
314    KEY_CODE(TITLE       ,0x171)  \
315    KEY_CODE(SUBTITLE    ,0x172)  \
316    KEY_CODE(ANGLE       ,0x173)  \
317    KEY_CODE(ZOOM        ,0x174)  \
318    KEY_CODE(MODE        ,0x175)  \
319    KEY_CODE(KEYBOARD    ,0x176)  \
320    KEY_CODE(SCREEN      ,0x177)  \
321    KEY_CODE(PC          ,0x178)  \
322    KEY_CODE(TV          ,0x179)  \
323    KEY_CODE(TV2         ,0x17a)  \
324    KEY_CODE(VCR         ,0x17b)  \
325    KEY_CODE(VCR2        ,0x17c)  \
326    KEY_CODE(SAT         ,0x17d)  \
327    KEY_CODE(SAT2        ,0x17e)  \
328    KEY_CODE(CD          ,0x17f)  \
329    KEY_CODE(TAPE        ,0x180)  \
330    KEY_CODE(RADIO       ,0x181)  \
331    KEY_CODE(TUNER       ,0x182)  \
332    KEY_CODE(PLAYER      ,0x183)  \
333    KEY_CODE(TEXT        ,0x184)  \
334    KEY_CODE(DVD         ,0x185)  \
335    KEY_CODE(AUX         ,0x186)  \
336    KEY_CODE(MP3         ,0x187)  \
337    KEY_CODE(AUDIO       ,0x188)  \
338    KEY_CODE(VIDEO       ,0x189)  \
339    KEY_CODE(DIRECTORY   ,0x18a)  \
340    KEY_CODE(LIST        ,0x18b)  \
341    KEY_CODE(MEMO        ,0x18c)  \
342    KEY_CODE(CALENDAR    ,0x18d)  \
343    KEY_CODE(RED         ,0x18e)  \
344    KEY_CODE(GREEN       ,0x18f)  \
345    KEY_CODE(YELLOW      ,0x190)  \
346    KEY_CODE(BLUE        ,0x191)  \
347    KEY_CODE(CHANNELUP   ,0x192)  \
348    KEY_CODE(CHANNELDOWN ,0x193)  \
349    KEY_CODE(FIRST       ,0x194)  \
350    KEY_CODE(LAST        ,0x195)  \
351    KEY_CODE(AB          ,0x196)  \
352    KEY_CODE(NEXT        ,0x197)  \
353    KEY_CODE(RESTART     ,0x198)  \
354    KEY_CODE(SLOW        ,0x199)  \
355    KEY_CODE(SHUFFLE     ,0x19a)  \
356    KEY_CODE(BREAK       ,0x19b)  \
357    KEY_CODE(PREVIOUS    ,0x19c)  \
358    KEY_CODE(DIGITS      ,0x19d)  \
359    KEY_CODE(TEEN        ,0x19e)  \
360    KEY_CODE(TWEN        ,0x19f)  \
361    KEY_CODE(DEL_EOL     ,0x1c0)  \
362    KEY_CODE(DEL_EOS     ,0x1c1)  \
363    KEY_CODE(INS_LINE    ,0x1c2)  \
364    KEY_CODE(DEL_LINE    ,0x1c3)  \
365    KEY_CODE(FN          ,0x1d0)  \
366    KEY_CODE(FN_ESC      ,0x1d1)  \
367    KEY_CODE(FN_F1       ,0x1d2)  \
368    KEY_CODE(FN_F2       ,0x1d3)  \
369    KEY_CODE(FN_F3       ,0x1d4)  \
370    KEY_CODE(FN_F4       ,0x1d5)  \
371    KEY_CODE(FN_F5       ,0x1d6)  \
372    KEY_CODE(FN_F6       ,0x1d7)  \
373    KEY_CODE(FN_F7       ,0x1d8)  \
374    KEY_CODE(FN_F8       ,0x1d9)  \
375    KEY_CODE(FN_F9       ,0x1da)  \
376    KEY_CODE(FN_F10      ,0x1db)  \
377    KEY_CODE(FN_F11      ,0x1dc)  \
378    KEY_CODE(FN_F12      ,0x1dd)  \
379    KEY_CODE(FN_1        ,0x1de)  \
380    KEY_CODE(FN_2        ,0x1df)  \
381    KEY_CODE(FN_D        ,0x1e0)  \
382    KEY_CODE(FN_E        ,0x1e1)  \
383    KEY_CODE(FN_F        ,0x1e2)  \
384    KEY_CODE(FN_S        ,0x1e3)  \
385    KEY_CODE(FN_B        ,0x1e4)  \
386    KEY_CODE(BRL_DOT1    ,0x1f1)  \
387    KEY_CODE(BRL_DOT2    ,0x1f2)  \
388    KEY_CODE(BRL_DOT3    ,0x1f3)  \
389    KEY_CODE(BRL_DOT4    ,0x1f4)  \
390    KEY_CODE(BRL_DOT5    ,0x1f5)  \
391    KEY_CODE(BRL_DOT6    ,0x1f6)  \
392    KEY_CODE(BRL_DOT7    ,0x1f7)  \
393    KEY_CODE(BRL_DOT8    ,0x1f8)  \
394 
395 #undef  KEY_CODE
396 #define KEY_CODE(n,v)   GLUE(KEY_,n) = v,
397 typedef enum {
398     EVENT_KEY_LIST
399 } EventKeyCode;
400 #undef  KEY_CODE
401 
402 
403 #define  EVENT_BTN_LIST  \
404     BTN_CODE(MISC,0x100)  \
405     BTN_CODE(0,0x100)     \
406     BTN_CODE(1,0x101)     \
407     BTN_CODE(2,0x102)     \
408     BTN_CODE(3,0x103)     \
409     BTN_CODE(4,0x104)     \
410     BTN_CODE(5,0x105)     \
411     BTN_CODE(6,0x106)     \
412     BTN_CODE(7,0x107)     \
413     BTN_CODE(8,0x108)     \
414     BTN_CODE(9,0x109)     \
415     \
416     BTN_CODE(MOUSE,  0x110)  \
417     BTN_CODE(LEFT,   0x110)  \
418     BTN_CODE(RIGHT,  0x111)  \
419     BTN_CODE(MIDDLE, 0x112)  \
420     BTN_CODE(SIDE,   0x113)  \
421     BTN_CODE(EXTRA,  0x114)  \
422     BTN_CODE(FORWARD,0x115)  \
423     BTN_CODE(BACK,   0x116)  \
424     BTN_CODE(TASK,   0x117)  \
425     \
426     BTN_CODE(JOYSTICK,0x120)  \
427     BTN_CODE(TRIGGER, 0x120)  \
428     BTN_CODE(THUMB,   0x121)  \
429     BTN_CODE(THUMB2,  0x122)  \
430     BTN_CODE(TOP,     0x123)  \
431     BTN_CODE(TOP2,    0x124)  \
432     BTN_CODE(PINKIE,  0x125)  \
433     BTN_CODE(BASE,    0x126)  \
434     BTN_CODE(BASE2,   0x127)  \
435     BTN_CODE(BASE3,   0x128)  \
436     BTN_CODE(BASE4,   0x129)  \
437     BTN_CODE(BASE5,   0x12a)  \
438     BTN_CODE(BASE6,   0x12b)  \
439     BTN_CODE(DEAD,    0x12f)  \
440     \
441     BTN_CODE(GAMEPAD,  0x130)  \
442     BTN_CODE(A,        0x130)  \
443     BTN_CODE(B,        0x131)  \
444     BTN_CODE(C,        0x132)  \
445     BTN_CODE(X,        0x133)  \
446     BTN_CODE(Y,        0x134)  \
447     BTN_CODE(Z,        0x135)  \
448     BTN_CODE(TL,       0x136)  \
449     BTN_CODE(TR,       0x137)  \
450     BTN_CODE(TL2,      0x138)  \
451     BTN_CODE(TR2,      0x139)  \
452     BTN_CODE(SELECT,   0x13a)  \
453     BTN_CODE(START,    0x13b)  \
454     BTN_CODE(MODE,     0x13c)  \
455     BTN_CODE(THUMBL,   0x13d)  \
456     BTN_CODE(THUMBR,   0x13e)  \
457     \
458     BTN_CODE(DIGI,            0x140)  \
459     BTN_CODE(TOOL_PEN,        0x140)  \
460     BTN_CODE(TOOL_RUBBER,     0x141)  \
461     BTN_CODE(TOOL_BRUSH,      0x142)  \
462     BTN_CODE(TOOL_PENCIL,     0x143)  \
463     BTN_CODE(TOOL_AIRBRUSH,   0x144)  \
464     BTN_CODE(TOOL_FINGER,     0x145)  \
465     BTN_CODE(TOOL_MOUSE,      0x146)  \
466     BTN_CODE(TOOL_LENS,       0x147)  \
467     BTN_CODE(TOUCH,           0x14a)  \
468     BTN_CODE(STYLUS,          0x14b)  \
469     BTN_CODE(STYLUS2,         0x14c)  \
470     BTN_CODE(TOOL_DOUBLETAP,  0x14d)  \
471     BTN_CODE(TOOL_TRIPLETAP,  0x14e)  \
472     \
473     BTN_CODE(WHEEL,  0x150)      \
474     BTN_CODE(GEAR_DOWN,  0x150)  \
475     BTN_CODE(GEAR_UP,    0x150)
476 
477 #undef  BTN_CODE
478 #define BTN_CODE(n,v)   GLUE(BTN_,n) = v,
479 typedef enum {
480     EVENT_BTN_LIST
481 } EventBtnCode;
482 #undef  BTN_CODE
483 
484 #define  EVENT_REL_LIST \
485     REL_CODE(X,  0x00)  \
486     REL_CODE(Y,  0x01)
487 
488 #define  REL_CODE(n,v)  GLUE(REL_,n) = v,
489 typedef enum {
490     EVENT_REL_LIST
491 } EventRelCode;
492 #undef  REL_CODE
493 
494 #define  EVENT_ABS_LIST  \
495     ABS_CODE(X,        0x00)  \
496     ABS_CODE(Y,        0x01)  \
497     ABS_CODE(Z,        0x02)  \
498     ABS_CODE(RX,       0x03)  \
499     ABS_CODE(RY,       0x04)  \
500     ABS_CODE(RZ,       0x05)  \
501     ABS_CODE(THROTTLE, 0x06)  \
502     ABS_CODE(RUDDER,   0x07)  \
503     ABS_CODE(WHEEL,    0x08)  \
504     ABS_CODE(GAS,      0x09)  \
505     ABS_CODE(BRAKE,    0x0a)  \
506     ABS_CODE(HAT0X,    0x10)  \
507     ABS_CODE(HAT0Y,    0x11)  \
508     ABS_CODE(HAT1X,    0x12)  \
509     ABS_CODE(HAT1Y,    0x13)  \
510     ABS_CODE(HAT2X,    0x14)  \
511     ABS_CODE(HAT2Y,    0x15)  \
512     ABS_CODE(HAT3X,    0x16)  \
513     ABS_CODE(HAT3Y,    0x17)  \
514     ABS_CODE(PRESSURE, 0x18)  \
515     ABS_CODE(DISTANCE, 0x19)  \
516     ABS_CODE(TILT_X,   0x1a)  \
517     ABS_CODE(TILT_Y,   0x1b)  \
518     ABS_CODE(TOOL_WIDTH, 0x1c)  \
519     ABS_CODE(VOLUME,     0x20)  \
520     ABS_CODE(MISC,       0x28)  \
521     ABS_CODE(MAX,        0x3f)
522 
523 #define  ABS_CODE(n,v)  GLUE(ABS_,n) = v,
524 
525 typedef enum {
526     EVENT_ABS_LIST
527 } EventAbsCode;
528 #undef  ABS_CODE
529 
530 /* convert an event string specification like <type>:<code>:<value>
531  * into three integers. returns 0 on success, or -1 in case of error
532  */
533 extern int   android_event_from_str( const char*  name,
534                                      int         *ptype,
535                                      int         *pcode,
536                                      int         *pvalue );
537 
538 /* returns the list of valid event type string aliases */
539 extern int    android_event_get_type_count( void );
540 extern char*  android_event_bufprint_type_str( char*  buff, char*  end, int  type_index );
541 
542 /* returns the list of valid event code string aliases for a given event type */
543 extern int    android_event_get_code_count( int  type );
544 extern char*  android_event_bufprint_code_str( char*  buff, char*  end, int  type, int  code_index );
545 
546 #endif /* _ANDROID_HW_EVENTS_H */
547