Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(143)

Side by Side Diff: remoting/client/native_device_keymap_ios.cc

Issue 2868383003: [CRD iOS] Send key events to the session. (Closed)
Patch Set: Adding backspace support to the keyboard. Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "remoting/client/native_device_keymap.h" 5 #include "remoting/client/native_device_keymap.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 8
9 namespace { 9 namespace {
10 10
11 // TODO(nicholss): Copied from Android, no changes yet. See how broken this is. 11 const remoting::KeycodeWithModifier ascii_keycode_combo[] = {
12 12 // [#] Numbering fields by index.
13 // These must be defined in the same order as the Android keycodes in 13 {0, 0}, // [0]
14 // <android/keycodes.h> and 14 {0, 0}, //
15 // "ui/events/keycodes/keyboard_code_conversion_android.cc" . Some of these 15 {0, 0}, //
16 // mappings assume a US keyboard layout for now. 16 {0, 0}, //
17 const uint32_t usb_keycodes[] = { 17 {0, 0}, //
18 0, // UNKNOWN 18 {0, 0}, //
19 0, // SOFT_LEFT 19 {0, 0}, //
20 0, // SOFT_RIGHT 20 {0, 0}, //
21 0, // HOME 21 {0, 0}, //
22 0, // BACK 22 {0, 0}, //
23 0, // CALL 23 {0x070028, 0}, // [10] ENTER
24 0, // ENDCALL 24 {0, 0}, //
25 25 {0, 0}, //
26 0x070027, // 0 26 {0, 0}, //
27 0x07001e, // 1 27 {0, 0}, //
28 0x07001f, // 2 28 {0, 0}, //
29 0x070020, // 3 29 {0, 0}, //
30 0x070021, // 4 30 {0, 0}, //
31 0x070022, // 5 31 {0, 0}, //
32 0x070023, // 6 32 {0, 0}, //
33 0x070024, // 7 33 {0, 0}, // [20]
34 0x070025, // 8 34 {0, 0}, //
35 0x070026, // 9 35 {0, 0}, //
36 36 {0, 0}, //
37 0, // STAR 37 {0, 0}, //
38 0, // POUND 38 {0, 0}, //
39 0x070052, // DPAD_UP 39 {0, 0}, //
40 0x070051, // DPAD_DOWN 40 {0, 0}, //
41 0x070050, // DPAD_LEFT 41 {0, 0}, //
42 0x07004f, // DPAD_RIGHT 42 {0, 0}, //
43 0, // DPAD_CENTER 43 {0, 0}, // [30]
44 0, // VOLUME_UP 44 {0, 0}, //
45 0, // VOLUME_DOWN 45 {0x07002c, 0}, // SPACE
46 0, // POWER 46 {0x07001e, 0x0700e1}, // !
47 0, // CAMERA 47 {0x070034, 0x0700e1}, // "
48 0, // CLEAR 48 {0x070020, 0x0700e1}, // #
49 49 {0x070021, 0x0700e1}, // $
50 0x070004, // A 50 {0x070022, 0x0700e1}, // %
51 0x070005, // B 51 {0x070024, 0x0700e1}, // &
52 0x070006, // C 52 {0x070034, 0}, // '
53 0x070007, // D 53 {0x070026, 0x0700e1}, // [40] (
54 0x070008, // E 54 {0x070027, 0x0700e1}, // )
55 0x070009, // F 55 {0x070025, 0x0700e1}, // *
56 0x07000a, // G 56 {0x07002e, 0x0700e1}, // +
57 0x07000b, // H 57 {0x070036, 0}, // ,
58 0x07000c, // I 58 {0x07002d, 0}, // -
59 0x07000d, // J 59 {0x070037, 0}, // .
60 0x07000e, // K 60 {0x070038, 0}, // /
61 0x07000f, // L 61 {0x070027, 0}, // 0
62 0x070010, // M 62 {0x07001e, 0}, // 1
63 0x070011, // N 63 {0x07001f, 0}, // [50] 2
64 0x070012, // O 64 {0x070020, 0}, // 3
65 0x070013, // P 65 {0x070021, 0}, // 4
66 0x070014, // Q 66 {0x070022, 0}, // 5
67 0x070015, // R 67 {0x070023, 0}, // 6
68 0x070016, // S 68 {0x070024, 0}, // 7
69 0x070017, // T 69 {0x070025, 0}, // 8
70 0x070018, // U 70 {0x070026, 0}, // 9
71 0x070019, // V 71 {0x070033, 0x0700e1}, // :
72 0x07001a, // W 72 {0x070033, 0}, // ;
73 0x07001b, // X 73 {0x070036, 0x0700e1}, // [60] <
74 0x07001c, // Y 74 {0x07002e, 0}, // =
75 0x07001d, // Z 75 {0x070037, 0x0700e1}, // >
76 76 {0x070038, 0x0700e1}, // ?
77 0x070036, // COMMA 77 {0x07001f, 0x0700e1}, // @
78 0x070037, // PERIOD 78 {0x070004, 0x0700e1}, // A
79 79 {0x070005, 0x0700e1}, // B
80 0x0700e2, // ALT_LEFT 80 {0x070006, 0x0700e1}, // C
81 0x0700e6, // ALT_RIGHT 81 {0x070007, 0x0700e1}, // D
82 0x0700e1, // SHIFT_LEFT 82 {0x070008, 0x0700e1}, // E
83 0x0700e5, // SHIFT_RIGHT 83 {0x070009, 0x0700e1}, // [70] F
84 84 {0x07000a, 0x0700e1}, // G
85 0x07002b, // TAB 85 {0x07000b, 0x0700e1}, // H
86 0x07002c, // SPACE 86 {0x07000c, 0x0700e1}, // I
87 87 {0x07000d, 0x0700e1}, // J
88 0, // SYM 88 {0x07000e, 0x0700e1}, // K
89 0, // EXPLORER 89 {0x07000f, 0x0700e1}, // L
90 0, // ENVELOPE 90 {0x070010, 0x0700e1}, // M
91 91 {0x070011, 0x0700e1}, // N
92 0x070028, // ENTER 92 {0x070012, 0x0700e1}, // O
93 0x07002a, // DEL (backspace) 93 {0x070013, 0x0700e1}, // [80] P
94 94 {0x070014, 0x0700e1}, // Q
95 0x070035, // GRAVE (backtick) 95 {0x070015, 0x0700e1}, // R
96 0x07002d, // MINUS 96 {0x070016, 0x0700e1}, // S
97 0x07002e, // EQUALS 97 {0x070017, 0x0700e1}, // T
98 0x07002f, // LEFT_BRACKET 98 {0x070018, 0x0700e1}, // U
99 0x070030, // RIGHT_BRACKET 99 {0x070019, 0x0700e1}, // V
100 0x070031, // BACKSLASH 100 {0x07001a, 0x0700e1}, // W
101 0x070033, // SEMICOLON 101 {0x07001b, 0x0700e1}, // X
102 0x070034, // APOSTROPHE 102 {0x07001c, 0x0700e1}, // Y
103 0x070038, // SLASH 103 {0x07001d, 0x0700e1}, // [90] Z
104 104 {0x07002f, 0}, // [
105 0, // AT 105 {0x070031, 0}, // BACKSLASH
106 0, // NUM 106 {0x070030, 0}, // ]
107 0, // HEADSETHOOK 107 {0x070023, 0x0700e1}, // ^
108 0, // FOCUS 108 {0x07002d, 0x0700e1}, // _
109 0, // PLUS 109 {0, 0}, //
110 0, // MENU 110 {0x070004, 0}, // a
111 0, // NOTIFICATION 111 {0x070005, 0}, // b
112 0, // SEARCH 112 {0x070006, 0}, // c
113 0, // MEDIA_PLAY_PAUSE 113 {0x070007, 0}, // [100] d
114 0, // MEDIA_STOP 114 {0x070008, 0}, // e
115 0, // MEDIA_NEXT 115 {0x070009, 0}, // f
116 0, // MEDIA_PREVIOUS 116 {0x07000a, 0}, // g
117 0, // MEDIA_REWIND 117 {0x07000b, 0}, // h
118 0, // MEDIA_FAST_FORWARD 118 {0x07000c, 0}, // i
119 0, // MUTE 119 {0x07000d, 0}, // j
120 120 {0x07000e, 0}, // k
121 0x07004b, // PAGE_UP 121 {0x07000f, 0}, // l
122 0x07004e, // PAGE_DOWN 122 {0x070010, 0}, // m
123 123 {0x070011, 0}, // [110] n
124 0, // PICTSYMBOLS 124 {0x070012, 0}, // o
125 0, // SWITCH_CHARSET 125 {0x070013, 0}, // p
126 0, // BUTTON_A 126 {0x070014, 0}, // q
127 0, // BUTTON_B 127 {0x070015, 0}, // r
128 0, // BUTTON_C 128 {0x070016, 0}, // s
129 0, // BUTTON_X 129 {0x070017, 0}, // t
130 0, // BUTTON_Y 130 {0x070018, 0}, // u
131 0, // BUTTON_Z 131 {0x070019, 0}, // v
132 0, // BUTTON_L1 132 {0x07001a, 0}, // w
133 0, // BUTTON_R1 133 {0x07001b, 0}, // [120] x
134 0, // BUTTON_L2 134 {0x07001c, 0}, // y
135 0, // BUTTON_R2 135 {0x07001d, 0}, // z
136 0, // BUTTON_THUMBL 136 {0x07002f, 0x0700e1}, // {
137 0, // BUTTON_THUMBR 137 {0x070031, 0x0700e1}, // |
138 0, // BUTTON_START 138 {0x070030, 0x0700e1}, // }
139 0, // BUTTON_SELECT 139 {0x070035, 0x0700e1}, // ~
140 0, // BUTTON_MODE 140 {0, 0}, // [127]
141 141 {0x0700e1, 0}, // SHIFT
142 0x070029, // ESCAPE 142 {0x07002a, 0}, // BACKSPACE
143 0x07004c, // FORWARD_DEL 143 {0x0700e0, 0}, // CTRL
144 144 {0x0700e2, 0}, // ALT
145 0x0700e0, // CTRL_LEFT 145 {0x07004c, 0} // DEL
146 0x0700e4, // CTRL_RIGHT
147 0, // CAPS_LOCK
148 0, // SCROLL_LOCK
149 0x0700e3, // META_LEFT
150 0x0700e7, // META_RIGHT
151 0, // FUNCTION
152
153 0x070046, // SYSRQ (printscreen)
154 0x070048, // BREAK (pause)
155 0x07004a, // MOVE_HOME (home)
156 0x07004d, // MOVE_END (end)
157 0x070049, // INSERT
158
159 0, // FORWARD
160 0, // MEDIA_PLAY
161 0, // MEDIA_PAUSE
162 0, // MEDIA_CLOSE
163 0, // MEDIA_EJECT
164 0, // MEDIA_RECORD
165
166 0x07003a, // F1
167 0x07003b, // F2
168 0x07003c, // F3
169 0x07003d, // F4
170 0x07003e, // F5
171 0x07003f, // F6
172 0x070040, // F7
173 0x070041, // F8
174 0x070042, // F9
175 0x070043, // F10
176 0x070044, // F11
177 0x070045, // F12
178
179 0, // NUM_LOCK
180
181 0x070062, // NUMPAD_0
182 0x070059, // NUMPAD_1
183 0x07005a, // NUMPAD_2
184 0x07005b, // NUMPAD_3
185 0x07005c, // NUMPAD_4
186 0x07005d, // NUMPAD_5
187 0x07005e, // NUMPAD_6
188 0x07005f, // NUMPAD_7
189 0x070060, // NUMPAD_8
190 0x070061, // NUMPAD_9
191
192 0x070054, // NUMPAD_DIVIDE
193 0x070055, // NUMPAD_MULTIPLY
194 0x070056, // NUMPAD_SUBTRACT
195 0x070057, // NUMPAD_ADD
196 0x070063, // NUMPAD_DOT
197 0x070085, // NUMPAD_COMMA
198 0x070058, // NUMPAD_ENTER
199 0x070067, // NUMPAD_EQUALS
200 0x0700b6, // NUMPAD_LEFT_PAREN
201 0x0700b7, // NUMPAD_RIGHT_PAREN
202 }; 146 };
203 147
204 } // namespace 148 } // namespace
205 149
206 namespace remoting { 150 namespace remoting {
207 151
208 uint32_t NativeDeviceKeycodeToUsbKeycode(size_t device_keycode) { 152 uint32_t NativeDeviceKeycodeToUsbKeycode(size_t device_keycode) {
209 if (device_keycode >= sizeof(usb_keycodes) / sizeof(uint32_t)) { 153 NOTIMPLEMENTED();
Yuwei 2017/05/15 19:38:07 input_stub_->SendKeyEvent(0, key.keycode, key.keyd
nicholss 2017/05/16 21:45:06 Yes, I removed the NOTIMPLEMENTED() btw.
210 LOG(WARNING) << "Attempted to decode out-of-range Android keycode"; 154 return device_keycode;
211 return 0; 155 }
156
157 KeycodeWithModifier AsciiToUsbKeycodeWithModifier(const char& ascii) {
158 size_t ascii_index = (size_t)ascii;
159 if (ascii_index >= sizeof(ascii_keycode_combo) / sizeof(uint32_t)) {
160 LOG(WARNING) << "Attempted to decode out-of-range ascii character.";
161 return ascii_keycode_combo[0];
212 } 162 }
213 163
214 return usb_keycodes[device_keycode]; 164 return ascii_keycode_combo[ascii_index];
215 } 165 }
216 166
217 } // namespace remoting 167 } // namespace remoting
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698