From 1df19294c544b897bf5fe52401050dd43b69129d Mon Sep 17 00:00:00 2001 From: Stephen Blott Date: Sun, 9 Oct 2016 17:48:59 +0100 Subject: Tweak (simplify) #2306. --- lib/keyboard_utils.coffee | 32 ++++++++++++++------------------ 1 file changed, 14 insertions(+), 18 deletions(-) (limited to 'lib/keyboard_utils.coffee') diff --git a/lib/keyboard_utils.coffee b/lib/keyboard_utils.coffee index 7f48d69e..c8591c3c 100644 --- a/lib/keyboard_utils.coffee +++ b/lib/keyboard_utils.coffee @@ -86,11 +86,10 @@ KeyboardUtils = (event) -> event.keyCode == @keyCodes.ESC || do => - keyChar = @getKeyChar event - keyChar.length == 1 and do => - keyChar = @getModifiedKeyChar keyChar, event - keyChar = keyTranslationRegistry[keyChar] ? keyChar - keyChar == "" + keyChar = @getKeyCharString event, true + keyChar = keyTranslationRegistry[keyChar] ? keyChar + # is mapped to Escape in Vim by default. + keyChar == "" # TODO. This is probably a poor way of detecting printable characters. However, it shouldn't incorrectly # identify any of chrome's own keyboard shortcuts as printable. @@ -105,7 +104,7 @@ KeyboardUtils = # Return the Vimium key representation for this keyboard event. Return a falsy value (the empty string or # undefined) when no Vimium representation is appropriate. - getKeyCharString: (event) -> + getKeyCharString: (event, allKeydownEvents = false) -> switch event.type when "keypress" # Ignore modifier keys by themselves. @@ -115,20 +114,17 @@ KeyboardUtils = when "keydown" # Handle special keys and normal input keys with modifiers being pressed. keyChar = @getKeyChar event - if 1 < keyChar.length or (keyChar.length == 1 and (event.metaKey or event.ctrlKey or event.altKey)) - @getModifiedKeyChar keyChar, event - - getModifiedKeyChar: (keyChar, event) -> - modifiers = [] + if 1 < keyChar.length or (keyChar.length == 1 and (event.metaKey or event.ctrlKey or event.altKey)) or allKeydownEvents + modifiers = [] - keyChar = keyChar.toUpperCase() if event.shiftKey - # These must be in alphabetical order (to match the sorted modifier order in Commands.normalizeKey). - modifiers.push "a" if event.altKey - modifiers.push "c" if event.ctrlKey - modifiers.push "m" if event.metaKey + keyChar = keyChar.toUpperCase() if event.shiftKey + # These must be in alphabetical order (to match the sorted modifier order in Commands.normalizeKey). + modifiers.push "a" if event.altKey + modifiers.push "c" if event.ctrlKey + modifiers.push "m" if event.metaKey - keyChar = [modifiers..., keyChar].join "-" - if 1 < keyChar.length then "<#{keyChar}>" else keyChar + keyChar = [modifiers..., keyChar].join "-" + if 1 < keyChar.length then "<#{keyChar}>" else keyChar KeyboardUtils.init() -- cgit v1.2.3