summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorshuchen@chromium.org <shuchen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-08-19 15:53:42 +0000
committershuchen@chromium.org <shuchen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-08-19 15:53:42 +0000
commit3564f0e53e0671784271602ec406815010f77b5a (patch)
tree56c8b285e17dd8dd00f2c3ecfc8f2fc15e653763
parentd4c060f02bb5a8be331fbc832f1b826d039274d4 (diff)
downloadchromium_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.cc7
-rw-r--r--ui/base/ime/chromeos/ime_keymap.cc27
-rw-r--r--ui/base/ime/chromeos/ime_keymap.h3
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_