1872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright/*
2872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright * Copyright (C) 2008 The Android Open Source Project
3872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright *
4872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright * Licensed under the Apache License, Version 2.0 (the "License");
5872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright * you may not use this file except in compliance with the License.
6872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright * You may obtain a copy of the License at
7872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright *
8872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright *      http://www.apache.org/licenses/LICENSE-2.0
9872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright *
10872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright * Unless required by applicable law or agreed to in writing, software
11872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright * distributed under the License is distributed on an "AS IS" BASIS,
12872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright * See the License for the specific language governing permissions and
14872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright * limitations under the License.
15872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright */
16872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright
17872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright#ifndef _LIBINPUT_INPUT_EVENT_LABELS_H
18872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright#define _LIBINPUT_INPUT_EVENT_LABELS_H
19872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright
20872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright#include <input/Input.h>
21872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright#include <android/keycodes.h>
22872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright
23872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright#define DEFINE_KEYCODE(key) { #key, AKEYCODE_##key }
24872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright#define DEFINE_AXIS(axis) { #axis, AMOTION_EVENT_AXIS_##axis }
25872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright#define DEFINE_LED(led) { #led, ALED_##led }
26872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright#define DEFINE_FLAG(flag) { #flag, POLICY_FLAG_##flag }
27872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright
28872db4f11e407accccba9d37c335ef7e3597eba4Michael Wrightnamespace android {
29872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright
30872db4f11e407accccba9d37c335ef7e3597eba4Michael Wrighttemplate<typename T, size_t N>
31872db4f11e407accccba9d37c335ef7e3597eba4Michael Wrightsize_t size(T (&)[N]) { return N; }
32872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright
33872db4f11e407accccba9d37c335ef7e3597eba4Michael Wrightstruct InputEventLabel {
34872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    const char *literal;
35872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    int value;
36872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright};
37872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright
38872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright
39872db4f11e407accccba9d37c335ef7e3597eba4Michael Wrightstatic const InputEventLabel KEYCODES[] = {
40872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    // NOTE: If you add a new keycode here you must also add it to several other files.
41872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    //       Refer to frameworks/base/core/java/android/view/KeyEvent.java for the full list.
42872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(UNKNOWN),
43872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(SOFT_LEFT),
44872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(SOFT_RIGHT),
45872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(HOME),
46872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(BACK),
47872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(CALL),
48872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(ENDCALL),
49872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(0),
50872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(1),
51872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(2),
52872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(3),
53872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(4),
54872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(5),
55872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(6),
56872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(7),
57872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(8),
58872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(9),
59872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(STAR),
60872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(POUND),
61872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(DPAD_UP),
62872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(DPAD_DOWN),
63872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(DPAD_LEFT),
64872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(DPAD_RIGHT),
65872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(DPAD_CENTER),
66872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(VOLUME_UP),
67872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(VOLUME_DOWN),
68872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(POWER),
69872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(CAMERA),
70872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(CLEAR),
71872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(A),
72872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(B),
73872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(C),
74872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(D),
75872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(E),
76872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(F),
77872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(G),
78872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(H),
79872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(I),
80872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(J),
81872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(K),
82872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(L),
83872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(M),
84872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(N),
85872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(O),
86872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(P),
87872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(Q),
88872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(R),
89872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(S),
90872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(T),
91872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(U),
92872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(V),
93872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(W),
94872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(X),
95872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(Y),
96872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(Z),
97872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(COMMA),
98872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(PERIOD),
99872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(ALT_LEFT),
100872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(ALT_RIGHT),
101872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(SHIFT_LEFT),
102872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(SHIFT_RIGHT),
103872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(TAB),
104872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(SPACE),
105872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(SYM),
106872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(EXPLORER),
107872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(ENVELOPE),
108872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(ENTER),
109872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(DEL),
110872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(GRAVE),
111872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(MINUS),
112872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(EQUALS),
113872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(LEFT_BRACKET),
114872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(RIGHT_BRACKET),
115872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(BACKSLASH),
116872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(SEMICOLON),
117872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(APOSTROPHE),
118872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(SLASH),
119872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(AT),
120872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(NUM),
121872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(HEADSETHOOK),
122872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(FOCUS),   // *Camera* focus
123872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(PLUS),
124872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(MENU),
125872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(NOTIFICATION),
126872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(SEARCH),
127872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(MEDIA_PLAY_PAUSE),
128872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(MEDIA_STOP),
129872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(MEDIA_NEXT),
130872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(MEDIA_PREVIOUS),
131872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(MEDIA_REWIND),
132872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(MEDIA_FAST_FORWARD),
133872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(MUTE),
134872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(PAGE_UP),
135872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(PAGE_DOWN),
136872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(PICTSYMBOLS),
137872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(SWITCH_CHARSET),
138872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(BUTTON_A),
139872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(BUTTON_B),
140872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(BUTTON_C),
141872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(BUTTON_X),
142872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(BUTTON_Y),
143872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(BUTTON_Z),
144872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(BUTTON_L1),
145872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(BUTTON_R1),
146872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(BUTTON_L2),
147872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(BUTTON_R2),
148872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(BUTTON_THUMBL),
149872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(BUTTON_THUMBR),
150872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(BUTTON_START),
151872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(BUTTON_SELECT),
152872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(BUTTON_MODE),
153872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(ESCAPE),
154872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(FORWARD_DEL),
155872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(CTRL_LEFT),
156872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(CTRL_RIGHT),
157872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(CAPS_LOCK),
158872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(SCROLL_LOCK),
159872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(META_LEFT),
160872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(META_RIGHT),
161872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(FUNCTION),
162872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(SYSRQ),
163872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(BREAK),
164872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(MOVE_HOME),
165872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(MOVE_END),
166872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(INSERT),
167872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(FORWARD),
168872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(MEDIA_PLAY),
169872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(MEDIA_PAUSE),
170872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(MEDIA_CLOSE),
171872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(MEDIA_EJECT),
172872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(MEDIA_RECORD),
173872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(F1),
174872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(F2),
175872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(F3),
176872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(F4),
177872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(F5),
178872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(F6),
179872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(F7),
180872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(F8),
181872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(F9),
182872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(F10),
183872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(F11),
184872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(F12),
185872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(NUM_LOCK),
186872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(NUMPAD_0),
187872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(NUMPAD_1),
188872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(NUMPAD_2),
189872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(NUMPAD_3),
190872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(NUMPAD_4),
191872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(NUMPAD_5),
192872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(NUMPAD_6),
193872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(NUMPAD_7),
194872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(NUMPAD_8),
195872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(NUMPAD_9),
196872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(NUMPAD_DIVIDE),
197872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(NUMPAD_MULTIPLY),
198872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(NUMPAD_SUBTRACT),
199872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(NUMPAD_ADD),
200872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(NUMPAD_DOT),
201872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(NUMPAD_COMMA),
202872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(NUMPAD_ENTER),
203872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(NUMPAD_EQUALS),
204872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(NUMPAD_LEFT_PAREN),
205872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(NUMPAD_RIGHT_PAREN),
206872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(VOLUME_MUTE),
207872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(INFO),
208872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(CHANNEL_UP),
209872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(CHANNEL_DOWN),
210872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(ZOOM_IN),
211872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(ZOOM_OUT),
212872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(TV),
213872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(WINDOW),
214872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(GUIDE),
215872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(DVR),
216872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(BOOKMARK),
217872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(CAPTIONS),
218872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(SETTINGS),
219872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(TV_POWER),
220872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(TV_INPUT),
221872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(STB_POWER),
222872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(STB_INPUT),
223872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(AVR_POWER),
224872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(AVR_INPUT),
225872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(PROG_RED),
226872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(PROG_GREEN),
227872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(PROG_YELLOW),
228872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(PROG_BLUE),
229872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(APP_SWITCH),
230872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(BUTTON_1),
231872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(BUTTON_2),
232872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(BUTTON_3),
233872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(BUTTON_4),
234872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(BUTTON_5),
235872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(BUTTON_6),
236872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(BUTTON_7),
237872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(BUTTON_8),
238872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(BUTTON_9),
239872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(BUTTON_10),
240872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(BUTTON_11),
241872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(BUTTON_12),
242872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(BUTTON_13),
243872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(BUTTON_14),
244872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(BUTTON_15),
245872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(BUTTON_16),
246872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(LANGUAGE_SWITCH),
247872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(MANNER_MODE),
248872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(3D_MODE),
249872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(CONTACTS),
250872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(CALENDAR),
251872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(MUSIC),
252872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(CALCULATOR),
253872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(ZENKAKU_HANKAKU),
254872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(EISU),
255872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(MUHENKAN),
256872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(HENKAN),
257872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(KATAKANA_HIRAGANA),
258872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(YEN),
259872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(RO),
260872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(KANA),
261872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(ASSIST),
262872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(BRIGHTNESS_DOWN),
263872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(BRIGHTNESS_UP),
264872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(MEDIA_AUDIO_TRACK),
265872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(SLEEP),
266872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_KEYCODE(WAKEUP),
2676b4e02f1cbdc55126cae9d2ce588640a784e7d61Tim Kilbourn    DEFINE_KEYCODE(PAIRING),
268bc4e396d1721884adc48f64fbe6ef40afd8ede2dJinsuk Kim    DEFINE_KEYCODE(MEDIA_TOP_MENU),
269bc4e396d1721884adc48f64fbe6ef40afd8ede2dJinsuk Kim    DEFINE_KEYCODE(11),
270bc4e396d1721884adc48f64fbe6ef40afd8ede2dJinsuk Kim    DEFINE_KEYCODE(12),
271bc4e396d1721884adc48f64fbe6ef40afd8ede2dJinsuk Kim    DEFINE_KEYCODE(LAST_CHANNEL),
272bc4e396d1721884adc48f64fbe6ef40afd8ede2dJinsuk Kim    DEFINE_KEYCODE(TV_DATA_SERVICE),
27351409573be11e89babeb61954a19c8261649ca7cMichael Wright    DEFINE_KEYCODE(VOICE_ASSIST),
2745b3dc861fb707f46064238ec832f7bdbb4a5fbe8ASAZU, Hideki    DEFINE_KEYCODE(TV_RADIO_SERVICE),
2755b3dc861fb707f46064238ec832f7bdbb4a5fbe8ASAZU, Hideki    DEFINE_KEYCODE(TV_TELETEXT),
2765b3dc861fb707f46064238ec832f7bdbb4a5fbe8ASAZU, Hideki    DEFINE_KEYCODE(TV_NUMBER_ENTRY),
2775b3dc861fb707f46064238ec832f7bdbb4a5fbe8ASAZU, Hideki    DEFINE_KEYCODE(TV_TERRESTRIAL_ANALOG),
2785b3dc861fb707f46064238ec832f7bdbb4a5fbe8ASAZU, Hideki    DEFINE_KEYCODE(TV_TERRESTRIAL_DIGITAL),
2795b3dc861fb707f46064238ec832f7bdbb4a5fbe8ASAZU, Hideki    DEFINE_KEYCODE(TV_SATELLITE),
2805b3dc861fb707f46064238ec832f7bdbb4a5fbe8ASAZU, Hideki    DEFINE_KEYCODE(TV_SATELLITE_BS),
2815b3dc861fb707f46064238ec832f7bdbb4a5fbe8ASAZU, Hideki    DEFINE_KEYCODE(TV_SATELLITE_CS),
2825b3dc861fb707f46064238ec832f7bdbb4a5fbe8ASAZU, Hideki    DEFINE_KEYCODE(TV_SATELLITE_SERVICE),
2835b3dc861fb707f46064238ec832f7bdbb4a5fbe8ASAZU, Hideki    DEFINE_KEYCODE(TV_NETWORK),
2845b3dc861fb707f46064238ec832f7bdbb4a5fbe8ASAZU, Hideki    DEFINE_KEYCODE(TV_ANTENNA_CABLE),
2855b3dc861fb707f46064238ec832f7bdbb4a5fbe8ASAZU, Hideki    DEFINE_KEYCODE(TV_INPUT_HDMI_1),
2865b3dc861fb707f46064238ec832f7bdbb4a5fbe8ASAZU, Hideki    DEFINE_KEYCODE(TV_INPUT_HDMI_2),
2875b3dc861fb707f46064238ec832f7bdbb4a5fbe8ASAZU, Hideki    DEFINE_KEYCODE(TV_INPUT_HDMI_3),
2885b3dc861fb707f46064238ec832f7bdbb4a5fbe8ASAZU, Hideki    DEFINE_KEYCODE(TV_INPUT_HDMI_4),
2895b3dc861fb707f46064238ec832f7bdbb4a5fbe8ASAZU, Hideki    DEFINE_KEYCODE(TV_INPUT_COMPOSITE_1),
2905b3dc861fb707f46064238ec832f7bdbb4a5fbe8ASAZU, Hideki    DEFINE_KEYCODE(TV_INPUT_COMPOSITE_2),
2915b3dc861fb707f46064238ec832f7bdbb4a5fbe8ASAZU, Hideki    DEFINE_KEYCODE(TV_INPUT_COMPONENT_1),
2925b3dc861fb707f46064238ec832f7bdbb4a5fbe8ASAZU, Hideki    DEFINE_KEYCODE(TV_INPUT_COMPONENT_2),
2935b3dc861fb707f46064238ec832f7bdbb4a5fbe8ASAZU, Hideki    DEFINE_KEYCODE(TV_INPUT_VGA_1),
2945b3dc861fb707f46064238ec832f7bdbb4a5fbe8ASAZU, Hideki    DEFINE_KEYCODE(TV_AUDIO_DESCRIPTION),
2955b3dc861fb707f46064238ec832f7bdbb4a5fbe8ASAZU, Hideki    DEFINE_KEYCODE(TV_AUDIO_DESCRIPTION_MIX_UP),
2965b3dc861fb707f46064238ec832f7bdbb4a5fbe8ASAZU, Hideki    DEFINE_KEYCODE(TV_AUDIO_DESCRIPTION_MIX_DOWN),
2975b3dc861fb707f46064238ec832f7bdbb4a5fbe8ASAZU, Hideki    DEFINE_KEYCODE(TV_ZOOM_MODE),
2985b3dc861fb707f46064238ec832f7bdbb4a5fbe8ASAZU, Hideki    DEFINE_KEYCODE(TV_CONTENTS_MENU),
2995b3dc861fb707f46064238ec832f7bdbb4a5fbe8ASAZU, Hideki    DEFINE_KEYCODE(TV_MEDIA_CONTEXT_MENU),
3005b3dc861fb707f46064238ec832f7bdbb4a5fbe8ASAZU, Hideki    DEFINE_KEYCODE(TV_TIMER_PROGRAMMING),
3015b3dc861fb707f46064238ec832f7bdbb4a5fbe8ASAZU, Hideki    DEFINE_KEYCODE(HELP),
302872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright
303872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    { NULL, 0 }
304872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright};
305872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright
306872db4f11e407accccba9d37c335ef7e3597eba4Michael Wrightstatic const InputEventLabel AXES[] = {
307872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(X),
308872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(Y),
309872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(PRESSURE),
310872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(SIZE),
311872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(TOUCH_MAJOR),
312872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(TOUCH_MINOR),
313872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(TOOL_MAJOR),
314872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(TOOL_MINOR),
315872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(ORIENTATION),
316872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(VSCROLL),
317872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(HSCROLL),
318872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(Z),
319872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(RX),
320872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(RY),
321872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(RZ),
322872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(HAT_X),
323872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(HAT_Y),
324872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(LTRIGGER),
325872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(RTRIGGER),
326872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(THROTTLE),
327872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(RUDDER),
328872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(WHEEL),
329872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(GAS),
330872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(BRAKE),
331872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(DISTANCE),
332872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(TILT),
333872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(GENERIC_1),
334872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(GENERIC_2),
335872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(GENERIC_3),
336872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(GENERIC_4),
337872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(GENERIC_5),
338872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(GENERIC_6),
339872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(GENERIC_7),
340872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(GENERIC_8),
341872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(GENERIC_9),
342872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(GENERIC_10),
343872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(GENERIC_11),
344872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(GENERIC_12),
345872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(GENERIC_13),
346872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(GENERIC_14),
347872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(GENERIC_15),
348872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(GENERIC_16),
349872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright
350872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    // NOTE: If you add a new axis here you must also add it to several other files.
351872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    //       Refer to frameworks/base/core/java/android/view/MotionEvent.java for the full list.
352872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    { NULL, 0 }
353872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright};
354872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright
355872db4f11e407accccba9d37c335ef7e3597eba4Michael Wrightstatic const InputEventLabel LEDS[] = {
356872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_LED(NUM_LOCK),
357872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_LED(CAPS_LOCK),
358872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_LED(SCROLL_LOCK),
359872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_LED(COMPOSE),
360872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_LED(KANA),
361872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_LED(SLEEP),
362872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_LED(SUSPEND),
363872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_LED(MUTE),
364872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_LED(MISC),
365872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_LED(MAIL),
366872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_LED(CHARGING),
367872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_LED(CONTROLLER_1),
368872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_LED(CONTROLLER_2),
369872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_LED(CONTROLLER_3),
370872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_LED(CONTROLLER_4),
371872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright
372872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    // NOTE: If you add new LEDs here, you must also add them to Input.h
373872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    { NULL, 0 }
374872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright};
375872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright
376872db4f11e407accccba9d37c335ef7e3597eba4Michael Wrightstatic const InputEventLabel FLAGS[] = {
3775a7d2f9a15f0fc3799f855105aa07cf7ba534b6fJeff Brown    DEFINE_FLAG(VIRTUAL),
378872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_FLAG(FUNCTION),
379872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright
380872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    { NULL, 0 }
381872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright};
382872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright
383872db4f11e407accccba9d37c335ef7e3597eba4Michael Wrightstatic int lookupValueByLabel(const char* literal, const InputEventLabel *list) {
384872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    while (list->literal) {
385872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright        if (strcmp(literal, list->literal) == 0) {
386872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright            return list->value;
387872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright        }
388872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright        list++;
389872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    }
390872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    return list->value;
391872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright}
392872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright
393872db4f11e407accccba9d37c335ef7e3597eba4Michael Wrightstatic const char* lookupLabelByValue(int value, const InputEventLabel* list) {
394872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    while (list->literal) {
395872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright        if (list->value == value) {
396872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright            return list->literal;
397872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright        }
398872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright        list++;
399872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    }
400872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    return NULL;
401872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright}
402872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright
403872db4f11e407accccba9d37c335ef7e3597eba4Michael Wrightstatic int32_t getKeyCodeByLabel(const char* label) {
404872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    return int32_t(lookupValueByLabel(label, KEYCODES));
405872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright}
406872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright
407872db4f11e407accccba9d37c335ef7e3597eba4Michael Wrightstatic const char* getLabelByKeyCode(int32_t keyCode) {
408872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    if (keyCode >= 0 && keyCode < size(KEYCODES)) {
409872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright        return KEYCODES[keyCode].literal;
410872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    }
411872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    return NULL;
412872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright}
413872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright
414872db4f11e407accccba9d37c335ef7e3597eba4Michael Wrightstatic uint32_t getKeyFlagByLabel(const char* label) {
415872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    return uint32_t(lookupValueByLabel(label, FLAGS));
416872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright}
417872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright
418872db4f11e407accccba9d37c335ef7e3597eba4Michael Wrightstatic int32_t getAxisByLabel(const char* label) {
419872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    return int32_t(lookupValueByLabel(label, AXES));
420872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright}
421872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright
422872db4f11e407accccba9d37c335ef7e3597eba4Michael Wrightstatic const char* getAxisLabel(int32_t axisId) {
423872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    return lookupLabelByValue(axisId, AXES);
424872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright}
425872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright
426872db4f11e407accccba9d37c335ef7e3597eba4Michael Wrightstatic int32_t getLedByLabel(const char* label) {
427872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    return int32_t(lookupValueByLabel(label, LEDS));
428872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright}
429872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright
430872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright
431872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright} // namespace android
432872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright#endif // _LIBINPUT_INPUT_EVENT_LABELS_H
433