Commit 8bf6535a authored by garykac@chromium.org's avatar garykac@chromium.org

Fix CodeForKeyboardEvent to properly calculate the scancode.

Current code just uses the key_event.nativeKeyCode which is copied
from the Windows' lParam. The proper scancode needs to be shifted
and masked out of the lParam (as is done for UsbKeyCodeForKeyboardEvent.

BUG=325015

Review URL: https://codereview.chromium.org/100533003

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@238362 0039d316-1c4b-4281-b951-d872f2087c98
parent 4510c9ab
...@@ -23,8 +23,13 @@ uint32_t UsbKeyCodeForKeyboardEvent(const WebKeyboardEvent& key_event) { ...@@ -23,8 +23,13 @@ uint32_t UsbKeyCodeForKeyboardEvent(const WebKeyboardEvent& key_event) {
} }
const char* CodeForKeyboardEvent(const WebKeyboardEvent& key_event) { const char* CodeForKeyboardEvent(const WebKeyboardEvent& key_event) {
// Extract the scancode and extended bit from the native key event's lParam.
int scancode = (key_event.nativeKeyCode >> 16) & 0x000000FF;
if ((key_event.nativeKeyCode & (1 << 24)) != 0)
scancode |= 0xe000;
ui::KeycodeConverter* key_converter = ui::KeycodeConverter::GetInstance(); ui::KeycodeConverter* key_converter = ui::KeycodeConverter::GetInstance();
return key_converter->NativeKeycodeToCode(key_event.nativeKeyCode); return key_converter->NativeKeycodeToCode(scancode);
} }
} // namespace content } // namespace content
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment