OLD | NEW |
| (Empty) |
1 // Copyright 2017 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. | |
4 | |
5 #include "remoting/client/native_device_keymap.h" | |
6 | |
7 #include "base/logging.h" | |
8 | |
9 namespace { | |
10 | |
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_t 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 | |
23 | |
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 | |
34 | |
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 | |
47 | |
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 | |
74 | |
75 0x070036, // COMMA | |
76 0x070037, // PERIOD | |
77 | |
78 0x0700e2, // ALT_LEFT | |
79 0x0700e6, // ALT_RIGHT | |
80 0x0700e1, // SHIFT_LEFT | |
81 0x0700e5, // SHIFT_RIGHT | |
82 | |
83 0x07002b, // TAB | |
84 0x07002c, // SPACE | |
85 | |
86 0, // SYM | |
87 0, // EXPLORER | |
88 0, // ENVELOPE | |
89 | |
90 0x070028, // ENTER | |
91 0x07002a, // DEL (backspace) | |
92 | |
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 | |
102 | |
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 | |
118 | |
119 0x07004b, // PAGE_UP | |
120 0x07004e, // PAGE_DOWN | |
121 | |
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 | |
139 | |
140 0x070029, // ESCAPE | |
141 0x07004c, // FORWARD_DEL | |
142 | |
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 | |
150 | |
151 0x070046, // SYSRQ (printscreen) | |
152 0x070048, // BREAK (pause) | |
153 0x07004a, // MOVE_HOME (home) | |
154 0x07004d, // MOVE_END (end) | |
155 0x070049, // INSERT | |
156 | |
157 0, // FORWARD | |
158 0, // MEDIA_PLAY | |
159 0, // MEDIA_PAUSE | |
160 0, // MEDIA_CLOSE | |
161 0, // MEDIA_EJECT | |
162 0, // MEDIA_RECORD | |
163 | |
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 | |
176 | |
177 0, // NUM_LOCK | |
178 | |
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 | |
189 | |
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 | |
200 }; | |
201 | |
202 } // namespace | |
203 | |
204 namespace remoting { | |
205 | |
206 uint32_t NativeDeviceKeycodeToUsbKeycode(size_t device_keycode) { | |
207 if (device_keycode >= sizeof(usb_keycodes) / sizeof(uint32_t)) { | |
208 LOG(WARNING) << "Attempted to decode out-of-range Android keycode"; | |
209 return 0; | |
210 } | |
211 | |
212 return usb_keycodes[device_keycode]; | |
213 } | |
214 | |
215 } // namespace remoting | |
OLD | NEW |