hw-events.h revision c27f813900a3c114562efbb8df1065e94766fc48
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,
36typedef enum {
37    EVENT_TYPE_LIST
38} EventType;
39#undef  EV_TYPE
40
41#define  EVENT_BTN_LIST  \
42    BTN_CODE(MISC,0x100)  \
43    BTN_CODE(0,0x100)     \
44    BTN_CODE(1,0x101)     \
45    BTN_CODE(2,0x102)     \
46    BTN_CODE(3,0x103)     \
47    BTN_CODE(4,0x104)     \
48    BTN_CODE(5,0x105)     \
49    BTN_CODE(6,0x106)     \
50    BTN_CODE(7,0x107)     \
51    BTN_CODE(8,0x108)     \
52    BTN_CODE(9,0x109)     \
53    \
54    BTN_CODE(MOUSE,  0x110)  \
55    BTN_CODE(LEFT,   0x110)  \
56    BTN_CODE(RIGHT,  0x111)  \
57    BTN_CODE(MIDDLE, 0x112)  \
58    BTN_CODE(SIDE,   0x113)  \
59    BTN_CODE(EXTRA,  0x114)  \
60    BTN_CODE(FORWARD,0x115)  \
61    BTN_CODE(BACK,   0x116)  \
62    BTN_CODE(TASK,   0x117)  \
63    \
64    BTN_CODE(JOYSTICK,0x120)  \
65    BTN_CODE(TRIGGER, 0x120)  \
66    BTN_CODE(THUMB,   0x121)  \
67    BTN_CODE(THUMB2,  0x122)  \
68    BTN_CODE(TOP,     0x123)  \
69    BTN_CODE(TOP2,    0x124)  \
70    BTN_CODE(PINKIE,  0x125)  \
71    BTN_CODE(BASE,    0x126)  \
72    BTN_CODE(BASE2,   0x127)  \
73    BTN_CODE(BASE3,   0x128)  \
74    BTN_CODE(BASE4,   0x129)  \
75    BTN_CODE(BASE5,   0x12a)  \
76    BTN_CODE(BASE6,   0x12b)  \
77    BTN_CODE(DEAD,    0x12f)  \
78    \
79    BTN_CODE(GAMEPAD,  0x130)  \
80    BTN_CODE(A,        0x130)  \
81    BTN_CODE(B,        0x131)  \
82    BTN_CODE(C,        0x132)  \
83    BTN_CODE(X,        0x133)  \
84    BTN_CODE(Y,        0x134)  \
85    BTN_CODE(Z,        0x135)  \
86    BTN_CODE(TL,       0x136)  \
87    BTN_CODE(TR,       0x137)  \
88    BTN_CODE(TL2,      0x138)  \
89    BTN_CODE(TR2,      0x139)  \
90    BTN_CODE(SELECT,   0x13a)  \
91    BTN_CODE(START,    0x13b)  \
92    BTN_CODE(MODE,     0x13c)  \
93    BTN_CODE(THUMBL,   0x13d)  \
94    BTN_CODE(THUMBR,   0x13e)  \
95    \
96    BTN_CODE(DIGI,            0x140)  \
97    BTN_CODE(TOOL_PEN,        0x140)  \
98    BTN_CODE(TOOL_RUBBER,     0x141)  \
99    BTN_CODE(TOOL_BRUSH,      0x142)  \
100    BTN_CODE(TOOL_PENCIL,     0x143)  \
101    BTN_CODE(TOOL_AIRBRUSH,   0x144)  \
102    BTN_CODE(TOOL_FINGER,     0x145)  \
103    BTN_CODE(TOOL_MOUSE,      0x146)  \
104    BTN_CODE(TOOL_LENS,       0x147)  \
105    BTN_CODE(TOUCH,           0x14a)  \
106    BTN_CODE(STYLUS,          0x14b)  \
107    BTN_CODE(STYLUS2,         0x14c)  \
108    BTN_CODE(TOOL_DOUBLETAP,  0x14d)  \
109    BTN_CODE(TOOL_TRIPLETAP,  0x14e)  \
110    \
111    BTN_CODE(WHEEL,  0x150)      \
112    BTN_CODE(GEAR_DOWN,  0x150)  \
113    BTN_CODE(GEAR_UP,    0x150)
114
115#undef  BTN_CODE
116#define BTN_CODE(n,v)   GLUE(BTN_,n) = v,
117typedef enum {
118    EVENT_BTN_LIST
119} EventBtnCode;
120#undef  BTN_CODE
121
122#define  EVENT_REL_LIST \
123    REL_CODE(X,  0x00)  \
124    REL_CODE(Y,  0x01)
125
126#define  REL_CODE(n,v)  GLUE(REL_,n) = v,
127typedef enum {
128    EVENT_REL_LIST
129} EventRelCode;
130#undef  REL_CODE
131
132#define  EVENT_ABS_LIST  \
133    ABS_CODE(X,        0x00)  \
134    ABS_CODE(Y,        0x01)  \
135    ABS_CODE(Z,        0x02)  \
136    ABS_CODE(RX,       0x03)  \
137    ABS_CODE(RY,       0x04)  \
138    ABS_CODE(RZ,       0x05)  \
139    ABS_CODE(THROTTLE, 0x06)  \
140    ABS_CODE(RUDDER,   0x07)  \
141    ABS_CODE(WHEEL,    0x08)  \
142    ABS_CODE(GAS,      0x09)  \
143    ABS_CODE(BRAKE,    0x0a)  \
144    ABS_CODE(HAT0X,    0x10)  \
145    ABS_CODE(HAT0Y,    0x11)  \
146    ABS_CODE(HAT1X,    0x12)  \
147    ABS_CODE(HAT1Y,    0x13)  \
148    ABS_CODE(HAT2X,    0x14)  \
149    ABS_CODE(HAT2Y,    0x15)  \
150    ABS_CODE(HAT3X,    0x16)  \
151    ABS_CODE(HAT3Y,    0x17)  \
152    ABS_CODE(PRESSURE, 0x18)  \
153    ABS_CODE(DISTANCE, 0x19)  \
154    ABS_CODE(TILT_X,   0x1a)  \
155    ABS_CODE(TILT_Y,   0x1b)  \
156    ABS_CODE(TOOL_WIDTH, 0x1c)  \
157    ABS_CODE(VOLUME,     0x20)  \
158    ABS_CODE(MISC,       0x28)  \
159    ABS_CODE(MAX,        0x3f)
160
161#define  ABS_CODE(n,v)  GLUE(ABS_,n) = v,
162
163typedef enum {
164    EVENT_ABS_LIST
165} EventAbsCode;
166#undef  ABS_CODE
167
168/* convert an event string specification like <type>:<code>:<value>
169 * into three integers. returns 0 on success, or -1 in case of error
170 */
171extern int   android_event_from_str( const char*  name,
172                                     int         *ptype,
173                                     int         *pcode,
174                                     int         *pvalue );
175
176/* returns the list of valid event type string aliases */
177extern int    android_event_get_type_count( void );
178extern char*  android_event_bufprint_type_str( char*  buff, char*  end, int  type_index );
179
180/* returns the list of valid event code string aliases for a given event type */
181extern int    android_event_get_code_count( int  type );
182extern char*  android_event_bufprint_code_str( char*  buff, char*  end, int  type, int  code_index );
183
184#endif /* _ANDROID_HW_EVENTS_H */
185