1a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 2a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// found in the LICENSE file. 4a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 5a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "ui/base/ime/chromeos/ime_keymap.h" 6a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 7f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include <map> 8f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 9f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "base/lazy_instance.h" 10a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 11a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)namespace ui { 12a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 13f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)namespace { 14f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 15f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)const struct KeyCodeTable { 16f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) KeyboardCode keyboard_code; 17f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) const char* dom_code; 18f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} kKeyCodeTable[] = { 19f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_BACK, "Backspace"}, 20f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_TAB, "Tab"}, 21f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_RETURN, "Enter"}, 22f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_MENU, "ContextMenu"}, 23f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_PAUSE, "Pause"}, 24f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_CAPITAL, "CapsLock"}, 25f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_KANA, "KanaMode"}, 26f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_HANGUL, "HangulMode"}, 27f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_HANJA, "Hanja"}, 28f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_KANJI, "Kanji"}, 29f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_ESCAPE, "Escape"}, 30f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_CONVERT, "Convert"}, 31f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_NONCONVERT, "NoConvert"}, 32f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_SPACE, "Space"}, 33f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_END, "End"}, 34f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_HOME, "Home"}, 35f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_LEFT, "ArrowLeft"}, 36f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_UP, "ArrowUp"}, 37f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_RIGHT, "ArrowRight"}, 38f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_DOWN, "ArrowDown"}, 39f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_PRINT, "PrintScreen"}, 40f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_INSERT, "Insert"}, 41f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_DELETE, "Delete"}, 42f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_HELP, "Help"}, 43f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_0, "Digit0"}, 44f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_1, "Digit1"}, 45f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_2, "Digit2"}, 46f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_3, "Digit3"}, 47f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_4, "Digit4"}, 48f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_5, "Digit5"}, 49f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_6, "Digit6"}, 50f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_7, "Digit7"}, 51f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_8, "Digit8"}, 52f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_9, "Digit9"}, 53f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_A, "KeyA"}, 54f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_B, "KeyB"}, 55f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_C, "KeyC"}, 56f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_D, "KeyD"}, 57f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_E, "KeyE"}, 58f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_F, "KeyF"}, 59f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_G, "KeyG"}, 60f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_H, "KeyH"}, 61f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_I, "KeyI"}, 62f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_J, "KeyJ"}, 63f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_K, "KeyK"}, 64f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_L, "KeyL"}, 65f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_M, "KeyM"}, 66f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_N, "KeyN"}, 67f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_O, "KeyO"}, 68f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_P, "KeyP"}, 69f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_Q, "KeyQ"}, 70f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_R, "KeyR"}, 71f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_S, "KeyS"}, 72f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_T, "KeyT"}, 73f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_U, "KeyU"}, 74f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_V, "KeyV"}, 75f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_W, "KeyW"}, 76f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_X, "KeyX"}, 77f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_Y, "KeyY"}, 78f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_Z, "KeyZ"}, 79f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_LWIN, "OSLeft"}, 80f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_RWIN, "OSRight"}, 81f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_NUMPAD0, "Numpad0"}, 82f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_NUMPAD1, "Numpad1"}, 83f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_NUMPAD2, "Numpad2"}, 84f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_NUMPAD3, "Numpad3"}, 85f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_NUMPAD4, "Numpad4"}, 86f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_NUMPAD5, "Numpad5"}, 87f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_NUMPAD6, "Numpad6"}, 88f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_NUMPAD7, "Numpad7"}, 89f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_NUMPAD8, "Numpad8"}, 90f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_NUMPAD9, "Numpad9"}, 91f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_MULTIPLY, "NumpadMultiply"}, 92f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_ADD, "NumpadAdd"}, 93f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_SUBTRACT, "NumpadSubtract"}, 94f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_DECIMAL, "NumpadDecimal"}, 95f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_DIVIDE, "NumpadDivide"}, 96f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_F1, "F1"}, 97f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_F2, "F2"}, 98f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_F3, "F3"}, 99f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_F4, "F4"}, 100f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_F5, "F5"}, 101f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_F6, "F6"}, 102f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_F7, "F7"}, 103f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_F8, "F8"}, 104f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_F9, "F9"}, 105f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_F10, "F10"}, 106f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_F11, "F11"}, 107f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_F12, "F12"}, 108f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_F13, "F13"}, 109f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_F14, "F14"}, 110f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_F15, "F15"}, 111f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_F16, "F16"}, 112f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_F17, "F17"}, 113f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_F18, "F18"}, 114f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_F19, "F19"}, 115f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_F20, "F20"}, 116f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_F21, "F21"}, 117f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_F22, "F22"}, 118f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_F23, "F23"}, 119f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_F24, "F24"}, 120f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_NUMLOCK, "NumLock"}, 121f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_SCROLL, "ScrollLock"}, 122f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_LSHIFT, "ShiftLeft"}, 123f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_RSHIFT, "ShiftRight"}, 124f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_LCONTROL, "CtrlLeft"}, 125f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_RCONTROL, "CtrlRight"}, 126f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_LMENU, "AltLeft"}, 127f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_RMENU, "AltRight"}, 128f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_BROWSER_BACK, "BrowserBack"}, 129f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_BROWSER_FORWARD, "BrowserForward"}, 130f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_BROWSER_REFRESH, "BrowserRefresh"}, 131f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_BROWSER_STOP, "BrowserStop"}, 132f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_BROWSER_SEARCH, "BrowserSearch"}, 133f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_BROWSER_HOME, "BrowserHome"}, 134f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_VOLUME_MUTE, "VolumeMute"}, 135f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_VOLUME_DOWN, "VolumeDown"}, 136f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_VOLUME_UP, "VolumeUp"}, 137929504d64b38e05de7355e162311d6791ad6f54dBo Liu {VKEY_BRIGHTNESS_DOWN, "BrightnessDown"}, 138929504d64b38e05de7355e162311d6791ad6f54dBo Liu {VKEY_BRIGHTNESS_UP, "BrightnessUp"}, 139929504d64b38e05de7355e162311d6791ad6f54dBo Liu {VKEY_MEDIA_LAUNCH_APP1, "ChromeOSSwitchWindow"}, 140929504d64b38e05de7355e162311d6791ad6f54dBo Liu {VKEY_MEDIA_LAUNCH_APP2, "ChromeOSFullscreen"}, 141f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_MEDIA_NEXT_TRACK, "MediaTrackNext"}, 142f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_MEDIA_PREV_TRACK, "MediaTrackPrevious"}, 143f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_MEDIA_STOP, "MediaStop"}, 144f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_MEDIA_PLAY_PAUSE, "MediaPlayPause"}, 145f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_MEDIA_LAUNCH_MAIL, "LaunchMail"}, 146f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_OEM_1, "Semicolon"}, 147f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_OEM_PLUS, "Equal"}, 148f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_OEM_COMMA, "Comma"}, 149f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_OEM_MINUS, "Minus"}, 150f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_OEM_PERIOD, "Period"}, 151f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_OEM_2, "Slash"}, 152f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_OEM_3, "Backquote"}, 153f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_OEM_4, "BracketLeft"}, 154f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_OEM_5, "Backslash"}, 155f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_OEM_6, "BracketRight"}, 156f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) {VKEY_OEM_7, "Quote"}}; 157f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 158f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)class KeyCodeMap { 159f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) public: 160f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) KeyCodeMap() { 161929504d64b38e05de7355e162311d6791ad6f54dBo Liu for (size_t i = 0; i < arraysize(kKeyCodeTable); ++i) { 162929504d64b38e05de7355e162311d6791ad6f54dBo Liu map_dom_key_[kKeyCodeTable[i].dom_code] = kKeyCodeTable[i].keyboard_code; 163929504d64b38e05de7355e162311d6791ad6f54dBo Liu map_key_dom_[kKeyCodeTable[i].keyboard_code] = kKeyCodeTable[i].dom_code; 164929504d64b38e05de7355e162311d6791ad6f54dBo Liu } 165f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) } 166f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 167f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) KeyboardCode GetKeyboardCode(const std::string& dom_code) const { 168f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::map<std::string, KeyboardCode>::const_iterator it = 169929504d64b38e05de7355e162311d6791ad6f54dBo Liu map_dom_key_.find(dom_code); 170929504d64b38e05de7355e162311d6791ad6f54dBo Liu return (it == map_dom_key_.end()) ? VKEY_UNKNOWN : it->second; 171929504d64b38e05de7355e162311d6791ad6f54dBo Liu } 172929504d64b38e05de7355e162311d6791ad6f54dBo Liu 173929504d64b38e05de7355e162311d6791ad6f54dBo Liu std::string GetDomKeycode(KeyboardCode key_code) const { 174929504d64b38e05de7355e162311d6791ad6f54dBo Liu std::map<KeyboardCode, std::string>::const_iterator it = 175929504d64b38e05de7355e162311d6791ad6f54dBo Liu map_key_dom_.find(key_code); 176929504d64b38e05de7355e162311d6791ad6f54dBo Liu return (it == map_key_dom_.end()) ? "" : it->second; 177a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) } 178f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 179f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) private: 180929504d64b38e05de7355e162311d6791ad6f54dBo Liu std::map<std::string, KeyboardCode> map_dom_key_; 181929504d64b38e05de7355e162311d6791ad6f54dBo Liu std::map<KeyboardCode, std::string> map_key_dom_; 182f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)}; 183f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 184f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)base::LazyInstance<KeyCodeMap>::Leaky g_keycode_map = 185f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) LAZY_INSTANCE_INITIALIZER; 186f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 187f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} // namespace 188f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 189f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)KeyboardCode DomKeycodeToKeyboardCode(const std::string& code) { 190f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) return g_keycode_map.Get().GetKeyboardCode(code); 191a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} 192a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 193929504d64b38e05de7355e162311d6791ad6f54dBo Liustd::string KeyboardCodeToDomKeycode(KeyboardCode code) { 194929504d64b38e05de7355e162311d6791ad6f54dBo Liu return g_keycode_map.Get().GetDomKeycode(code); 195929504d64b38e05de7355e162311d6791ad6f54dBo Liu} 196929504d64b38e05de7355e162311d6791ad6f54dBo Liu 197a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} // namespace ui 198