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..abc66f834414e90dab4ee8077a074e3f02a51fe4 100644 |
--- a/remoting/client/native_device_keymap_ios.cc |
+++ b/remoting/client/native_device_keymap_ios.cc |
@@ -201,17 +201,164 @@ const uint32_t usb_keycodes[] = { |
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 |
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"; |
+ LOG(WARNING) << "Attempted to decode out-of-range keycode."; |
return 0; |
} |
return usb_keycodes[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 ascii_keycode_combo[ascii_index]; |
+} |
+ |
} // namespace remoting |