aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephen Blott2017-09-01 13:51:20 +0100
committerStephen Blott2017-09-01 13:51:20 +0100
commit37b26d736b901eaf08a260d7d97af4d8749a2536 (patch)
tree6141acf80afb488ecea4efaa8fae441284217af4
parent02c09ba0dd0ff9573eb4d32d66fda5c0928c4d2c (diff)
downloadvimium-37b26d736b901eaf08a260d7d97af4d8749a2536.tar.bz2
Translate event.code key representations to the corresponding event.key format.
-rw-r--r--lib/keyboard_utils.coffee22
1 files changed, 22 insertions, 0 deletions
diff --git a/lib/keyboard_utils.coffee b/lib/keyboard_utils.coffee
index dc6b6269..471e18c9 100644
--- a/lib/keyboard_utils.coffee
+++ b/lib/keyboard_utils.coffee
@@ -19,8 +19,15 @@ KeyboardUtils =
unless Settings.get "ignoreKeyboardLayout"
key = event.key
else
+ # The logic here is from the vim-like-key-notation project (https://github.com/lydell/vim-like-key-notation).
key = event.code
+ # Strip some standard prefixes.
key = key[3..] if key[...3] == "Key"
+ key = key[5..] if key[...5] == "Digit"
+ key = key[6..] if key[...6] == "Numpad"
+ # Translate some special keys to event.key-like strings.
+ if @enUsTranslations[key]
+ key = if event.shift then @enUsTranslations[key][1] else @enUsTranslations[key][0]
key = key.toLowerCase() unless event.shiftKey
if key of @keyNames
@@ -62,6 +69,21 @@ KeyboardUtils =
isPrintable: (event) ->
@getKeyCharString(event)?.length == 1
+ enUsTranslations:
+ "Backquote": ["`", "~"]
+ "Minus": ["-", "_"]
+ "Equal": ["=", "+"]
+ "Backslash": ["\\","|"]
+ "IntlBackslash": ["\\","|"]
+ "BracketLeft": ["[", "{"]
+ "BracketRight": ["]", "}"]
+ "Semicolon": [";", ":"]
+ "Quote": ["'", '"']
+ "Comma": [",", "<"]
+ "Period": [".", ">"]
+ "Slash": ["/", "?"]
+ "Space": [" ", " "]
+
KeyboardUtils.init()
root = exports ? window