diff options
| author | Stephen Blott | 2016-02-18 10:29:51 +0000 |
|---|---|---|
| committer | Stephen Blott | 2016-02-18 10:29:51 +0000 |
| commit | f91fb7b9e11095cbb59174601096f0239501f6a0 (patch) | |
| tree | d0ac44c1ee050c256e3e03de244a3b0efb50d02f /content_scripts/mode_insert.coffee | |
| parent | 8e3ac1867b7577814865bf1cb40d0b865de30b1a (diff) | |
| parent | 38509ce26afd1df7288255bfbcae1705f7bf9d86 (diff) | |
| download | vimium-f91fb7b9e11095cbb59174601096f0239501f6a0.tar.bz2 | |
Merge pull request #1985 from smblott-github/pass-next-key
New command: Pass next key
Diffstat (limited to 'content_scripts/mode_insert.coffee')
| -rw-r--r-- | content_scripts/mode_insert.coffee | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/content_scripts/mode_insert.coffee b/content_scripts/mode_insert.coffee index 0b040e5d..a35633ac 100644 --- a/content_scripts/mode_insert.coffee +++ b/content_scripts/mode_insert.coffee @@ -10,6 +10,12 @@ class InsertMode extends Mode handleKeyEvent = (event) => return @continueBubbling unless @isActive event + + # Check for a pass-next-key key. + if KeyboardUtils.getKeyCharString(event) in Settings.get "passNextKeyKeys" + new PassNextKeyMode + return false + return @stopBubblingAndTrue unless event.type == 'keydown' and KeyboardUtils.isEscape event DomUtils.suppressKeyupAfterEscape handlerStack target = event.srcElement @@ -98,5 +104,32 @@ class InsertMode extends Mode @suppressedEvent: null @suppressEvent: (event) -> @suppressedEvent = event +# This implements the pasNexKey command. +class PassNextKeyMode extends Mode + constructor: (count = 1) -> + seenKeyDown = false + keyDownCount = 0 + + super + name: "pass-next-key" + indicator: "Pass next key." + # We exit on blur because, once we lose the focus, we can no longer track key events. + exitOnBlur: window + keypress: => + @stopBubblingAndTrue + + keydown: => + seenKeyDown = true + keyDownCount += 1 + @stopBubblingAndTrue + + keyup: => + if seenKeyDown + unless 0 < --keyDownCount + unless 0 < --count + @exit() + @stopBubblingAndTrue + root = exports ? window root.InsertMode = InsertMode +root.PassNextKeyMode = PassNextKeyMode |
