1*38e8c45fSAndroid Build Coastguard Worker /*
2*38e8c45fSAndroid Build Coastguard Worker * Copyright (C) 2020 The Android Open Source Project
3*38e8c45fSAndroid Build Coastguard Worker *
4*38e8c45fSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License");
5*38e8c45fSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License.
6*38e8c45fSAndroid Build Coastguard Worker * You may obtain a copy of the License at
7*38e8c45fSAndroid Build Coastguard Worker *
8*38e8c45fSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0
9*38e8c45fSAndroid Build Coastguard Worker *
10*38e8c45fSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software
11*38e8c45fSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS,
12*38e8c45fSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*38e8c45fSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and
14*38e8c45fSAndroid Build Coastguard Worker * limitations under the License.
15*38e8c45fSAndroid Build Coastguard Worker */
16*38e8c45fSAndroid Build Coastguard Worker
17*38e8c45fSAndroid Build Coastguard Worker #include <input/InputEventLabels.h>
18*38e8c45fSAndroid Build Coastguard Worker
19*38e8c45fSAndroid Build Coastguard Worker #include <linux/input-event-codes.h>
20*38e8c45fSAndroid Build Coastguard Worker #include <linux/input.h>
21*38e8c45fSAndroid Build Coastguard Worker #include <strings.h>
22*38e8c45fSAndroid Build Coastguard Worker
23*38e8c45fSAndroid Build Coastguard Worker #define DEFINE_KEYCODE(key) { #key, AKEYCODE_##key }
24*38e8c45fSAndroid Build Coastguard Worker #define DEFINE_AXIS(axis) { #axis, AMOTION_EVENT_AXIS_##axis }
25*38e8c45fSAndroid Build Coastguard Worker #define DEFINE_LED(led) { #led, ALED_##led }
26*38e8c45fSAndroid Build Coastguard Worker #define DEFINE_FLAG(flag) { #flag, POLICY_FLAG_##flag }
27*38e8c45fSAndroid Build Coastguard Worker
28*38e8c45fSAndroid Build Coastguard Worker namespace android {
29*38e8c45fSAndroid Build Coastguard Worker
30*38e8c45fSAndroid Build Coastguard Worker // clang-format off
31*38e8c45fSAndroid Build Coastguard Worker
32*38e8c45fSAndroid Build Coastguard Worker // NOTE: If you add a new keycode here you must also add it to several other files.
33*38e8c45fSAndroid Build Coastguard Worker // Refer to frameworks/base/core/java/android/view/KeyEvent.java for the full list.
34*38e8c45fSAndroid Build Coastguard Worker #define KEYCODES_SEQUENCE \
35*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(UNKNOWN), \
36*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(SOFT_LEFT), \
37*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(SOFT_RIGHT), \
38*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(HOME), \
39*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(BACK), \
40*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(CALL), \
41*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(ENDCALL), \
42*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(0), \
43*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(1), \
44*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(2), \
45*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(3), \
46*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(4), \
47*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(5), \
48*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(6), \
49*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(7), \
50*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(8), \
51*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(9), \
52*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(STAR), \
53*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(POUND), \
54*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(DPAD_UP), \
55*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(DPAD_DOWN), \
56*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(DPAD_LEFT), \
57*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(DPAD_RIGHT), \
58*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(DPAD_CENTER), \
59*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(VOLUME_UP), \
60*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(VOLUME_DOWN), \
61*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(POWER), \
62*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(CAMERA), \
63*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(CLEAR), \
64*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(A), \
65*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(B), \
66*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(C), \
67*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(D), \
68*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(E), \
69*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(F), \
70*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(G), \
71*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(H), \
72*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(I), \
73*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(J), \
74*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(K), \
75*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(L), \
76*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(M), \
77*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(N), \
78*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(O), \
79*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(P), \
80*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(Q), \
81*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(R), \
82*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(S), \
83*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(T), \
84*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(U), \
85*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(V), \
86*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(W), \
87*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(X), \
88*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(Y), \
89*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(Z), \
90*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(COMMA), \
91*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(PERIOD), \
92*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(ALT_LEFT), \
93*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(ALT_RIGHT), \
94*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(SHIFT_LEFT), \
95*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(SHIFT_RIGHT), \
96*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(TAB), \
97*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(SPACE), \
98*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(SYM), \
99*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(EXPLORER), \
100*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(ENVELOPE), \
101*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(ENTER), \
102*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(DEL), \
103*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(GRAVE), \
104*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(MINUS), \
105*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(EQUALS), \
106*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(LEFT_BRACKET), \
107*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(RIGHT_BRACKET), \
108*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(BACKSLASH), \
109*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(SEMICOLON), \
110*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(APOSTROPHE), \
111*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(SLASH), \
112*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(AT), \
113*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(NUM), \
114*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(HEADSETHOOK), \
115*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(FOCUS), \
116*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(PLUS), \
117*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(MENU), \
118*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(NOTIFICATION), \
119*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(SEARCH), \
120*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(MEDIA_PLAY_PAUSE), \
121*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(MEDIA_STOP), \
122*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(MEDIA_NEXT), \
123*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(MEDIA_PREVIOUS), \
124*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(MEDIA_REWIND), \
125*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(MEDIA_FAST_FORWARD), \
126*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(MUTE), \
127*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(PAGE_UP), \
128*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(PAGE_DOWN), \
129*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(PICTSYMBOLS), \
130*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(SWITCH_CHARSET), \
131*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(BUTTON_A), \
132*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(BUTTON_B), \
133*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(BUTTON_C), \
134*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(BUTTON_X), \
135*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(BUTTON_Y), \
136*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(BUTTON_Z), \
137*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(BUTTON_L1), \
138*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(BUTTON_R1), \
139*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(BUTTON_L2), \
140*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(BUTTON_R2), \
141*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(BUTTON_THUMBL), \
142*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(BUTTON_THUMBR), \
143*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(BUTTON_START), \
144*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(BUTTON_SELECT), \
145*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(BUTTON_MODE), \
146*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(ESCAPE), \
147*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(FORWARD_DEL), \
148*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(CTRL_LEFT), \
149*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(CTRL_RIGHT), \
150*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(CAPS_LOCK), \
151*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(SCROLL_LOCK), \
152*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(META_LEFT), \
153*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(META_RIGHT), \
154*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(FUNCTION), \
155*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(SYSRQ), \
156*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(BREAK), \
157*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(MOVE_HOME), \
158*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(MOVE_END), \
159*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(INSERT), \
160*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(FORWARD), \
161*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(MEDIA_PLAY), \
162*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(MEDIA_PAUSE), \
163*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(MEDIA_CLOSE), \
164*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(MEDIA_EJECT), \
165*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(MEDIA_RECORD), \
166*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(F1), \
167*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(F2), \
168*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(F3), \
169*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(F4), \
170*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(F5), \
171*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(F6), \
172*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(F7), \
173*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(F8), \
174*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(F9), \
175*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(F10), \
176*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(F11), \
177*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(F12), \
178*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(NUM_LOCK), \
179*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(NUMPAD_0), \
180*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(NUMPAD_1), \
181*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(NUMPAD_2), \
182*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(NUMPAD_3), \
183*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(NUMPAD_4), \
184*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(NUMPAD_5), \
185*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(NUMPAD_6), \
186*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(NUMPAD_7), \
187*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(NUMPAD_8), \
188*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(NUMPAD_9), \
189*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(NUMPAD_DIVIDE), \
190*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(NUMPAD_MULTIPLY), \
191*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(NUMPAD_SUBTRACT), \
192*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(NUMPAD_ADD), \
193*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(NUMPAD_DOT), \
194*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(NUMPAD_COMMA), \
195*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(NUMPAD_ENTER), \
196*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(NUMPAD_EQUALS), \
197*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(NUMPAD_LEFT_PAREN), \
198*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(NUMPAD_RIGHT_PAREN), \
199*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(VOLUME_MUTE), \
200*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(INFO), \
201*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(CHANNEL_UP), \
202*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(CHANNEL_DOWN), \
203*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(ZOOM_IN), \
204*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(ZOOM_OUT), \
205*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(TV), \
206*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(WINDOW), \
207*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(GUIDE), \
208*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(DVR), \
209*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(BOOKMARK), \
210*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(CAPTIONS), \
211*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(SETTINGS), \
212*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(TV_POWER), \
213*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(TV_INPUT), \
214*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(STB_POWER), \
215*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(STB_INPUT), \
216*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(AVR_POWER), \
217*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(AVR_INPUT), \
218*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(PROG_RED), \
219*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(PROG_GREEN), \
220*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(PROG_YELLOW), \
221*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(PROG_BLUE), \
222*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(APP_SWITCH), \
223*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(BUTTON_1), \
224*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(BUTTON_2), \
225*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(BUTTON_3), \
226*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(BUTTON_4), \
227*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(BUTTON_5), \
228*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(BUTTON_6), \
229*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(BUTTON_7), \
230*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(BUTTON_8), \
231*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(BUTTON_9), \
232*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(BUTTON_10), \
233*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(BUTTON_11), \
234*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(BUTTON_12), \
235*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(BUTTON_13), \
236*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(BUTTON_14), \
237*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(BUTTON_15), \
238*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(BUTTON_16), \
239*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(LANGUAGE_SWITCH), \
240*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(MANNER_MODE), \
241*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(3D_MODE), \
242*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(CONTACTS), \
243*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(CALENDAR), \
244*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(MUSIC), \
245*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(CALCULATOR), \
246*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(ZENKAKU_HANKAKU), \
247*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(EISU), \
248*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(MUHENKAN), \
249*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(HENKAN), \
250*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(KATAKANA_HIRAGANA), \
251*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(YEN), \
252*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(RO), \
253*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(KANA), \
254*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(ASSIST), \
255*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(BRIGHTNESS_DOWN), \
256*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(BRIGHTNESS_UP), \
257*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(MEDIA_AUDIO_TRACK), \
258*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(SLEEP), \
259*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(WAKEUP), \
260*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(PAIRING), \
261*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(MEDIA_TOP_MENU), \
262*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(11), \
263*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(12), \
264*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(LAST_CHANNEL), \
265*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(TV_DATA_SERVICE), \
266*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(VOICE_ASSIST), \
267*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(TV_RADIO_SERVICE), \
268*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(TV_TELETEXT), \
269*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(TV_NUMBER_ENTRY), \
270*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(TV_TERRESTRIAL_ANALOG), \
271*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(TV_TERRESTRIAL_DIGITAL), \
272*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(TV_SATELLITE), \
273*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(TV_SATELLITE_BS), \
274*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(TV_SATELLITE_CS), \
275*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(TV_SATELLITE_SERVICE), \
276*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(TV_NETWORK), \
277*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(TV_ANTENNA_CABLE), \
278*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(TV_INPUT_HDMI_1), \
279*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(TV_INPUT_HDMI_2), \
280*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(TV_INPUT_HDMI_3), \
281*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(TV_INPUT_HDMI_4), \
282*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(TV_INPUT_COMPOSITE_1), \
283*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(TV_INPUT_COMPOSITE_2), \
284*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(TV_INPUT_COMPONENT_1), \
285*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(TV_INPUT_COMPONENT_2), \
286*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(TV_INPUT_VGA_1), \
287*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(TV_AUDIO_DESCRIPTION), \
288*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(TV_AUDIO_DESCRIPTION_MIX_UP), \
289*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(TV_AUDIO_DESCRIPTION_MIX_DOWN), \
290*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(TV_ZOOM_MODE), \
291*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(TV_CONTENTS_MENU), \
292*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(TV_MEDIA_CONTEXT_MENU), \
293*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(TV_TIMER_PROGRAMMING), \
294*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(HELP), \
295*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(NAVIGATE_PREVIOUS), \
296*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(NAVIGATE_NEXT), \
297*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(NAVIGATE_IN), \
298*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(NAVIGATE_OUT), \
299*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(STEM_PRIMARY), \
300*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(STEM_1), \
301*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(STEM_2), \
302*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(STEM_3), \
303*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(DPAD_UP_LEFT), \
304*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(DPAD_DOWN_LEFT), \
305*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(DPAD_UP_RIGHT), \
306*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(DPAD_DOWN_RIGHT), \
307*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(MEDIA_SKIP_FORWARD), \
308*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(MEDIA_SKIP_BACKWARD), \
309*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(MEDIA_STEP_FORWARD), \
310*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(MEDIA_STEP_BACKWARD), \
311*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(SOFT_SLEEP), \
312*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(CUT), \
313*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(COPY), \
314*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(PASTE), \
315*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(SYSTEM_NAVIGATION_UP), \
316*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(SYSTEM_NAVIGATION_DOWN), \
317*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(SYSTEM_NAVIGATION_LEFT), \
318*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(SYSTEM_NAVIGATION_RIGHT), \
319*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(ALL_APPS), \
320*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(REFRESH), \
321*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(THUMBS_UP), \
322*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(THUMBS_DOWN), \
323*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(PROFILE_SWITCH), \
324*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(VIDEO_APP_1), \
325*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(VIDEO_APP_2), \
326*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(VIDEO_APP_3), \
327*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(VIDEO_APP_4), \
328*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(VIDEO_APP_5), \
329*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(VIDEO_APP_6), \
330*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(VIDEO_APP_7), \
331*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(VIDEO_APP_8), \
332*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(FEATURED_APP_1), \
333*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(FEATURED_APP_2), \
334*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(FEATURED_APP_3), \
335*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(FEATURED_APP_4), \
336*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(DEMO_APP_1), \
337*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(DEMO_APP_2), \
338*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(DEMO_APP_3), \
339*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(DEMO_APP_4), \
340*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(KEYBOARD_BACKLIGHT_DOWN), \
341*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(KEYBOARD_BACKLIGHT_UP), \
342*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(KEYBOARD_BACKLIGHT_TOGGLE), \
343*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(STYLUS_BUTTON_PRIMARY), \
344*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(STYLUS_BUTTON_SECONDARY), \
345*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(STYLUS_BUTTON_TERTIARY), \
346*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(STYLUS_BUTTON_TAIL), \
347*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(RECENT_APPS), \
348*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(MACRO_1), \
349*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(MACRO_2), \
350*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(MACRO_3), \
351*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(MACRO_4), \
352*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(EMOJI_PICKER), \
353*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(SCREENSHOT), \
354*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(DICTATE), \
355*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(NEW), \
356*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(CLOSE), \
357*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(DO_NOT_DISTURB), \
358*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(PRINT), \
359*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(LOCK), \
360*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(FULLSCREEN), \
361*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(F13), \
362*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(F14), \
363*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(F15), \
364*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(F16), \
365*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(F17), \
366*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(F18), \
367*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(F19),\
368*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(F20), \
369*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(F21), \
370*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(F22), \
371*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(F23), \
372*38e8c45fSAndroid Build Coastguard Worker DEFINE_KEYCODE(F24)
373*38e8c45fSAndroid Build Coastguard Worker
374*38e8c45fSAndroid Build Coastguard Worker // NOTE: If you add a new axis here you must also add it to several other files.
375*38e8c45fSAndroid Build Coastguard Worker // Refer to frameworks/base/core/java/android/view/MotionEvent.java for the full list.
376*38e8c45fSAndroid Build Coastguard Worker #define AXES_SEQUENCE \
377*38e8c45fSAndroid Build Coastguard Worker DEFINE_AXIS(X), \
378*38e8c45fSAndroid Build Coastguard Worker DEFINE_AXIS(Y), \
379*38e8c45fSAndroid Build Coastguard Worker DEFINE_AXIS(PRESSURE), \
380*38e8c45fSAndroid Build Coastguard Worker DEFINE_AXIS(SIZE), \
381*38e8c45fSAndroid Build Coastguard Worker DEFINE_AXIS(TOUCH_MAJOR), \
382*38e8c45fSAndroid Build Coastguard Worker DEFINE_AXIS(TOUCH_MINOR), \
383*38e8c45fSAndroid Build Coastguard Worker DEFINE_AXIS(TOOL_MAJOR), \
384*38e8c45fSAndroid Build Coastguard Worker DEFINE_AXIS(TOOL_MINOR), \
385*38e8c45fSAndroid Build Coastguard Worker DEFINE_AXIS(ORIENTATION), \
386*38e8c45fSAndroid Build Coastguard Worker DEFINE_AXIS(VSCROLL), \
387*38e8c45fSAndroid Build Coastguard Worker DEFINE_AXIS(HSCROLL), \
388*38e8c45fSAndroid Build Coastguard Worker DEFINE_AXIS(Z), \
389*38e8c45fSAndroid Build Coastguard Worker DEFINE_AXIS(RX), \
390*38e8c45fSAndroid Build Coastguard Worker DEFINE_AXIS(RY), \
391*38e8c45fSAndroid Build Coastguard Worker DEFINE_AXIS(RZ), \
392*38e8c45fSAndroid Build Coastguard Worker DEFINE_AXIS(HAT_X), \
393*38e8c45fSAndroid Build Coastguard Worker DEFINE_AXIS(HAT_Y), \
394*38e8c45fSAndroid Build Coastguard Worker DEFINE_AXIS(LTRIGGER), \
395*38e8c45fSAndroid Build Coastguard Worker DEFINE_AXIS(RTRIGGER), \
396*38e8c45fSAndroid Build Coastguard Worker DEFINE_AXIS(THROTTLE), \
397*38e8c45fSAndroid Build Coastguard Worker DEFINE_AXIS(RUDDER), \
398*38e8c45fSAndroid Build Coastguard Worker DEFINE_AXIS(WHEEL), \
399*38e8c45fSAndroid Build Coastguard Worker DEFINE_AXIS(GAS), \
400*38e8c45fSAndroid Build Coastguard Worker DEFINE_AXIS(BRAKE), \
401*38e8c45fSAndroid Build Coastguard Worker DEFINE_AXIS(DISTANCE), \
402*38e8c45fSAndroid Build Coastguard Worker DEFINE_AXIS(TILT), \
403*38e8c45fSAndroid Build Coastguard Worker DEFINE_AXIS(SCROLL), \
404*38e8c45fSAndroid Build Coastguard Worker DEFINE_AXIS(RELATIVE_X), \
405*38e8c45fSAndroid Build Coastguard Worker DEFINE_AXIS(RELATIVE_Y), \
406*38e8c45fSAndroid Build Coastguard Worker {"RESERVED_29", 29}, \
407*38e8c45fSAndroid Build Coastguard Worker {"RESERVED_30", 30}, \
408*38e8c45fSAndroid Build Coastguard Worker {"RESERVED_31", 31}, \
409*38e8c45fSAndroid Build Coastguard Worker DEFINE_AXIS(GENERIC_1), \
410*38e8c45fSAndroid Build Coastguard Worker DEFINE_AXIS(GENERIC_2), \
411*38e8c45fSAndroid Build Coastguard Worker DEFINE_AXIS(GENERIC_3), \
412*38e8c45fSAndroid Build Coastguard Worker DEFINE_AXIS(GENERIC_4), \
413*38e8c45fSAndroid Build Coastguard Worker DEFINE_AXIS(GENERIC_5), \
414*38e8c45fSAndroid Build Coastguard Worker DEFINE_AXIS(GENERIC_6), \
415*38e8c45fSAndroid Build Coastguard Worker DEFINE_AXIS(GENERIC_7), \
416*38e8c45fSAndroid Build Coastguard Worker DEFINE_AXIS(GENERIC_8), \
417*38e8c45fSAndroid Build Coastguard Worker DEFINE_AXIS(GENERIC_9), \
418*38e8c45fSAndroid Build Coastguard Worker DEFINE_AXIS(GENERIC_10), \
419*38e8c45fSAndroid Build Coastguard Worker DEFINE_AXIS(GENERIC_11), \
420*38e8c45fSAndroid Build Coastguard Worker DEFINE_AXIS(GENERIC_12), \
421*38e8c45fSAndroid Build Coastguard Worker DEFINE_AXIS(GENERIC_13), \
422*38e8c45fSAndroid Build Coastguard Worker DEFINE_AXIS(GENERIC_14), \
423*38e8c45fSAndroid Build Coastguard Worker DEFINE_AXIS(GENERIC_15), \
424*38e8c45fSAndroid Build Coastguard Worker DEFINE_AXIS(GENERIC_16), \
425*38e8c45fSAndroid Build Coastguard Worker DEFINE_AXIS(GESTURE_X_OFFSET), \
426*38e8c45fSAndroid Build Coastguard Worker DEFINE_AXIS(GESTURE_Y_OFFSET), \
427*38e8c45fSAndroid Build Coastguard Worker DEFINE_AXIS(GESTURE_SCROLL_X_DISTANCE), \
428*38e8c45fSAndroid Build Coastguard Worker DEFINE_AXIS(GESTURE_SCROLL_Y_DISTANCE), \
429*38e8c45fSAndroid Build Coastguard Worker DEFINE_AXIS(GESTURE_PINCH_SCALE_FACTOR), \
430*38e8c45fSAndroid Build Coastguard Worker DEFINE_AXIS(GESTURE_SWIPE_FINGER_COUNT)
431*38e8c45fSAndroid Build Coastguard Worker
432*38e8c45fSAndroid Build Coastguard Worker // NOTE: If you add new LEDs here, you must also add them to Input.h
433*38e8c45fSAndroid Build Coastguard Worker #define LEDS_SEQUENCE \
434*38e8c45fSAndroid Build Coastguard Worker DEFINE_LED(NUM_LOCK), \
435*38e8c45fSAndroid Build Coastguard Worker DEFINE_LED(CAPS_LOCK), \
436*38e8c45fSAndroid Build Coastguard Worker DEFINE_LED(SCROLL_LOCK), \
437*38e8c45fSAndroid Build Coastguard Worker DEFINE_LED(COMPOSE), \
438*38e8c45fSAndroid Build Coastguard Worker DEFINE_LED(KANA), \
439*38e8c45fSAndroid Build Coastguard Worker DEFINE_LED(SLEEP), \
440*38e8c45fSAndroid Build Coastguard Worker DEFINE_LED(SUSPEND), \
441*38e8c45fSAndroid Build Coastguard Worker DEFINE_LED(MUTE), \
442*38e8c45fSAndroid Build Coastguard Worker DEFINE_LED(MISC), \
443*38e8c45fSAndroid Build Coastguard Worker DEFINE_LED(MAIL), \
444*38e8c45fSAndroid Build Coastguard Worker DEFINE_LED(CHARGING), \
445*38e8c45fSAndroid Build Coastguard Worker DEFINE_LED(CONTROLLER_1), \
446*38e8c45fSAndroid Build Coastguard Worker DEFINE_LED(CONTROLLER_2), \
447*38e8c45fSAndroid Build Coastguard Worker DEFINE_LED(CONTROLLER_3), \
448*38e8c45fSAndroid Build Coastguard Worker DEFINE_LED(CONTROLLER_4)
449*38e8c45fSAndroid Build Coastguard Worker
450*38e8c45fSAndroid Build Coastguard Worker #define FLAGS_SEQUENCE \
451*38e8c45fSAndroid Build Coastguard Worker DEFINE_FLAG(VIRTUAL), \
452*38e8c45fSAndroid Build Coastguard Worker DEFINE_FLAG(FUNCTION), \
453*38e8c45fSAndroid Build Coastguard Worker DEFINE_FLAG(GESTURE), \
454*38e8c45fSAndroid Build Coastguard Worker DEFINE_FLAG(WAKE), \
455*38e8c45fSAndroid Build Coastguard Worker DEFINE_FLAG(FALLBACK_USAGE_MAPPING)
456*38e8c45fSAndroid Build Coastguard Worker
457*38e8c45fSAndroid Build Coastguard Worker // clang-format on
458*38e8c45fSAndroid Build Coastguard Worker
459*38e8c45fSAndroid Build Coastguard Worker // --- InputEventLookup ---
460*38e8c45fSAndroid Build Coastguard Worker
InputEventLookup()461*38e8c45fSAndroid Build Coastguard Worker InputEventLookup::InputEventLookup()
462*38e8c45fSAndroid Build Coastguard Worker : KEYCODES({KEYCODES_SEQUENCE}),
463*38e8c45fSAndroid Build Coastguard Worker KEY_NAMES({KEYCODES_SEQUENCE}),
464*38e8c45fSAndroid Build Coastguard Worker AXES({AXES_SEQUENCE}),
465*38e8c45fSAndroid Build Coastguard Worker AXES_NAMES({AXES_SEQUENCE}),
466*38e8c45fSAndroid Build Coastguard Worker LEDS({LEDS_SEQUENCE}),
467*38e8c45fSAndroid Build Coastguard Worker FLAGS({FLAGS_SEQUENCE}) {}
468*38e8c45fSAndroid Build Coastguard Worker
lookupValueByLabel(const std::unordered_map<std::string,int> & map,const char * literal)469*38e8c45fSAndroid Build Coastguard Worker std::optional<int> InputEventLookup::lookupValueByLabel(
470*38e8c45fSAndroid Build Coastguard Worker const std::unordered_map<std::string, int>& map, const char* literal) {
471*38e8c45fSAndroid Build Coastguard Worker std::string str(literal);
472*38e8c45fSAndroid Build Coastguard Worker auto it = map.find(str);
473*38e8c45fSAndroid Build Coastguard Worker return it != map.end() ? std::make_optional(it->second) : std::nullopt;
474*38e8c45fSAndroid Build Coastguard Worker }
475*38e8c45fSAndroid Build Coastguard Worker
lookupLabelByValue(const std::vector<InputEventLabel> & vec,int value)476*38e8c45fSAndroid Build Coastguard Worker const char* InputEventLookup::lookupLabelByValue(const std::vector<InputEventLabel>& vec,
477*38e8c45fSAndroid Build Coastguard Worker int value) {
478*38e8c45fSAndroid Build Coastguard Worker if (static_cast<size_t>(value) < vec.size()) {
479*38e8c45fSAndroid Build Coastguard Worker return vec[value].literal;
480*38e8c45fSAndroid Build Coastguard Worker }
481*38e8c45fSAndroid Build Coastguard Worker return nullptr;
482*38e8c45fSAndroid Build Coastguard Worker }
483*38e8c45fSAndroid Build Coastguard Worker
getKeyCodeByLabel(const char * label)484*38e8c45fSAndroid Build Coastguard Worker std::optional<int> InputEventLookup::getKeyCodeByLabel(const char* label) {
485*38e8c45fSAndroid Build Coastguard Worker const auto& self = get();
486*38e8c45fSAndroid Build Coastguard Worker return self.lookupValueByLabel(self.KEYCODES, label);
487*38e8c45fSAndroid Build Coastguard Worker }
488*38e8c45fSAndroid Build Coastguard Worker
getLabelByKeyCode(int32_t keyCode)489*38e8c45fSAndroid Build Coastguard Worker const char* InputEventLookup::getLabelByKeyCode(int32_t keyCode) {
490*38e8c45fSAndroid Build Coastguard Worker const auto& self = get();
491*38e8c45fSAndroid Build Coastguard Worker if (keyCode >= 0 && static_cast<size_t>(keyCode) < self.KEYCODES.size()) {
492*38e8c45fSAndroid Build Coastguard Worker return get().lookupLabelByValue(self.KEY_NAMES, keyCode);
493*38e8c45fSAndroid Build Coastguard Worker }
494*38e8c45fSAndroid Build Coastguard Worker return nullptr;
495*38e8c45fSAndroid Build Coastguard Worker }
496*38e8c45fSAndroid Build Coastguard Worker
getKeyFlagByLabel(const char * label)497*38e8c45fSAndroid Build Coastguard Worker std::optional<int> InputEventLookup::getKeyFlagByLabel(const char* label) {
498*38e8c45fSAndroid Build Coastguard Worker const auto& self = get();
499*38e8c45fSAndroid Build Coastguard Worker return lookupValueByLabel(self.FLAGS, label);
500*38e8c45fSAndroid Build Coastguard Worker }
501*38e8c45fSAndroid Build Coastguard Worker
getAxisByLabel(const char * label)502*38e8c45fSAndroid Build Coastguard Worker std::optional<int> InputEventLookup::getAxisByLabel(const char* label) {
503*38e8c45fSAndroid Build Coastguard Worker const auto& self = get();
504*38e8c45fSAndroid Build Coastguard Worker return lookupValueByLabel(self.AXES, label);
505*38e8c45fSAndroid Build Coastguard Worker }
506*38e8c45fSAndroid Build Coastguard Worker
getAxisLabel(int32_t axisId)507*38e8c45fSAndroid Build Coastguard Worker const char* InputEventLookup::getAxisLabel(int32_t axisId) {
508*38e8c45fSAndroid Build Coastguard Worker const auto& self = get();
509*38e8c45fSAndroid Build Coastguard Worker return lookupLabelByValue(self.AXES_NAMES, axisId);
510*38e8c45fSAndroid Build Coastguard Worker }
511*38e8c45fSAndroid Build Coastguard Worker
getLedByLabel(const char * label)512*38e8c45fSAndroid Build Coastguard Worker std::optional<int> InputEventLookup::getLedByLabel(const char* label) {
513*38e8c45fSAndroid Build Coastguard Worker const auto& self = get();
514*38e8c45fSAndroid Build Coastguard Worker return lookupValueByLabel(self.LEDS, label);
515*38e8c45fSAndroid Build Coastguard Worker }
516*38e8c45fSAndroid Build Coastguard Worker
517*38e8c45fSAndroid Build Coastguard Worker namespace {
518*38e8c45fSAndroid Build Coastguard Worker
519*38e8c45fSAndroid Build Coastguard Worker struct label {
520*38e8c45fSAndroid Build Coastguard Worker const char* name;
521*38e8c45fSAndroid Build Coastguard Worker int value;
522*38e8c45fSAndroid Build Coastguard Worker };
523*38e8c45fSAndroid Build Coastguard Worker
524*38e8c45fSAndroid Build Coastguard Worker #define LABEL(constant) \
525*38e8c45fSAndroid Build Coastguard Worker { #constant, constant }
526*38e8c45fSAndroid Build Coastguard Worker #define LABEL_END \
527*38e8c45fSAndroid Build Coastguard Worker { nullptr, -1 }
528*38e8c45fSAndroid Build Coastguard Worker
529*38e8c45fSAndroid Build Coastguard Worker static struct label ev_key_value_labels[] = {
530*38e8c45fSAndroid Build Coastguard Worker {"UP", 0},
531*38e8c45fSAndroid Build Coastguard Worker {"DOWN", 1},
532*38e8c45fSAndroid Build Coastguard Worker {"REPEAT", 2},
533*38e8c45fSAndroid Build Coastguard Worker LABEL_END,
534*38e8c45fSAndroid Build Coastguard Worker };
535*38e8c45fSAndroid Build Coastguard Worker
536*38e8c45fSAndroid Build Coastguard Worker #include "input.h-labels.h"
537*38e8c45fSAndroid Build Coastguard Worker
538*38e8c45fSAndroid Build Coastguard Worker #undef LABEL
539*38e8c45fSAndroid Build Coastguard Worker #undef LABEL_END
540*38e8c45fSAndroid Build Coastguard Worker
getLabel(const label * labels,int value)541*38e8c45fSAndroid Build Coastguard Worker std::string getLabel(const label* labels, int value) {
542*38e8c45fSAndroid Build Coastguard Worker if (labels == nullptr) return std::to_string(value);
543*38e8c45fSAndroid Build Coastguard Worker while (labels->name != nullptr && value != labels->value) {
544*38e8c45fSAndroid Build Coastguard Worker labels++;
545*38e8c45fSAndroid Build Coastguard Worker }
546*38e8c45fSAndroid Build Coastguard Worker return labels->name != nullptr ? labels->name : std::to_string(value);
547*38e8c45fSAndroid Build Coastguard Worker }
548*38e8c45fSAndroid Build Coastguard Worker
getValue(const label * labels,const char * searchLabel)549*38e8c45fSAndroid Build Coastguard Worker std::optional<int> getValue(const label* labels, const char* searchLabel) {
550*38e8c45fSAndroid Build Coastguard Worker if (labels == nullptr) return {};
551*38e8c45fSAndroid Build Coastguard Worker while (labels->name != nullptr && ::strcasecmp(labels->name, searchLabel) != 0) {
552*38e8c45fSAndroid Build Coastguard Worker labels++;
553*38e8c45fSAndroid Build Coastguard Worker }
554*38e8c45fSAndroid Build Coastguard Worker return labels->name != nullptr ? std::make_optional(labels->value) : std::nullopt;
555*38e8c45fSAndroid Build Coastguard Worker }
556*38e8c45fSAndroid Build Coastguard Worker
getCodeLabelsForType(int32_t type)557*38e8c45fSAndroid Build Coastguard Worker const label* getCodeLabelsForType(int32_t type) {
558*38e8c45fSAndroid Build Coastguard Worker switch (type) {
559*38e8c45fSAndroid Build Coastguard Worker case EV_SYN:
560*38e8c45fSAndroid Build Coastguard Worker return syn_labels;
561*38e8c45fSAndroid Build Coastguard Worker case EV_KEY:
562*38e8c45fSAndroid Build Coastguard Worker return key_labels;
563*38e8c45fSAndroid Build Coastguard Worker case EV_REL:
564*38e8c45fSAndroid Build Coastguard Worker return rel_labels;
565*38e8c45fSAndroid Build Coastguard Worker case EV_ABS:
566*38e8c45fSAndroid Build Coastguard Worker return abs_labels;
567*38e8c45fSAndroid Build Coastguard Worker case EV_SW:
568*38e8c45fSAndroid Build Coastguard Worker return sw_labels;
569*38e8c45fSAndroid Build Coastguard Worker case EV_MSC:
570*38e8c45fSAndroid Build Coastguard Worker return msc_labels;
571*38e8c45fSAndroid Build Coastguard Worker case EV_LED:
572*38e8c45fSAndroid Build Coastguard Worker return led_labels;
573*38e8c45fSAndroid Build Coastguard Worker case EV_REP:
574*38e8c45fSAndroid Build Coastguard Worker return rep_labels;
575*38e8c45fSAndroid Build Coastguard Worker case EV_SND:
576*38e8c45fSAndroid Build Coastguard Worker return snd_labels;
577*38e8c45fSAndroid Build Coastguard Worker case EV_FF:
578*38e8c45fSAndroid Build Coastguard Worker return ff_labels;
579*38e8c45fSAndroid Build Coastguard Worker case EV_FF_STATUS:
580*38e8c45fSAndroid Build Coastguard Worker return ff_status_labels;
581*38e8c45fSAndroid Build Coastguard Worker default:
582*38e8c45fSAndroid Build Coastguard Worker return nullptr;
583*38e8c45fSAndroid Build Coastguard Worker }
584*38e8c45fSAndroid Build Coastguard Worker }
585*38e8c45fSAndroid Build Coastguard Worker
getValueLabelsForTypeAndCode(int32_t type,int32_t code)586*38e8c45fSAndroid Build Coastguard Worker const label* getValueLabelsForTypeAndCode(int32_t type, int32_t code) {
587*38e8c45fSAndroid Build Coastguard Worker if (type == EV_KEY) {
588*38e8c45fSAndroid Build Coastguard Worker return ev_key_value_labels;
589*38e8c45fSAndroid Build Coastguard Worker }
590*38e8c45fSAndroid Build Coastguard Worker if (type == EV_ABS && code == ABS_MT_TOOL_TYPE) {
591*38e8c45fSAndroid Build Coastguard Worker return mt_tool_labels;
592*38e8c45fSAndroid Build Coastguard Worker }
593*38e8c45fSAndroid Build Coastguard Worker return nullptr;
594*38e8c45fSAndroid Build Coastguard Worker }
595*38e8c45fSAndroid Build Coastguard Worker
596*38e8c45fSAndroid Build Coastguard Worker } // namespace
597*38e8c45fSAndroid Build Coastguard Worker
getLinuxEvdevLabel(int32_t type,int32_t code,int32_t value)598*38e8c45fSAndroid Build Coastguard Worker EvdevEventLabel InputEventLookup::getLinuxEvdevLabel(int32_t type, int32_t code, int32_t value) {
599*38e8c45fSAndroid Build Coastguard Worker return {
600*38e8c45fSAndroid Build Coastguard Worker .type = getLabel(ev_labels, type),
601*38e8c45fSAndroid Build Coastguard Worker .code = getLabel(getCodeLabelsForType(type), code),
602*38e8c45fSAndroid Build Coastguard Worker .value = getLabel(getValueLabelsForTypeAndCode(type, code), value),
603*38e8c45fSAndroid Build Coastguard Worker };
604*38e8c45fSAndroid Build Coastguard Worker }
605*38e8c45fSAndroid Build Coastguard Worker
getLinuxEvdevEventTypeByLabel(const char * label)606*38e8c45fSAndroid Build Coastguard Worker std::optional<int> InputEventLookup::getLinuxEvdevEventTypeByLabel(const char* label) {
607*38e8c45fSAndroid Build Coastguard Worker return getValue(ev_labels, label);
608*38e8c45fSAndroid Build Coastguard Worker }
609*38e8c45fSAndroid Build Coastguard Worker
getLinuxEvdevEventCodeByLabel(int32_t type,const char * label)610*38e8c45fSAndroid Build Coastguard Worker std::optional<int> InputEventLookup::getLinuxEvdevEventCodeByLabel(int32_t type,
611*38e8c45fSAndroid Build Coastguard Worker const char* label) {
612*38e8c45fSAndroid Build Coastguard Worker return getValue(getCodeLabelsForType(type), label);
613*38e8c45fSAndroid Build Coastguard Worker }
614*38e8c45fSAndroid Build Coastguard Worker
getLinuxEvdevInputPropByLabel(const char * label)615*38e8c45fSAndroid Build Coastguard Worker std::optional<int> InputEventLookup::getLinuxEvdevInputPropByLabel(const char* label) {
616*38e8c45fSAndroid Build Coastguard Worker return getValue(input_prop_labels, label);
617*38e8c45fSAndroid Build Coastguard Worker }
618*38e8c45fSAndroid Build Coastguard Worker
619*38e8c45fSAndroid Build Coastguard Worker } // namespace android
620