Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / remoting / client / jni / android_keymap.cc
blob7f5653e0052c1013fe93db76eb1a87c477e8b302
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 "remoting/client/jni/android_keymap.h"
7 #include "base/logging.h"
9 namespace {
11 // These must be defined in the same order as the Android keycodes in
12 // <android/keycodes.h> and
13 // "ui/events/keycodes/keyboard_code_conversion_android.cc" . Some of these
14 // mappings assume a US keyboard layout for now.
15 const uint32 usb_keycodes[] = {
16 0, // UNKNOWN
17 0, // SOFT_LEFT
18 0, // SOFT_RIGHT
19 0, // HOME
20 0, // BACK
21 0, // CALL
22 0, // ENDCALL
24 0x070027, // 0
25 0x07001e, // 1
26 0x07001f, // 2
27 0x070020, // 3
28 0x070021, // 4
29 0x070022, // 5
30 0x070023, // 6
31 0x070024, // 7
32 0x070025, // 8
33 0x070026, // 9
35 0, // STAR
36 0, // POUND
37 0x070052, // DPAD_UP
38 0x070051, // DPAD_DOWN
39 0x070050, // DPAD_LEFT
40 0x07004f, // DPAD_RIGHT
41 0, // DPAD_CENTER
42 0, // VOLUME_UP
43 0, // VOLUME_DOWN
44 0, // POWER
45 0, // CAMERA
46 0, // CLEAR
48 0x070004, // A
49 0x070005, // B
50 0x070006, // C
51 0x070007, // D
52 0x070008, // E
53 0x070009, // F
54 0x07000a, // G
55 0x07000b, // H
56 0x07000c, // I
57 0x07000d, // J
58 0x07000e, // K
59 0x07000f, // L
60 0x070010, // M
61 0x070011, // N
62 0x070012, // O
63 0x070013, // P
64 0x070014, // Q
65 0x070015, // R
66 0x070016, // S
67 0x070017, // T
68 0x070018, // U
69 0x070019, // V
70 0x07001a, // W
71 0x07001b, // X
72 0x07001c, // Y
73 0x07001d, // Z
75 0x070036, // COMMA
76 0x070037, // PERIOD
78 0x0700e2, // ALT_LEFT
79 0x0700e6, // ALT_RIGHT
80 0x0700e1, // SHIFT_LEFT
81 0x0700e5, // SHIFT_RIGHT
83 0x07002b, // TAB
84 0x07002c, // SPACE
86 0, // SYM
87 0, // EXPLORER
88 0, // ENVELOPE
90 0x070028, // ENTER
91 0x07002a, // DEL (backspace)
93 0x070035, // GRAVE (backtick)
94 0x07002d, // MINUS
95 0x07002e, // EQUALS
96 0x07002f, // LEFT_BRACKET
97 0x070030, // RIGHT_BRACKET
98 0x070031, // BACKSLASH
99 0x070033, // SEMICOLON
100 0x070034, // APOSTROPHE
101 0x070038, // SLASH
103 0, // AT
104 0, // NUM
105 0, // HEADSETHOOK
106 0, // FOCUS
107 0, // PLUS
108 0, // MENU
109 0, // NOTIFICATION
110 0, // SEARCH
111 0, // MEDIA_PLAY_PAUSE
112 0, // MEDIA_STOP
113 0, // MEDIA_NEXT
114 0, // MEDIA_PREVIOUS
115 0, // MEDIA_REWIND
116 0, // MEDIA_FAST_FORWARD
117 0, // MUTE
119 0x07004b, // PAGE_UP
120 0x07004e, // PAGE_DOWN
122 0, // PICTSYMBOLS
123 0, // SWITCH_CHARSET
124 0, // BUTTON_A
125 0, // BUTTON_B
126 0, // BUTTON_C
127 0, // BUTTON_X
128 0, // BUTTON_Y
129 0, // BUTTON_Z
130 0, // BUTTON_L1
131 0, // BUTTON_R1
132 0, // BUTTON_L2
133 0, // BUTTON_R2
134 0, // BUTTON_THUMBL
135 0, // BUTTON_THUMBR
136 0, // BUTTON_START
137 0, // BUTTON_SELECT
138 0, // BUTTON_MODE
140 0x070029, // ESCAPE
141 0x07004c, // FORWARD_DEL
143 0x0700e0, // CTRL_LEFT
144 0x0700e4, // CTRL_RIGHT
145 0, // CAPS_LOCK
146 0, // SCROLL_LOCK
147 0x0700e3, // META_LEFT
148 0x0700e7, // META_RIGHT
149 0, // FUNCTION
151 0x070046, // SYSRQ (printscreen)
152 0x070048, // BREAK (pause)
153 0x07004a, // MOVE_HOME (home)
154 0x07004d, // MOVE_END (end)
155 0x070049, // INSERT
157 0, // FORWARD
158 0, // MEDIA_PLAY
159 0, // MEDIA_PAUSE
160 0, // MEDIA_CLOSE
161 0, // MEDIA_EJECT
162 0, // MEDIA_RECORD
164 0x07003a, // F1
165 0x07003b, // F2
166 0x07003c, // F3
167 0x07003d, // F4
168 0x07003e, // F5
169 0x07003f, // F6
170 0x070040, // F7
171 0x070041, // F8
172 0x070042, // F9
173 0x070043, // F10
174 0x070044, // F11
175 0x070045, // F12
177 0, // NUM_LOCK
179 0x070062, // NUMPAD_0
180 0x070059, // NUMPAD_1
181 0x07005a, // NUMPAD_2
182 0x07005b, // NUMPAD_3
183 0x07005c, // NUMPAD_4
184 0x07005d, // NUMPAD_5
185 0x07005e, // NUMPAD_6
186 0x07005f, // NUMPAD_7
187 0x070060, // NUMPAD_8
188 0x070061, // NUMPAD_9
190 0x070054, // NUMPAD_DIVIDE
191 0x070055, // NUMPAD_MULTIPLY
192 0x070056, // NUMPAD_SUBTRACT
193 0x070057, // NUMPAD_ADD
194 0x070063, // NUMPAD_DOT
195 0x070085, // NUMPAD_COMMA
196 0x070058, // NUMPAD_ENTER
197 0x070067, // NUMPAD_EQUALS
198 0x0700b6, // NUMPAD_LEFT_PAREN
199 0x0700b7, // NUMPAD_RIGHT_PAREN
202 } // namespace
204 namespace remoting {
206 uint32 AndroidKeycodeToUsbKeycode(size_t android) {
207 if (android >= sizeof (usb_keycodes) / sizeof (uint32)) {
208 LOG(WARNING) << "Attempted to decode out-of-range Android keycode";
209 return 0;
212 return usb_keycodes[android];
215 } // namespace remoting