Index: remoting/client/native_device_keymap_ios.cc |
diff --git a/remoting/client/native_device_keymap_ios.cc b/remoting/client/native_device_keymap_ios.cc |
index ebaaa71350e8799e9e3a284855fc8915106cef84..8662a213cf15d182fcb4d7f1a881bd4bb4f5e273 100644 |
--- a/remoting/client/native_device_keymap_ios.cc |
+++ b/remoting/client/native_device_keymap_ios.cc |
@@ -8,197 +8,141 @@ |
namespace { |
-// TODO(nicholss): Copied from Android, no changes yet. See how broken this is. |
- |
-// These must be defined in the same order as the Android keycodes in |
-// <android/keycodes.h> and |
-// "ui/events/keycodes/keyboard_code_conversion_android.cc" . Some of these |
-// mappings assume a US keyboard layout for now. |
-const uint32_t usb_keycodes[] = { |
- 0, // UNKNOWN |
- 0, // SOFT_LEFT |
- 0, // SOFT_RIGHT |
- 0, // HOME |
- 0, // BACK |
- 0, // CALL |
- 0, // ENDCALL |
- |
- 0x070027, // 0 |
- 0x07001e, // 1 |
- 0x07001f, // 2 |
- 0x070020, // 3 |
- 0x070021, // 4 |
- 0x070022, // 5 |
- 0x070023, // 6 |
- 0x070024, // 7 |
- 0x070025, // 8 |
- 0x070026, // 9 |
- |
- 0, // STAR |
- 0, // POUND |
- 0x070052, // DPAD_UP |
- 0x070051, // DPAD_DOWN |
- 0x070050, // DPAD_LEFT |
- 0x07004f, // DPAD_RIGHT |
- 0, // DPAD_CENTER |
- 0, // VOLUME_UP |
- 0, // VOLUME_DOWN |
- 0, // POWER |
- 0, // CAMERA |
- 0, // CLEAR |
- |
- 0x070004, // A |
- 0x070005, // B |
- 0x070006, // C |
- 0x070007, // D |
- 0x070008, // E |
- 0x070009, // F |
- 0x07000a, // G |
- 0x07000b, // H |
- 0x07000c, // I |
- 0x07000d, // J |
- 0x07000e, // K |
- 0x07000f, // L |
- 0x070010, // M |
- 0x070011, // N |
- 0x070012, // O |
- 0x070013, // P |
- 0x070014, // Q |
- 0x070015, // R |
- 0x070016, // S |
- 0x070017, // T |
- 0x070018, // U |
- 0x070019, // V |
- 0x07001a, // W |
- 0x07001b, // X |
- 0x07001c, // Y |
- 0x07001d, // Z |
- |
- 0x070036, // COMMA |
- 0x070037, // PERIOD |
- |
- 0x0700e2, // ALT_LEFT |
- 0x0700e6, // ALT_RIGHT |
- 0x0700e1, // SHIFT_LEFT |
- 0x0700e5, // SHIFT_RIGHT |
- |
- 0x07002b, // TAB |
- 0x07002c, // SPACE |
- |
- 0, // SYM |
- 0, // EXPLORER |
- 0, // ENVELOPE |
- |
- 0x070028, // ENTER |
- 0x07002a, // DEL (backspace) |
- |
- 0x070035, // GRAVE (backtick) |
- 0x07002d, // MINUS |
- 0x07002e, // EQUALS |
- 0x07002f, // LEFT_BRACKET |
- 0x070030, // RIGHT_BRACKET |
- 0x070031, // BACKSLASH |
- 0x070033, // SEMICOLON |
- 0x070034, // APOSTROPHE |
- 0x070038, // SLASH |
- |
- 0, // AT |
- 0, // NUM |
- 0, // HEADSETHOOK |
- 0, // FOCUS |
- 0, // PLUS |
- 0, // MENU |
- 0, // NOTIFICATION |
- 0, // SEARCH |
- 0, // MEDIA_PLAY_PAUSE |
- 0, // MEDIA_STOP |
- 0, // MEDIA_NEXT |
- 0, // MEDIA_PREVIOUS |
- 0, // MEDIA_REWIND |
- 0, // MEDIA_FAST_FORWARD |
- 0, // MUTE |
- |
- 0x07004b, // PAGE_UP |
- 0x07004e, // PAGE_DOWN |
- |
- 0, // PICTSYMBOLS |
- 0, // SWITCH_CHARSET |
- 0, // BUTTON_A |
- 0, // BUTTON_B |
- 0, // BUTTON_C |
- 0, // BUTTON_X |
- 0, // BUTTON_Y |
- 0, // BUTTON_Z |
- 0, // BUTTON_L1 |
- 0, // BUTTON_R1 |
- 0, // BUTTON_L2 |
- 0, // BUTTON_R2 |
- 0, // BUTTON_THUMBL |
- 0, // BUTTON_THUMBR |
- 0, // BUTTON_START |
- 0, // BUTTON_SELECT |
- 0, // BUTTON_MODE |
- |
- 0x070029, // ESCAPE |
- 0x07004c, // FORWARD_DEL |
- |
- 0x0700e0, // CTRL_LEFT |
- 0x0700e4, // CTRL_RIGHT |
- 0, // CAPS_LOCK |
- 0, // SCROLL_LOCK |
- 0x0700e3, // META_LEFT |
- 0x0700e7, // META_RIGHT |
- 0, // FUNCTION |
- |
- 0x070046, // SYSRQ (printscreen) |
- 0x070048, // BREAK (pause) |
- 0x07004a, // MOVE_HOME (home) |
- 0x07004d, // MOVE_END (end) |
- 0x070049, // INSERT |
- |
- 0, // FORWARD |
- 0, // MEDIA_PLAY |
- 0, // MEDIA_PAUSE |
- 0, // MEDIA_CLOSE |
- 0, // MEDIA_EJECT |
- 0, // MEDIA_RECORD |
- |
- 0x07003a, // F1 |
- 0x07003b, // F2 |
- 0x07003c, // F3 |
- 0x07003d, // F4 |
- 0x07003e, // F5 |
- 0x07003f, // F6 |
- 0x070040, // F7 |
- 0x070041, // F8 |
- 0x070042, // F9 |
- 0x070043, // F10 |
- 0x070044, // F11 |
- 0x070045, // F12 |
- |
- 0, // NUM_LOCK |
- |
- 0x070062, // NUMPAD_0 |
- 0x070059, // NUMPAD_1 |
- 0x07005a, // NUMPAD_2 |
- 0x07005b, // NUMPAD_3 |
- 0x07005c, // NUMPAD_4 |
- 0x07005d, // NUMPAD_5 |
- 0x07005e, // NUMPAD_6 |
- 0x07005f, // NUMPAD_7 |
- 0x070060, // NUMPAD_8 |
- 0x070061, // NUMPAD_9 |
- |
- 0x070054, // NUMPAD_DIVIDE |
- 0x070055, // NUMPAD_MULTIPLY |
- 0x070056, // NUMPAD_SUBTRACT |
- 0x070057, // NUMPAD_ADD |
- 0x070063, // NUMPAD_DOT |
- 0x070085, // NUMPAD_COMMA |
- 0x070058, // NUMPAD_ENTER |
- 0x070067, // NUMPAD_EQUALS |
- 0x0700b6, // NUMPAD_LEFT_PAREN |
- 0x0700b7, // NUMPAD_RIGHT_PAREN |
+const remoting::KeycodeWithModifier ascii_keycode_combo[] = { |
+ // [#] Numbering fields by index. |
+ {0, 0}, // [0] |
+ {0, 0}, // |
+ {0, 0}, // |
+ {0, 0}, // |
+ {0, 0}, // |
+ {0, 0}, // |
+ {0, 0}, // |
+ {0, 0}, // |
+ {0, 0}, // |
+ {0, 0}, // |
+ {0x070028, 0}, // [10] ENTER |
+ {0, 0}, // |
+ {0, 0}, // |
+ {0, 0}, // |
+ {0, 0}, // |
+ {0, 0}, // |
+ {0, 0}, // |
+ {0, 0}, // |
+ {0, 0}, // |
+ {0, 0}, // |
+ {0, 0}, // [20] |
+ {0, 0}, // |
+ {0, 0}, // |
+ {0, 0}, // |
+ {0, 0}, // |
+ {0, 0}, // |
+ {0, 0}, // |
+ {0, 0}, // |
+ {0, 0}, // |
+ {0, 0}, // |
+ {0, 0}, // [30] |
+ {0, 0}, // |
+ {0x07002c, 0}, // SPACE |
+ {0x07001e, 0x0700e1}, // ! |
+ {0x070034, 0x0700e1}, // " |
+ {0x070020, 0x0700e1}, // # |
+ {0x070021, 0x0700e1}, // $ |
+ {0x070022, 0x0700e1}, // % |
+ {0x070024, 0x0700e1}, // & |
+ {0x070034, 0}, // ' |
+ {0x070026, 0x0700e1}, // [40] ( |
+ {0x070027, 0x0700e1}, // ) |
+ {0x070025, 0x0700e1}, // * |
+ {0x07002e, 0x0700e1}, // + |
+ {0x070036, 0}, // , |
+ {0x07002d, 0}, // - |
+ {0x070037, 0}, // . |
+ {0x070038, 0}, // / |
+ {0x070027, 0}, // 0 |
+ {0x07001e, 0}, // 1 |
+ {0x07001f, 0}, // [50] 2 |
+ {0x070020, 0}, // 3 |
+ {0x070021, 0}, // 4 |
+ {0x070022, 0}, // 5 |
+ {0x070023, 0}, // 6 |
+ {0x070024, 0}, // 7 |
+ {0x070025, 0}, // 8 |
+ {0x070026, 0}, // 9 |
+ {0x070033, 0x0700e1}, // : |
+ {0x070033, 0}, // ; |
+ {0x070036, 0x0700e1}, // [60] < |
+ {0x07002e, 0}, // = |
+ {0x070037, 0x0700e1}, // > |
+ {0x070038, 0x0700e1}, // ? |
+ {0x07001f, 0x0700e1}, // @ |
+ {0x070004, 0x0700e1}, // A |
+ {0x070005, 0x0700e1}, // B |
+ {0x070006, 0x0700e1}, // C |
+ {0x070007, 0x0700e1}, // D |
+ {0x070008, 0x0700e1}, // E |
+ {0x070009, 0x0700e1}, // [70] F |
+ {0x07000a, 0x0700e1}, // G |
+ {0x07000b, 0x0700e1}, // H |
+ {0x07000c, 0x0700e1}, // I |
+ {0x07000d, 0x0700e1}, // J |
+ {0x07000e, 0x0700e1}, // K |
+ {0x07000f, 0x0700e1}, // L |
+ {0x070010, 0x0700e1}, // M |
+ {0x070011, 0x0700e1}, // N |
+ {0x070012, 0x0700e1}, // O |
+ {0x070013, 0x0700e1}, // [80] P |
+ {0x070014, 0x0700e1}, // Q |
+ {0x070015, 0x0700e1}, // R |
+ {0x070016, 0x0700e1}, // S |
+ {0x070017, 0x0700e1}, // T |
+ {0x070018, 0x0700e1}, // U |
+ {0x070019, 0x0700e1}, // V |
+ {0x07001a, 0x0700e1}, // W |
+ {0x07001b, 0x0700e1}, // X |
+ {0x07001c, 0x0700e1}, // Y |
+ {0x07001d, 0x0700e1}, // [90] Z |
+ {0x07002f, 0}, // [ |
+ {0x070031, 0}, // BACKSLASH |
+ {0x070030, 0}, // ] |
+ {0x070023, 0x0700e1}, // ^ |
+ {0x07002d, 0x0700e1}, // _ |
+ {0, 0}, // |
+ {0x070004, 0}, // a |
+ {0x070005, 0}, // b |
+ {0x070006, 0}, // c |
+ {0x070007, 0}, // [100] d |
+ {0x070008, 0}, // e |
+ {0x070009, 0}, // f |
+ {0x07000a, 0}, // g |
+ {0x07000b, 0}, // h |
+ {0x07000c, 0}, // i |
+ {0x07000d, 0}, // j |
+ {0x07000e, 0}, // k |
+ {0x07000f, 0}, // l |
+ {0x070010, 0}, // m |
+ {0x070011, 0}, // [110] n |
+ {0x070012, 0}, // o |
+ {0x070013, 0}, // p |
+ {0x070014, 0}, // q |
+ {0x070015, 0}, // r |
+ {0x070016, 0}, // s |
+ {0x070017, 0}, // t |
+ {0x070018, 0}, // u |
+ {0x070019, 0}, // v |
+ {0x07001a, 0}, // w |
+ {0x07001b, 0}, // [120] x |
+ {0x07001c, 0}, // y |
+ {0x07001d, 0}, // z |
+ {0x07002f, 0x0700e1}, // { |
+ {0x070031, 0x0700e1}, // | |
+ {0x070030, 0x0700e1}, // } |
+ {0x070035, 0x0700e1}, // ~ |
+ {0, 0}, // [127] |
+ {0x0700e1, 0}, // SHIFT |
+ {0x07002a, 0}, // BACKSPACE |
+ {0x0700e0, 0}, // CTRL |
+ {0x0700e2, 0}, // ALT |
+ {0x07004c, 0} // DEL |
}; |
} // namespace |
@@ -206,12 +150,18 @@ const uint32_t usb_keycodes[] = { |
namespace remoting { |
uint32_t NativeDeviceKeycodeToUsbKeycode(size_t device_keycode) { |
- if (device_keycode >= sizeof(usb_keycodes) / sizeof(uint32_t)) { |
- LOG(WARNING) << "Attempted to decode out-of-range Android keycode"; |
- return 0; |
+ 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.
|
+ return device_keycode; |
+} |
+ |
+KeycodeWithModifier AsciiToUsbKeycodeWithModifier(const char& ascii) { |
+ size_t ascii_index = (size_t)ascii; |
+ if (ascii_index >= sizeof(ascii_keycode_combo) / sizeof(uint32_t)) { |
+ LOG(WARNING) << "Attempted to decode out-of-range ascii character."; |
+ return ascii_keycode_combo[0]; |
} |
- return usb_keycodes[device_keycode]; |
+ return ascii_keycode_combo[ascii_index]; |
} |
} // namespace remoting |