aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorStephen Blott2017-09-01 11:27:39 +0100
committerStephen Blott2017-09-01 11:28:03 +0100
commit28f6702b4e8fd5a21f2f1484a99732e703c5f37c (patch)
tree06c662f451b74f06b3c32f2bd98bc3a7b78a34a0 /lib
parent54b77bee1cfab13d34d078d05a20678412dfba6a (diff)
downloadvimium-28f6702b4e8fd5a21f2f1484a99732e703c5f37c.tar.bz2
Implement ignoreKeyboardLayout option in getKeyChar.
Fixes #2618.
Diffstat (limited to 'lib')
-rw-r--r--lib/keyboard_utils.coffee27
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
""