Index: ui/keyboard/resources/elements/kb-key-codes.html |
diff --git a/ui/keyboard/resources/elements/kb-key-codes.html b/ui/keyboard/resources/elements/kb-key-codes.html |
index 4f7bc827ff89256036f9db758a14f3e41b7d848b..d076ec58a559a7f15cd4b247d1be2a0138a08fd2 100644 |
--- a/ui/keyboard/resources/elements/kb-key-codes.html |
+++ b/ui/keyboard/resources/elements/kb-key-codes.html |
@@ -29,7 +29,9 @@ |
// keyCode attribute for kb-key or kb-keysequence elements to refer to |
// indices in this table in order to emulate a physical keyboard with an |
// alternate layout. Not all keys on a virtual keyboard are required to |
- // have keyCodes. |
+ // have keyCodes. The shiftModifier specifies whether to always include or |
+ // exclude the shift modifer when sending key events for this key. If it's |
+ // undefined, it will defer to state of the keyboard. |
// TODO(rsadam): Correctly propagate shutdown keycode. This is currently |
// ignored due to chromoting (crbug/146609) |
var keyCodes = { |
@@ -38,10 +40,10 @@ |
'\n': {keyCode: 0x0D, shiftModifier: false}, |
'Esc': {keyCode: 0x1B, shiftModifier: false}, |
' ': {keyCode: 0x20, shiftModifier: false}, |
- 'Arrow-Left': {keyCode: 0x25, shiftModifier: false}, |
- 'Arrow-Up': {keyCode: 0x26, shiftModifier: false}, |
- 'Arrow-Right': {keyCode: 0x27, shiftModifier: false}, |
- 'Arrow-Down': {keyCode: 0x28, 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}, |
@@ -186,13 +188,16 @@ |
var keyCode = detail.keyCode; |
// 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. |
+ // 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) { |
var state = this.GetKeyCodeAndModifiers(char); |
if (state) { |
keyCode = state.keyCode; |
- shiftModifier = state.shiftModifier; |
+ shiftModifier = (state.shiftModifier == undefined) ? |
+ shiftModifier : state.shiftModifier; |
} else { |
// Keycode not defined. |
return; |