aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-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