diff options
Diffstat (limited to 'lib/keyboard_utils.coffee')
| -rw-r--r-- | lib/keyboard_utils.coffee | 22 |
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 |
