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