diff options
| author | Stephen Blott | 2016-02-10 13:27:45 +0000 | 
|---|---|---|
| committer | Stephen Blott | 2016-02-18 07:35:07 +0000 | 
| commit | aaccc059b2cbf47ee4d5290f8cf608b0ab318d92 (patch) | |
| tree | 6261c4f507f625cd8d49680abbb15d64830f29d8 /content_scripts | |
| parent | dcc5427b4b3c4a9440675c8443b31dc98fb62fdd (diff) | |
| download | vimium-aaccc059b2cbf47ee4d5290f8cf608b0ab318d92.tar.bz2 | |
PassNextKey; move key parsing to keyboard_utils.coffee.
Previously, key event parsing was embedded in the normal-mode key
handlers.  Here, we move it to a new function (getKeyCharString) in
KeyboardUtils so that it can also be used from elsewhere... In
particular for detecting the pass-next-key key in insertmode.
Diffstat (limited to 'content_scripts')
| -rw-r--r-- | content_scripts/vimium_frontend.coffee | 46 | 
1 files changed, 8 insertions, 38 deletions
diff --git a/content_scripts/vimium_frontend.coffee b/content_scripts/vimium_frontend.coffee index 01bd4ebc..0e3b4c69 100644 --- a/content_scripts/vimium_frontend.coffee +++ b/content_scripts/vimium_frontend.coffee @@ -489,50 +489,20 @@ handlerStack.push  #  # @/this, here, is the the normal-mode Mode object.  onKeypress = (event) -> -  keyChar = "" +  keyChar = KeyboardUtils.getKeyCharString event +  if keyChar +    if currentCompletionKeys.indexOf(keyChar) != -1 or isValidFirstKey keyChar +      DomUtils.suppressEvent(event) +      keyPort.postMessage keyChar:keyChar, frameId:frameId +      return @stopBubblingAndTrue -  # Ignore modifier keys by themselves. -  if (event.keyCode > 31) -    keyChar = String.fromCharCode(event.charCode) - -    if (keyChar) -      if currentCompletionKeys.indexOf(keyChar) != -1 or isValidFirstKey(keyChar) -        DomUtils.suppressEvent(event) -        keyPort.postMessage({ keyChar:keyChar, frameId:frameId }) -        return @stopBubblingAndTrue - -      keyPort.postMessage({ keyChar:keyChar, frameId:frameId }) +    keyPort.postMessage keyChar:keyChar, frameId:frameId    return @continueBubbling  # @/this, here, is the the normal-mode Mode object.  onKeydown = (event) -> -  keyChar = "" - -  # handle special keys, and normal input keys with modifiers being pressed. don't handle shiftKey alone (to -  # avoid / being interpreted as ? -  if (((event.metaKey || event.ctrlKey || event.altKey) && event.keyCode > 31) || ( -      # TODO(philc): some events don't have a keyidentifier. How is that possible? -      event.keyIdentifier && event.keyIdentifier.slice(0, 2) != "U+")) -    keyChar = KeyboardUtils.getKeyChar(event) -    # Again, ignore just modifiers. Maybe this should replace the keyCode>31 condition. -    if (keyChar != "") -      modifiers = [] - -      if (event.shiftKey) -        keyChar = keyChar.toUpperCase() -      if (event.metaKey) -        modifiers.push("m") -      if (event.ctrlKey) -        modifiers.push("c") -      if (event.altKey) -        modifiers.push("a") - -      for own i of modifiers -        keyChar = modifiers[i] + "-" + keyChar - -      if (modifiers.length > 0 || keyChar.length > 1) -        keyChar = "<" + keyChar + ">" +  keyChar = KeyboardUtils.getKeyCharString event    if (HelpDialog.showing && KeyboardUtils.isEscape(event))      HelpDialog.hide()  | 
