diff options
| -rw-r--r-- | background_scripts/commands.coffee | 3 | ||||
| -rw-r--r-- | lib/keyboard_utils.coffee | 10 |
2 files changed, 10 insertions, 3 deletions
diff --git a/background_scripts/commands.coffee b/background_scripts/commands.coffee index cda036e6..7e171d31 100644 --- a/background_scripts/commands.coffee +++ b/background_scripts/commands.coffee @@ -113,6 +113,9 @@ Commands = # We don't need these properties in the content scripts. delete currentMapping[key][prop] for prop in ["keySequence", "description"] chrome.storage.local.set normalModeKeyStateMapping: keyStateMapping + # Inform `KeyboardUtils.isEscape()` whether `<c-[>` should be interpreted as `Escape` (which it is by + # default). + chrome.storage.local.set useVimLikeEscape: "<c-[>" not of keyStateMapping # Build the "helpPageData" data structure which the help page needs and place it in Chrome storage. prepareHelpPageData: -> diff --git a/lib/keyboard_utils.coffee b/lib/keyboard_utils.coffee index e14e8b3e..1a1ea797 100644 --- a/lib/keyboard_utils.coffee +++ b/lib/keyboard_utils.coffee @@ -60,9 +60,13 @@ KeyboardUtils = keyChar = mapKeyRegistry[keyChar] ? keyChar keyChar - isEscape: (event) -> - # <c-[> is mapped to Escape in Vim by default. - event.key == "Escape" || @getKeyCharString(event) == "<c-[>" + isEscape: do -> + useVimLikeEscape = true + Utils.monitorChromeStorage "useVimLikeEscape", (value) -> useVimLikeEscape = value + + (event) -> + # <c-[> is mapped to Escape in Vim by default. + event.key == "Escape" or (useVimLikeEscape and @getKeyCharString(event) == "<c-[>") isBackspace: (event) -> event.key in ["Backspace", "Delete"] |
