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),
302e50376eef0cf3c38991b48b29fa99a9d071abf49Joseph Cooper    DEFINE_KEYCODE(NAVIGATE_PREVIOUS),
303e50376eef0cf3c38991b48b29fa99a9d071abf49Joseph Cooper    DEFINE_KEYCODE(NAVIGATE_NEXT),
304e50376eef0cf3c38991b48b29fa99a9d071abf49Joseph Cooper    DEFINE_KEYCODE(NAVIGATE_IN),
305e50376eef0cf3c38991b48b29fa99a9d071abf49Joseph Cooper    DEFINE_KEYCODE(NAVIGATE_OUT),
306887b00dd28627d635f06a1ffca27553f265b28e0Anthony Hugh    DEFINE_KEYCODE(STEM_PRIMARY),
307887b00dd28627d635f06a1ffca27553f265b28e0Anthony Hugh    DEFINE_KEYCODE(STEM_1),
308887b00dd28627d635f06a1ffca27553f265b28e0Anthony Hugh    DEFINE_KEYCODE(STEM_2),
309887b00dd28627d635f06a1ffca27553f265b28e0Anthony Hugh    DEFINE_KEYCODE(STEM_3),
31001ed18677143bd44a3be64387857b8bd4d775c13David Stevens    DEFINE_KEYCODE(DPAD_UP_LEFT),
31101ed18677143bd44a3be64387857b8bd4d775c13David Stevens    DEFINE_KEYCODE(DPAD_DOWN_LEFT),
31201ed18677143bd44a3be64387857b8bd4d775c13David Stevens    DEFINE_KEYCODE(DPAD_UP_RIGHT),
31301ed18677143bd44a3be64387857b8bd4d775c13David Stevens    DEFINE_KEYCODE(DPAD_DOWN_RIGHT),
314d0aa330925e2a9e90ccaf7f7b4b103911f544c56Michael Wright    DEFINE_KEYCODE(MEDIA_SKIP_FORWARD),
315d0aa330925e2a9e90ccaf7f7b4b103911f544c56Michael Wright    DEFINE_KEYCODE(MEDIA_SKIP_BACKWARD),
316d0aa330925e2a9e90ccaf7f7b4b103911f544c56Michael Wright    DEFINE_KEYCODE(MEDIA_STEP_FORWARD),
317d0aa330925e2a9e90ccaf7f7b4b103911f544c56Michael Wright    DEFINE_KEYCODE(MEDIA_STEP_BACKWARD),
318a180e855f66db8e4aa4796247e55ca5372d53de2Nick Armstrong-Crews    DEFINE_KEYCODE(SOFT_SLEEP),
319e30f7e1e9ec2be958bbea54f3a09f509fc0a44f7Michael Wright    DEFINE_KEYCODE(CUT),
320e30f7e1e9ec2be958bbea54f3a09f509fc0a44f7Michael Wright    DEFINE_KEYCODE(COPY),
321e30f7e1e9ec2be958bbea54f3a09f509fc0a44f7Michael Wright    DEFINE_KEYCODE(PASTE),
322e7a57d128038492445caac998d55983fb6085dfaJim Miller    DEFINE_KEYCODE(SYSTEM_NAVIGATION_UP),
323e7a57d128038492445caac998d55983fb6085dfaJim Miller    DEFINE_KEYCODE(SYSTEM_NAVIGATION_DOWN),
324e7a57d128038492445caac998d55983fb6085dfaJim Miller    DEFINE_KEYCODE(SYSTEM_NAVIGATION_LEFT),
325e7a57d128038492445caac998d55983fb6085dfaJim Miller    DEFINE_KEYCODE(SYSTEM_NAVIGATION_RIGHT),
326872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright
327872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    { NULL, 0 }
328872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright};
329872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright
330872db4f11e407accccba9d37c335ef7e3597eba4Michael Wrightstatic const InputEventLabel AXES[] = {
331872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(X),
332872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(Y),
333872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(PRESSURE),
334872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(SIZE),
335872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(TOUCH_MAJOR),
336872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(TOUCH_MINOR),
337872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(TOOL_MAJOR),
338872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(TOOL_MINOR),
339872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(ORIENTATION),
340872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(VSCROLL),
341872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(HSCROLL),
342872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(Z),
343872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(RX),
344872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(RY),
345872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(RZ),
346872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(HAT_X),
347872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(HAT_Y),
348872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(LTRIGGER),
349872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(RTRIGGER),
350872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(THROTTLE),
351872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(RUDDER),
352872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(WHEEL),
353872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(GAS),
354872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(BRAKE),
355872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(DISTANCE),
356872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(TILT),
357872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(GENERIC_1),
358872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(GENERIC_2),
359872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(GENERIC_3),
360872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(GENERIC_4),
361872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(GENERIC_5),
362872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(GENERIC_6),
363872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(GENERIC_7),
364872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(GENERIC_8),
365872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(GENERIC_9),
366872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(GENERIC_10),
367872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(GENERIC_11),
368872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(GENERIC_12),
369872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(GENERIC_13),
370872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(GENERIC_14),
371872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(GENERIC_15),
372872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_AXIS(GENERIC_16),
373872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright
374872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    // NOTE: If you add a new axis here you must also add it to several other files.
375872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    //       Refer to frameworks/base/core/java/android/view/MotionEvent.java for the full list.
376872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    { NULL, 0 }
377872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright};
378872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright
379872db4f11e407accccba9d37c335ef7e3597eba4Michael Wrightstatic const InputEventLabel LEDS[] = {
380872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_LED(NUM_LOCK),
381872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_LED(CAPS_LOCK),
382872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_LED(SCROLL_LOCK),
383872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_LED(COMPOSE),
384872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_LED(KANA),
385872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_LED(SLEEP),
386872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_LED(SUSPEND),
387872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_LED(MUTE),
388872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_LED(MISC),
389872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_LED(MAIL),
390872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_LED(CHARGING),
391872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_LED(CONTROLLER_1),
392872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_LED(CONTROLLER_2),
393872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_LED(CONTROLLER_3),
394872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_LED(CONTROLLER_4),
395872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright
396872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    // NOTE: If you add new LEDs here, you must also add them to Input.h
397872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    { NULL, 0 }
398872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright};
399872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright
400872db4f11e407accccba9d37c335ef7e3597eba4Michael Wrightstatic const InputEventLabel FLAGS[] = {
4015a7d2f9a15f0fc3799f855105aa07cf7ba534b6fJeff Brown    DEFINE_FLAG(VIRTUAL),
402872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    DEFINE_FLAG(FUNCTION),
403c9aa628d065eb08d6fa30f0ac21c6eca4cfbab75Jeff Brown    DEFINE_FLAG(GESTURE),
404872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright
405872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    { NULL, 0 }
406872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright};
407872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright
408872db4f11e407accccba9d37c335ef7e3597eba4Michael Wrightstatic int lookupValueByLabel(const char* literal, const InputEventLabel *list) {
409872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    while (list->literal) {
410872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright        if (strcmp(literal, list->literal) == 0) {
411872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright            return list->value;
412872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright        }
413872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright        list++;
414872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    }
415872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    return list->value;
416872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright}
417872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright
418872db4f11e407accccba9d37c335ef7e3597eba4Michael Wrightstatic const char* lookupLabelByValue(int value, const InputEventLabel* list) {
419872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    while (list->literal) {
420872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright        if (list->value == value) {
421872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright            return list->literal;
422872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright        }
423872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright        list++;
424872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    }
425872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    return NULL;
426872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright}
427872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright
428872db4f11e407accccba9d37c335ef7e3597eba4Michael Wrightstatic int32_t getKeyCodeByLabel(const char* label) {
429872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    return int32_t(lookupValueByLabel(label, KEYCODES));
430872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright}
431872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright
432872db4f11e407accccba9d37c335ef7e3597eba4Michael Wrightstatic const char* getLabelByKeyCode(int32_t keyCode) {
433872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    if (keyCode >= 0 && keyCode < size(KEYCODES)) {
434872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright        return KEYCODES[keyCode].literal;
435872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    }
436872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    return NULL;
437872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright}
438872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright
439872db4f11e407accccba9d37c335ef7e3597eba4Michael Wrightstatic uint32_t getKeyFlagByLabel(const char* label) {
440872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    return uint32_t(lookupValueByLabel(label, FLAGS));
441872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright}
442872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright
443872db4f11e407accccba9d37c335ef7e3597eba4Michael Wrightstatic int32_t getAxisByLabel(const char* label) {
444872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    return int32_t(lookupValueByLabel(label, AXES));
445872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright}
446872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright
447872db4f11e407accccba9d37c335ef7e3597eba4Michael Wrightstatic const char* getAxisLabel(int32_t axisId) {
448872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    return lookupLabelByValue(axisId, AXES);
449872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright}
450872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright
451872db4f11e407accccba9d37c335ef7e3597eba4Michael Wrightstatic int32_t getLedByLabel(const char* label) {
452872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright    return int32_t(lookupValueByLabel(label, LEDS));
453872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright}
454872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright
455872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright
456872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright} // namespace android
457872db4f11e407accccba9d37c335ef7e3597eba4Michael Wright#endif // _LIBINPUT_INPUT_EVENT_LABELS_H
458