diff options
author | kevers@chromium.org <kevers@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-12-04 17:36:50 +0000 |
---|---|---|
committer | kevers@chromium.org <kevers@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-12-04 17:36:50 +0000 |
commit | 91c7914dbab1c1b1702f138162af1e5b363dcd47 (patch) | |
tree | f6bae6ca5c2e0c96b265a1e2edd91c14bea5cd3d /ui/keyboard | |
parent | 649dd8126f846d18fb434435ce18478144e7bc1c (diff) | |
download | chromium_src-91c7914dbab1c1b1702f138162af1e5b363dcd47.zip chromium_src-91c7914dbab1c1b1702f138162af1e5b363dcd47.tar.gz chromium_src-91c7914dbab1c1b1702f138162af1e5b363dcd47.tar.bz2 |
Add code field speced for DOM KeyEvent into virtual key events from the soft-keyboard.
BUG=324899
Review URL: https://codereview.chromium.org/99973002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@238716 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui/keyboard')
-rw-r--r-- | ui/keyboard/keyboard_ui_handler.cc | 3 | ||||
-rw-r--r-- | ui/keyboard/keyboard_util.cc | 3 | ||||
-rw-r--r-- | ui/keyboard/keyboard_util.h | 8 | ||||
-rw-r--r-- | ui/keyboard/resources/elements/kb-key-codes.html | 231 | ||||
-rw-r--r-- | ui/keyboard/resources/elements/kb-key-sequence.html | 1 | ||||
-rw-r--r-- | ui/keyboard/resources/elements/kb-key.html | 12 |
6 files changed, 143 insertions, 115 deletions
diff --git a/ui/keyboard/keyboard_ui_handler.cc b/ui/keyboard/keyboard_ui_handler.cc index 610d0e2..780e0be 100644 --- a/ui/keyboard/keyboard_ui_handler.cc +++ b/ui/keyboard/keyboard_ui_handler.cc @@ -102,12 +102,14 @@ void KeyboardUIHandler::HandleSendKeyEventMessage( std::string type; int char_value; int key_code; + std::string key_name; int modifiers; if (!args->GetDictionary(0, ¶ms) || !params->GetString("type", &type) || !params->GetInteger("charValue", &char_value) || !params->GetInteger("keyCode", &key_code) || + !params->GetString("keyName", &key_name) || !params->GetInteger("modifiers", &modifiers)) { LOG(ERROR) << "SendKeyEvent failed: bad argument"; return; @@ -123,6 +125,7 @@ void KeyboardUIHandler::HandleSendKeyEventMessage( if (!keyboard::SendKeyEvent(type, char_value, key_code, + key_name, modifiers, dispatcher)) { LOG(ERROR) << "sendKeyEvent failed"; diff --git a/ui/keyboard/keyboard_util.cc b/ui/keyboard/keyboard_util.cc index 42c26a0..1629a5b 100644 --- a/ui/keyboard/keyboard_util.cc +++ b/ui/keyboard/keyboard_util.cc @@ -110,6 +110,7 @@ bool MoveCursor(int swipe_direction, bool SendKeyEvent(const std::string type, int key_value, int key_code, + std::string key_name, int modifiers, aura::WindowEventDispatcher* dispatcher) { ui::EventType event_type = ui::ET_UNKNOWN; @@ -153,7 +154,7 @@ bool SendKeyEvent(const std::string type, } } - ui::KeyEvent event(event_type, code, modifiers, false); + ui::KeyEvent event(event_type, code, key_name, modifiers, false); dispatcher->AsRootWindowHostDelegate()->OnHostKeyEvent(&event); } return true; diff --git a/ui/keyboard/keyboard_util.h b/ui/keyboard/keyboard_util.h index b5dcefd..2321273 100644 --- a/ui/keyboard/keyboard_util.h +++ b/ui/keyboard/keyboard_util.h @@ -53,12 +53,14 @@ KEYBOARD_EXPORT bool MoveCursor(int swipe_direction, // Sends a fabricated key event, where |type| is the event type, |key_value| // is the unicode value of the character, |key_code| is the legacy key code -// value, and |modifier| indicates if any modifier keys are being virtually -// pressed. The event is dispatched to the active TextInputClient associated -// with |root_window|. The type may be "keydown" or "keyup". +// value, |key_name| is the name of the key as defined in the DOM3 key event +// specification, and |modifier| indicates if any modifier keys are being +// virtually pressed. The event is dispatched to the active TextInputClient +// associated with |root_window|. The type may be "keydown" or "keyup". KEYBOARD_EXPORT bool SendKeyEvent(std::string type, int key_value, int key_code, + std::string key_name, int modifiers, aura::WindowEventDispatcher* dispatcher); diff --git a/ui/keyboard/resources/elements/kb-key-codes.html b/ui/keyboard/resources/elements/kb-key-codes.html index 4efd1ec..d99a00f 100644 --- a/ui/keyboard/resources/elements/kb-key-codes.html +++ b/ui/keyboard/resources/elements/kb-key-codes.html @@ -35,121 +35,127 @@ // TODO(rsadam): Correctly propagate shutdown keycode. This is currently // ignored due to chromoting (crbug/146609) var keyCodes = { - '\b': {keyCode: 0x08, shiftModifier: false}, - '\t': {keyCode: 0x09, shiftModifier: false}, - '\n': {keyCode: 0x0D, shiftModifier: false}, - 'Esc': {keyCode: 0x1B, shiftModifier: false}, - ' ': {keyCode: 0x20, shiftModifier: false}, - 'Arrow-Left': {keyCode: 0x25, shiftModifier: undefined}, - 'Arrow-Up': {keyCode: 0x26, shiftModifier: undefined}, - 'Arrow-Right': {keyCode: 0x27, shiftModifier: undefined}, - 'Arrow-Down': {keyCode: 0x28, shiftModifier: undefined}, - '0': {keyCode: 0x30, shiftModifier: false}, - ')': {keyCode: 0x30, shiftModifier: true}, - '1': {keyCode: 0x31, shiftModifier: false}, - '!': {keyCode: 0x31, shiftModifier: true}, - '2': {keyCode: 0x32, shiftModifier: false}, - '@': {keyCode: 0x32, shiftModifier: true}, - '3': {keyCode: 0x33, shiftModifier: false}, - '#': {keyCode: 0x33, shiftModifier: true}, - '4': {keyCode: 0x34, shiftModifier: false}, - '$': {keyCode: 0x34, shiftModifier: true}, - '5': {keyCode: 0x35, shiftModifier: false}, - '%': {keyCode: 0x35, shiftModifier: true}, - '6': {keyCode: 0x36, shiftModifier: false}, - '^': {keyCode: 0x36, shiftModifier: true}, - '7': {keyCode: 0x37, shiftModifier: false}, - '&': {keyCode: 0x37, shiftModifier: true}, - '8': {keyCode: 0x38, shiftModifier: false}, - '*': {keyCode: 0x38, shiftModifier: true}, - '9': {keyCode: 0x39, shiftModifier: false}, - '(': {keyCode: 0x39, shiftModifier: true}, - 'a': {keyCode: 0x41, shiftModifier: false}, - 'A': {keyCode: 0x41, shiftModifier: true}, - 'b': {keyCode: 0x42, shiftModifier: false}, - 'B': {keyCode: 0x42, shiftModifier: true}, - 'c': {keyCode: 0x43, shiftModifier: false}, - 'C': {keyCode: 0x43, shiftModifier: true}, - 'd': {keyCode: 0x44, shiftModifier: false}, - 'D': {keyCode: 0x44, shiftModifier: true}, - 'e': {keyCode: 0x45, shiftModifier: false}, - 'E': {keyCode: 0x45, shiftModifier: true}, - 'f': {keyCode: 0x46, shiftModifier: false}, - 'F': {keyCode: 0x46, shiftModifier: true}, - 'g': {keyCode: 0x47, shiftModifier: false}, - 'G': {keyCode: 0x47, shiftModifier: true}, - 'h': {keyCode: 0x48, shiftModifier: false}, - 'H': {keyCode: 0x48, shiftModifier: true}, - 'i': {keyCode: 0x49, shiftModifier: false}, - 'I': {keyCode: 0x49, shiftModifier: true}, - 'j': {keyCode: 0x4A, shiftModifier: false}, - 'J': {keyCode: 0x4A, shiftModifier: true}, - 'k': {keyCode: 0x4B, shiftModifier: false}, - 'K': {keyCode: 0x4B, shiftModifier: true}, - 'l': {keyCode: 0x4C, shiftModifier: false}, - 'L': {keyCode: 0x4C, shiftModifier: true}, - 'm': {keyCode: 0x4D, shiftModifier: false}, - 'M': {keyCode: 0x4D, shiftModifier: true}, - 'n': {keyCode: 0x4E, shiftModifier: false}, - 'N': {keyCode: 0x4E, shiftModifier: true}, - 'o': {keyCode: 0x4F, shiftModifier: false}, - 'O': {keyCode: 0x4F, shiftModifier: true}, - 'p': {keyCode: 0x50, shiftModifier: false}, - 'P': {keyCode: 0x50, shiftModifier: true}, - 'q': {keyCode: 0x51, shiftModifier: false}, - 'Q': {keyCode: 0x51, shiftModifier: true}, - 'r': {keyCode: 0x52, shiftModifier: false}, - 'R': {keyCode: 0x52, shiftModifier: true}, - 's': {keyCode: 0x53, shiftModifier: false}, - 'S': {keyCode: 0x53, shiftModifier: true}, - 't': {keyCode: 0x54, shiftModifier: false}, - 'T': {keyCode: 0x54, shiftModifier: true}, - 'u': {keyCode: 0x55, shiftModifier: false}, - 'U': {keyCode: 0x55, shiftModifier: true}, - 'v': {keyCode: 0x56, shiftModifier: false}, - 'V': {keyCode: 0x56, shiftModifier: true}, - 'w': {keyCode: 0x57, shiftModifier: false}, - 'W': {keyCode: 0x57, shiftModifier: true}, - 'x': {keyCode: 0x58, shiftModifier: false}, - 'X': {keyCode: 0x58, shiftModifier: true}, - 'y': {keyCode: 0x59, shiftModifier: false}, - 'Y': {keyCode: 0x59, shiftModifier: true}, - 'z': {keyCode: 0x5A, shiftModifier: false}, - 'Z': {keyCode: 0x5A, shiftModifier: true}, + '\b': {keyCode: 0x08, keyName: 'Backspace', shiftModifier: false}, + '\t': {keyCode: 0x09, keyName: 'Tab', shiftModifier: false}, + '\n': {keyCode: 0x0D, keyName: 'Enter', shiftModifier: false}, + 'Esc': {keyCode: 0x1B, keyName: 'Escape', shiftModifier: false}, + ' ': {keyCode: 0x20, keyName: 'Space', shiftModifier: false}, + 'Arrow-Left': {keyCode: 0x25, keyName: 'ArrowLeft', + shiftModifier: undefined}, + 'Arrow-Up': {keyCode: 0x26, keyName: 'ArrowUp', shiftModifier: undefined}, + 'Arrow-Right': {keyCode: 0x27, keyName: 'ArrowRight', + shiftModifier: undefined}, + 'Arrow-Down': {keyCode: 0x28, keyName: 'ArrowDown', + shiftModifier: undefined}, + '0': {keyCode: 0x30, keyName: 'Digit0', shiftModifier: false}, + ')': {keyCode: 0x30, keyName: 'Digit0', shiftModifier: true}, + '1': {keyCode: 0x31, keyName: 'Digit1', shiftModifier: false}, + '!': {keyCode: 0x31, keyName: 'Digit1', shiftModifier: true}, + '2': {keyCode: 0x32, keyName: 'Digit2', shiftModifier: false}, + '@': {keyCode: 0x32, keyName: 'Digit2', shiftModifier: true}, + '3': {keyCode: 0x33, keyName: 'Digit3', shiftModifier: false}, + '#': {keyCode: 0x33, keyName: 'Digit3', shiftModifier: true}, + '4': {keyCode: 0x34, keyName: 'Digit4', shiftModifier: false}, + '$': {keyCode: 0x34, keyName: 'Digit4', shiftModifier: true}, + '5': {keyCode: 0x35, keyName: 'Digit5', shiftModifier: false}, + '%': {keyCode: 0x35, keyName: 'Digit5', shiftModifier: true}, + '6': {keyCode: 0x36, keyName: 'Digit6', shiftModifier: false}, + '^': {keyCode: 0x36, keyName: 'Digit6', shiftModifier: true}, + '7': {keyCode: 0x37, keyName: 'Digit7', shiftModifier: false}, + '&': {keyCode: 0x37, keyName: 'Digit7', shiftModifier: true}, + '8': {keyCode: 0x38, keyName: 'Digit8', shiftModifier: false}, + '*': {keyCode: 0x38, keyName: 'Digit8', shiftModifier: true}, + '9': {keyCode: 0x39, keyName: 'Digit9', shiftModifier: false}, + '(': {keyCode: 0x39, keyName: 'Digit9', shiftModifier: true}, + 'a': {keyCode: 0x41, keyName: 'KeyA', shiftModifier: false}, + 'A': {keyCode: 0x41, keyName: 'KeyA', shiftModifier: true}, + 'b': {keyCode: 0x42, keyName: 'KeyB', shiftModifier: false}, + 'B': {keyCode: 0x42, keyName: 'KeyB', shiftModifier: true}, + 'c': {keyCode: 0x43, keyName: 'KeyC', shiftModifier: false}, + 'C': {keyCode: 0x43, keyName: 'KeyC', shiftModifier: true}, + 'd': {keyCode: 0x44, keyName: 'KeyD', shiftModifier: false}, + 'D': {keyCode: 0x44, keyName: 'KeyD', shiftModifier: true}, + 'e': {keyCode: 0x45, keyName: 'KeyE', shiftModifier: false}, + 'E': {keyCode: 0x45, keyName: 'KeyE', shiftModifier: true}, + 'f': {keyCode: 0x46, keyName: 'KeyF', shiftModifier: false}, + 'F': {keyCode: 0x46, keyName: 'KeyF', shiftModifier: true}, + 'g': {keyCode: 0x47, keyName: 'KeyG', shiftModifier: false}, + 'G': {keyCode: 0x47, keyName: 'KeyG', shiftModifier: true}, + 'h': {keyCode: 0x48, keyName: 'KeyH', shiftModifier: false}, + 'H': {keyCode: 0x48, keyName: 'KeyH', shiftModifier: true}, + 'i': {keyCode: 0x49, keyName: 'KeyI', shiftModifier: false}, + 'I': {keyCode: 0x49, keyName: 'KeyI', shiftModifier: true}, + 'j': {keyCode: 0x4A, keyName: 'KeyJ', shiftModifier: false}, + 'J': {keyCode: 0x4A, keyName: 'KeyJ', shiftModifier: true}, + 'k': {keyCode: 0x4B, keyName: 'KeyK', shiftModifier: false}, + 'K': {keyCode: 0x4B, keyName: 'KeyK', shiftModifier: true}, + 'l': {keyCode: 0x4C, keyName: 'KeyL', shiftModifier: false}, + 'L': {keyCode: 0x4C, keyName: 'KeyL', shiftModifier: true}, + 'm': {keyCode: 0x4D, keyName: 'KeyM', shiftModifier: false}, + 'M': {keyCode: 0x4D, keyName: 'KeyM', shiftModifier: true}, + 'n': {keyCode: 0x4E, keyName: 'KeyN', shiftModifier: false}, + 'N': {keyCode: 0x4E, keyName: 'KeyN', shiftModifier: true}, + 'o': {keyCode: 0x4F, keyName: 'KeyO', shiftModifier: false}, + 'O': {keyCode: 0x4F, keyName: 'KeyO', shiftModifier: true}, + 'p': {keyCode: 0x50, keyName: 'KeyP', shiftModifier: false}, + 'P': {keyCode: 0x50, keyName: 'KeyP', shiftModifier: true}, + 'q': {keyCode: 0x51, keyName: 'KeyQ', shiftModifier: false}, + 'Q': {keyCode: 0x51, keyName: 'KeyQ', shiftModifier: true}, + 'r': {keyCode: 0x52, keyName: 'KeyR', shiftModifier: false}, + 'R': {keyCode: 0x52, keyName: 'KeyR', shiftModifier: true}, + 's': {keyCode: 0x53, keyName: 'KeyS', shiftModifier: false}, + 'S': {keyCode: 0x53, keyName: 'KeyS', shiftModifier: true}, + 't': {keyCode: 0x54, keyName: 'KeyT', shiftModifier: false}, + 'T': {keyCode: 0x54, keyName: 'KeyT', shiftModifier: true}, + 'u': {keyCode: 0x55, keyName: 'KeyU', shiftModifier: false}, + 'U': {keyCode: 0x55, keyName: 'KeyU', shiftModifier: true}, + 'v': {keyCode: 0x56, keyName: 'KeyV', shiftModifier: false}, + 'V': {keyCode: 0x56, keyName: 'KeyV', shiftModifier: true}, + 'w': {keyCode: 0x57, keyName: 'KeyW', shiftModifier: false}, + 'W': {keyCode: 0x57, keyName: 'KeyW', shiftModifier: true}, + 'x': {keyCode: 0x58, keyName: 'KeyX', shiftModifier: false}, + 'X': {keyCode: 0x58, keyName: 'KeyX', shiftModifier: true}, + 'y': {keyCode: 0x59, keyName: 'KeyY', shiftModifier: false}, + 'Y': {keyCode: 0x59, keyName: 'KeyY', shiftModifier: true}, + 'z': {keyCode: 0x5A, keyName: 'KeyZ', shiftModifier: false}, + 'Z': {keyCode: 0x5A, keyName: 'KeyZ', shiftModifier: true}, 'Fullscreen': {keyCode: 0x7A, shiftModifier: false}, 'Shutdown': {keyCode: 0x98, shiftModifier: false}, 'Back': {keyCode: 0xA6, shiftModifier: false}, 'Forward': {keyCode: 0xA7, shiftModifier: false}, 'Reload': {keyCode: 0xA8, shiftModifier: false}, 'Search': {keyCode: 0xAA, shiftModifier: false}, - 'Mute': {keyCode: 0xAD, shiftModifier: false}, - 'Volume-Down': {keyCode: 0xAE, shiftModifier: false}, - 'Volume-Up': {keyCode: 0xAF, shiftModifier: false}, + 'Mute': {keyCode: 0xAD, keyName: 'VolumeMute', shiftModifier: false}, + 'Volume-Down': {keyCode: 0xAE, keyName: 'VolumeDown', + shiftModifier: false}, + 'Volume-Up': {keyCode: 0xAF, keyName: 'VolumeUp', shiftModifier: false}, 'Change-Window': {keyCode: 0xB6, shiftModifier: false}, - ';': {keyCode: 0xBA, shiftModifier: false}, - ':': {keyCode: 0xBA, shiftModifier: true}, - '=': {keyCode: 0xBB, shiftModifier: false}, - '+': {keyCode: 0xBB, shiftModifier: true}, - ',': {keyCode: 0xBC, shiftModifier: false}, - '<': {keyCode: 0xBC, shiftModifier: true}, - '-': {keyCode: 0xBD, shiftModifier: false}, - '_': {keyCode: 0xBD, shiftModifier: true}, - '.': {keyCode: 0xBE, shiftModifier: false}, - '>': {keyCode: 0xBE, shiftModifier: true}, - '/': {keyCode: 0xBF, shiftModifier: false}, - '?': {keyCode: 0xBF, shiftModifier: true}, - '`': {keyCode: 0xC0, shiftModifier: false}, - '~': {keyCode: 0xC0, shiftModifier: true}, - 'Brightness-Down': {keyCode: 0xD8, shiftModifier: false}, - 'Brightness-Up': {keyCode: 0xD9, shiftModifier: false}, - '[': {keyCode: 0xDB, shiftModifier: false}, - '{': {keyCode: 0xDB, shiftModifier: true}, - '\\': {keyCode: 0xDC, shiftModifier: false}, - '|': {keyCode: 0xDC, shiftModifier: true}, - ']': {keyCode: 0xDD, shiftModifier: false}, - '}': {keyCode: 0xDD, shiftModifier: true}, - '\'': {keyCode: 0xDE, shiftModifier: false}, - '"': {keyCode: 0xDE, shiftModifier: true}, + ';': {keyCode: 0xBA, keyName: 'Semicolon', shiftModifier: false}, + ':': {keyCode: 0xBA, keyName: 'Semicolon',shiftModifier: true}, + '=': {keyCode: 0xBB, keyName: 'Equal', shiftModifier: false}, + '+': {keyCode: 0xBB, keyName: 'Equal', shiftModifier: true}, + ',': {keyCode: 0xBC, keyName: 'Comma', shiftModifier: false}, + '<': {keyCode: 0xBC, keyName: 'Comma', shiftModifier: true}, + '-': {keyCode: 0xBD, keyName: 'Minus', shiftModifier: false}, + '_': {keyCode: 0xBD, keyName: 'Minus', shiftModifier: true}, + '.': {keyCode: 0xBE, keyName: 'Period', shiftModifier: false}, + '>': {keyCode: 0xBE, keyName: 'Period', shiftModifier: true}, + '/': {keyCode: 0xBF, keyName: 'Slash', shiftModifier: false}, + '?': {keyCode: 0xBF, keyName: 'Slash', shiftModifier: true}, + '`': {keyCode: 0xC0, keyName: 'Backquote', shiftModifier: false}, + '~': {keyCode: 0xC0, keyName: 'Backquote', shiftModifier: true}, + 'Brightness-Down': {keyCode: 0xD8, keyName: 'BrightnessDown', + shiftModifier: false}, + 'Brightness-Up': {keyCode: 0xD9, keyName: 'BrightnessUp', + shiftModifier: false}, + '[': {keyCode: 0xDB, keyName: 'BracketLeft', shiftModifier: false}, + '{': {keyCode: 0xDB, keyName: 'BracketLeft', shiftModifier: true}, + '\\': {keyCode: 0xDC, keyName: 'Backslash', shiftModifier: false}, + '|': {keyCode: 0xDC, keyName: 'Backslash', shiftModifier: true}, + ']': {keyCode: 0xDD, keyName: 'BracketRight', shiftModifier: false}, + '}': {keyCode: 0xDD, keyName: 'BracketRight', shiftModifier: true}, + '\'': {keyCode: 0xDE, keyName: 'Quote', shiftModifier: false}, + '"': {keyCode: 0xDE, keyName: 'Quote', shiftModifier: true}, }; Polymer('kb-key-codes', { @@ -163,6 +169,7 @@ if (entry) { return { keyCode: entry.keyCode, + keyName: entry.keyName || 'Unidentified', shiftModifier: entry.shiftModifier }; } @@ -171,6 +178,7 @@ // Special case of accented characters. return { keyCode: 0, + keyName: 'Unidentified', shiftModifier: false }; }, @@ -187,16 +195,18 @@ createVirtualKeyEvent: function(detail, type) { var char = detail.char; var keyCode = detail.keyCode; + var keyName = detail.keyName; // The shift modifier is handled specially. Some charactares like '+' // {keyCode: 0xBB, shiftModifier: true}, are available on non-upper // keysets, and so we rely on caching the correct shiftModifier. If // the cached value of the shiftModifier is undefined, we defer to // the shiftModifier in the detail. var shiftModifier = detail.shiftModifier; - if (keyCode == undefined) { + if (keyCode == undefined || keyName == undefined) { var state = this.GetKeyCodeAndModifiers(char); if (state) { - keyCode = state.keyCode; + keyCode = keyCode || state.keyCode; + keyName = keyName || state.keyName; shiftModifier = (state.shiftModifier == undefined) ? shiftModifier : state.shiftModifier; } else { @@ -213,6 +223,7 @@ type: type, charValue: char.charCodeAt(0), keyCode: keyCode, + keyName: keyName, modifiers: modifiers }; }, diff --git a/ui/keyboard/resources/elements/kb-key-sequence.html b/ui/keyboard/resources/elements/kb-key-sequence.html index f8bc2d9..0157f93 100644 --- a/ui/keyboard/resources/elements/kb-key-sequence.html +++ b/ui/keyboard/resources/elements/kb-key-sequence.html @@ -58,6 +58,7 @@ var state = getKeyCodeAndModifiers(keyCodeIndex); if (state) { key.keyCode = state.keyCode; + key.keyName = state.keyName; key.shiftModifier = state.shiftModifier; } replacement.appendChild(key); diff --git a/ui/keyboard/resources/elements/kb-key.html b/ui/keyboard/resources/elements/kb-key.html index cd7522c..cd4cef2 100644 --- a/ui/keyboard/resources/elements/kb-key.html +++ b/ui/keyboard/resources/elements/kb-key.html @@ -5,7 +5,7 @@ --> <polymer-element name="kb-key" extends="kb-key-base" - attributes="image imageSize keyCode shiftModifier weight"> + attributes="image imageSize keyCode keyName shiftModifier weight"> <template> <style> :host { @@ -88,6 +88,15 @@ * @type {number|undefined} */ keyCode: undefined, + + /** + * Name of the key as defined in the DOM3 specification for key events. + * Like the keyCode, the keyName is independent of the state of the + * modifier keys. + * @type {string|undefined} + */ + keyName: undefined, + /** * Whether the shift key is pressed when producing the key value. * @type {boolean} @@ -130,6 +139,7 @@ populateDetails: function(caller) { var details = this.super([caller]); details.keyCode = this.keyCode; + details.keyName = this.keyName; details.shiftModifier = this.shiftModifier; return details; }, |