diff options
author | shuchen@chromium.org <shuchen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-08-19 15:53:42 +0000 |
---|---|---|
committer | shuchen@chromium.org <shuchen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-08-19 15:53:42 +0000 |
commit | 3564f0e53e0671784271602ec406815010f77b5a (patch) | |
tree | 56c8b285e17dd8dd00f2c3ecfc8f2fc15e653763 | |
parent | d4c060f02bb5a8be331fbc832f1b826d039274d4 (diff) | |
download | chromium_src-3564f0e53e0671784271602ec406815010f77b5a.zip chromium_src-3564f0e53e0671784271602ec406815010f77b5a.tar.gz chromium_src-3564f0e53e0671784271602ec406815010f77b5a.tar.bz2 |
Merge 289565 "Set correct DOM key code string for functional keys."
> Set correct DOM key code string for functional keys.
>
> BUG=402935
> TEST=Verified on Pixel.
>
> Review URL: https://codereview.chromium.org/466223004
TBR=shuchen@chromium.org
Review URL: https://codereview.chromium.org/489523002
git-svn-id: svn://svn.chromium.org/chrome/branches/2062/src@290566 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/chromeos/input_method/input_method_engine.cc | 7 | ||||
-rw-r--r-- | ui/base/ime/chromeos/ime_keymap.cc | 27 | ||||
-rw-r--r-- | ui/base/ime/chromeos/ime_keymap.h | 3 |
3 files changed, 31 insertions, 6 deletions
diff --git a/chrome/browser/chromeos/input_method/input_method_engine.cc b/chrome/browser/chromeos/input_method/input_method_engine.cc index 0179772..55a0ac5 100644 --- a/chrome/browser/chromeos/input_method/input_method_engine.cc +++ b/chrome/browser/chromeos/input_method/input_method_engine.cc @@ -29,6 +29,7 @@ #include "ui/base/ime/chromeos/ime_keymap.h" #include "ui/events/event.h" #include "ui/events/event_processor.h" +#include "ui/events/keycodes/dom4/keycode_converter.h" #include "ui/keyboard/keyboard_controller.h" #include "ui/keyboard/keyboard_util.h" @@ -100,7 +101,11 @@ void GetExtensionKeyboardEventFromKeyEvent( DCHECK(ext_event); ext_event->type = (event.type() == ui::ET_KEY_RELEASED) ? "keyup" : "keydown"; - ext_event->code = event.code(); + std::string dom_code = event.code(); + if (dom_code == + ui::KeycodeConverter::GetInstance()->InvalidKeyboardEventCode()) + dom_code = ui::KeyboardCodeToDomKeycode(event.key_code()); + ext_event->code = dom_code; ext_event->key_code = static_cast<int>(event.key_code()); ext_event->alt_key = event.IsAltDown(); ext_event->ctrl_key = event.IsControlDown(); diff --git a/ui/base/ime/chromeos/ime_keymap.cc b/ui/base/ime/chromeos/ime_keymap.cc index c668609..ec3513a 100644 --- a/ui/base/ime/chromeos/ime_keymap.cc +++ b/ui/base/ime/chromeos/ime_keymap.cc @@ -134,6 +134,10 @@ const struct KeyCodeTable { {VKEY_VOLUME_MUTE, "VolumeMute"}, {VKEY_VOLUME_DOWN, "VolumeDown"}, {VKEY_VOLUME_UP, "VolumeUp"}, + {VKEY_BRIGHTNESS_DOWN, "BrightnessDown"}, + {VKEY_BRIGHTNESS_UP, "BrightnessUp"}, + {VKEY_MEDIA_LAUNCH_APP1, "ChromeOSSwitchWindow"}, + {VKEY_MEDIA_LAUNCH_APP2, "ChromeOSFullscreen"}, {VKEY_MEDIA_NEXT_TRACK, "MediaTrackNext"}, {VKEY_MEDIA_PREV_TRACK, "MediaTrackPrevious"}, {VKEY_MEDIA_STOP, "MediaStop"}, @@ -154,18 +158,27 @@ const struct KeyCodeTable { class KeyCodeMap { public: KeyCodeMap() { - for (size_t i = 0; i < arraysize(kKeyCodeTable); ++i) - map_[kKeyCodeTable[i].dom_code] = kKeyCodeTable[i].keyboard_code; + for (size_t i = 0; i < arraysize(kKeyCodeTable); ++i) { + map_dom_key_[kKeyCodeTable[i].dom_code] = kKeyCodeTable[i].keyboard_code; + map_key_dom_[kKeyCodeTable[i].keyboard_code] = kKeyCodeTable[i].dom_code; + } } KeyboardCode GetKeyboardCode(const std::string& dom_code) const { std::map<std::string, KeyboardCode>::const_iterator it = - map_.find(dom_code); - return (it == map_.end()) ? VKEY_UNKNOWN : it->second; + map_dom_key_.find(dom_code); + return (it == map_dom_key_.end()) ? VKEY_UNKNOWN : it->second; + } + + std::string GetDomKeycode(KeyboardCode key_code) const { + std::map<KeyboardCode, std::string>::const_iterator it = + map_key_dom_.find(key_code); + return (it == map_key_dom_.end()) ? "" : it->second; } private: - std::map<std::string, KeyboardCode> map_; + std::map<std::string, KeyboardCode> map_dom_key_; + std::map<KeyboardCode, std::string> map_key_dom_; }; base::LazyInstance<KeyCodeMap>::Leaky g_keycode_map = @@ -177,4 +190,8 @@ KeyboardCode DomKeycodeToKeyboardCode(const std::string& code) { return g_keycode_map.Get().GetKeyboardCode(code); } +std::string KeyboardCodeToDomKeycode(KeyboardCode code) { + return g_keycode_map.Get().GetDomKeycode(code); +} + } // namespace ui diff --git a/ui/base/ime/chromeos/ime_keymap.h b/ui/base/ime/chromeos/ime_keymap.h index 7d41b3f..a4cdf0d 100644 --- a/ui/base/ime/chromeos/ime_keymap.h +++ b/ui/base/ime/chromeos/ime_keymap.h @@ -15,6 +15,9 @@ namespace ui { // Translates the DOM4 key code string to ui::KeyboardCode. UI_BASE_EXPORT KeyboardCode DomKeycodeToKeyboardCode(const std::string& code); +// Translates the ui::KeyboardCode to DOM4 key code string. +UI_BASE_EXPORT std::string KeyboardCodeToDomKeycode(KeyboardCode code); + } // namespace ui #endif // UI_BASE_IME_CHROMEOS_IME_KEYMAP_H_ |