diff options
Diffstat (limited to 'content_scripts/mode_passkeys.coffee')
| -rw-r--r-- | content_scripts/mode_passkeys.coffee | 24 | 
1 files changed, 24 insertions, 0 deletions
diff --git a/content_scripts/mode_passkeys.coffee b/content_scripts/mode_passkeys.coffee new file mode 100644 index 00000000..94a7c7ec --- /dev/null +++ b/content_scripts/mode_passkeys.coffee @@ -0,0 +1,24 @@ + +class PassKeysMode extends Mode +  constructor: -> +    super +      name: "passkeys" +      trackState: true # Maintain @enabled, @passKeys and @keyQueue. +      keydown: (event) => @handleKeyChar KeyboardUtils.getKeyChar event +      keypress: (event) => @handleKeyChar String.fromCharCode event.charCode +      keyup: (event) => @handleKeyChar String.fromCharCode event.charCode + +  # Keystrokes are *never* considered passKeys if the keyQueue is not empty.  So, for example, if 't' is a +  # passKey, then 'gt' and '99t' will neverthless be handled by Vimium. +  handleKeyChar: (keyChar) -> +    if keyChar and not @keyQueue and 0 <= @passKeys.indexOf keyChar +      @stopBubblingAndTrue +    else +      @continueBubbling + +  # Disabled, pending experimentation with how/whether to use badges (smblott, 2015/01/17). +  # updateBadge: (badge) -> +  #   badge.badge ||= "P" if @passKeys and not @keyQueue + +root = exports ? window +root.PassKeysMode = PassKeysMode  | 
