1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "ui/events/keycodes/keyboard_code_conversion_android.h"
7 #include <android/keycodes.h>
13 // The Android NDK does not provide values for these yet:
15 AKEYCODE_ESCAPE = 111,
16 AKEYCODE_FORWARD_DEL = 112,
17 AKEYCODE_CTRL_LEFT = 113,
18 AKEYCODE_CTRL_RIGHT = 114,
19 AKEYCODE_CAPS_LOCK = 115,
20 AKEYCODE_SCROLL_LOCK = 116,
21 AKEYCODE_META_LEFT = 117,
22 AKEYCODE_META_RIGHT = 118,
24 AKEYCODE_INSERT = 124,
25 AKEYCODE_MEDIA_PLAY = 126,
26 AKEYCODE_MEDIA_PAUSE = 127,
39 AKEYCODE_NUM_LOCK = 143,
40 AKEYCODE_NUMPAD_0 = 144,
41 AKEYCODE_NUMPAD_1 = 145,
42 AKEYCODE_NUMPAD_2 = 146,
43 AKEYCODE_NUMPAD_3 = 147,
44 AKEYCODE_NUMPAD_4 = 148,
45 AKEYCODE_NUMPAD_5 = 149,
46 AKEYCODE_NUMPAD_6 = 150,
47 AKEYCODE_NUMPAD_7 = 151,
48 AKEYCODE_NUMPAD_8 = 152,
49 AKEYCODE_NUMPAD_9 = 153,
50 AKEYCODE_NUMPAD_DIVIDE = 154,
51 AKEYCODE_NUMPAD_MULTIPLY = 155,
52 AKEYCODE_NUMPAD_SUBTRACT = 156,
53 AKEYCODE_NUMPAD_ADD = 157,
54 AKEYCODE_NUMPAD_DOT = 158,
55 AKEYCODE_VOLUME_MUTE = 164,
56 AKEYCODE_CHANNEL_UP = 166,
57 AKEYCODE_CHANNEL_DOWN = 167,
62 KeyboardCode KeyboardCodeFromAndroidKeyCode(int keycode) {
63 // Does not provide all key codes, and does not handle all keys.
71 case AKEYCODE_DPAD_CENTER:
74 case AKEYCODE_SHIFT_LEFT:
76 case AKEYCODE_SHIFT_RIGHT:
78 // Back will serve as escape, although we may not have access to it.
85 case AKEYCODE_DPAD_LEFT:
87 case AKEYCODE_DPAD_UP:
89 case AKEYCODE_DPAD_RIGHT:
91 case AKEYCODE_DPAD_DOWN:
165 case AKEYCODE_VOLUME_DOWN:
166 return VKEY_VOLUME_DOWN;
167 case AKEYCODE_VOLUME_UP:
168 return VKEY_VOLUME_UP;
169 case AKEYCODE_MEDIA_NEXT:
170 return VKEY_MEDIA_NEXT_TRACK;
171 case AKEYCODE_MEDIA_PREVIOUS:
172 return VKEY_MEDIA_PREV_TRACK;
173 case AKEYCODE_MEDIA_STOP:
174 return VKEY_MEDIA_STOP;
175 case AKEYCODE_MEDIA_PAUSE:
176 return VKEY_MEDIA_PLAY_PAUSE;
178 case AKEYCODE_SEMICOLON:
181 return VKEY_OEM_COMMA;
183 return VKEY_OEM_MINUS;
184 case AKEYCODE_EQUALS:
185 return VKEY_OEM_PLUS;
186 case AKEYCODE_PERIOD:
187 return VKEY_OEM_PERIOD;
190 case AKEYCODE_LEFT_BRACKET:
192 case AKEYCODE_BACKSLASH:
194 case AKEYCODE_RIGHT_BRACKET:
197 case AKEYCODE_VOLUME_MUTE:
198 return VKEY_VOLUME_MUTE;
199 case AKEYCODE_ESCAPE:
201 case AKEYCODE_MEDIA_PLAY:
202 case AKEYCODE_MEDIA_PLAY_PAUSE:
203 return VKEY_MEDIA_PLAY_PAUSE;
206 case AKEYCODE_ALT_LEFT:
208 case AKEYCODE_ALT_RIGHT:
212 case AKEYCODE_APOSTROPHE:
214 case AKEYCODE_MEDIA_REWIND:
216 case AKEYCODE_MEDIA_FAST_FORWARD:
218 case AKEYCODE_PAGE_UP:
220 case AKEYCODE_PAGE_DOWN:
222 case AKEYCODE_FORWARD_DEL:
224 case AKEYCODE_CTRL_LEFT:
225 return VKEY_LCONTROL;
226 case AKEYCODE_CTRL_RIGHT:
227 return VKEY_RCONTROL;
228 case AKEYCODE_CAPS_LOCK:
230 case AKEYCODE_SCROLL_LOCK:
232 case AKEYCODE_META_LEFT:
234 case AKEYCODE_META_RIGHT:
238 case AKEYCODE_INSERT:
264 case AKEYCODE_NUM_LOCK:
266 case AKEYCODE_NUMPAD_0:
268 case AKEYCODE_NUMPAD_1:
270 case AKEYCODE_NUMPAD_2:
272 case AKEYCODE_NUMPAD_3:
274 case AKEYCODE_NUMPAD_4:
276 case AKEYCODE_NUMPAD_5:
278 case AKEYCODE_NUMPAD_6:
280 case AKEYCODE_NUMPAD_7:
282 case AKEYCODE_NUMPAD_8:
284 case AKEYCODE_NUMPAD_9:
286 case AKEYCODE_NUMPAD_DIVIDE:
288 case AKEYCODE_NUMPAD_MULTIPLY:
289 return VKEY_MULTIPLY;
290 case AKEYCODE_NUMPAD_SUBTRACT:
291 return VKEY_SUBTRACT;
292 case AKEYCODE_NUMPAD_ADD:
294 case AKEYCODE_NUMPAD_DOT:
296 case AKEYCODE_CHANNEL_UP:
298 case AKEYCODE_CHANNEL_DOWN: