diff options
| author | Stephen Blott | 2017-09-01 11:27:39 +0100 |
|---|---|---|
| committer | Stephen Blott | 2017-09-01 11:28:03 +0100 |
| commit | 28f6702b4e8fd5a21f2f1484a99732e703c5f37c (patch) | |
| tree | 06c662f451b74f06b3c32f2bd98bc3a7b78a34a0 | |
| parent | 54b77bee1cfab13d34d078d05a20678412dfba6a (diff) | |
| download | vimium-28f6702b4e8fd5a21f2f1484a99732e703c5f37c.tar.bz2 | |
Implement ignoreKeyboardLayout option in getKeyChar.
Fixes #2618.
| -rw-r--r-- | lib/keyboard_utils.coffee | 27 |
1 files changed, 17 insertions, 10 deletions
diff --git a/lib/keyboard_utils.coffee b/lib/keyboard_utils.coffee index 5f37ddd0..dc6b6269 100644 --- a/lib/keyboard_utils.coffee +++ b/lib/keyboard_utils.coffee @@ -16,17 +16,24 @@ KeyboardUtils = @platform = "Windows" getKeyChar: (event) -> - if event.key of @keyNames - @keyNames[event.key] - # It appears that event.key is not always defined (see #2453). - else if not event.key? + unless Settings.get "ignoreKeyboardLayout" + key = event.key + else + key = event.code + key = key[3..] if key[...3] == "Key" + key = key.toLowerCase() unless event.shiftKey + + if key of @keyNames + @keyNames[key] + # It appears that key is not always defined (see #2453). + else if not key? "" - else if event.key.length == 1 - event.key - else if event.key.length == 2 and "F1" <= event.key <= "F9" - event.key.toLowerCase() # F1 to F9. - else if event.key.length == 3 and "F10" <= event.key <= "F12" - event.key.toLowerCase() # F10 to F12. + else if key.length == 1 + key + else if key.length == 2 and "F1" <= key <= "F9" + key.toLowerCase() # F1 to F9. + else if key.length == 3 and "F10" <= key <= "F12" + key.toLowerCase() # F10 to F12. else "" |
