From eb8c5587cec5a629dfbddf8a884a2aa6fc06f436 Mon Sep 17 00:00:00 2001 From: Stephen Blott Date: Tue, 13 Jan 2015 05:09:46 +0000 Subject: Modes; block all printable keyboard events. --- content_scripts/mode.coffee | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/content_scripts/mode.coffee b/content_scripts/mode.coffee index 51bb1c29..d06f5eae 100644 --- a/content_scripts/mode.coffee +++ b/content_scripts/mode.coffee @@ -117,21 +117,26 @@ class Mode @passKeys = passKeys @registerStateChange?() - # If @options.suppressPrintableEvents is truthy, then it should be an element. All printable keypress + # If @options.suppressPrintableEvents is truthy, then it should be an element. All printable keyboard # events on that element are suppressed, if necessary. They are suppressed *after* bubbling down the # handler stack and finding no handler. This is used by PostFindMode to protect active, editable # elements. Note, this handler is installed with unshift (not push), so it ends is installed at the # *bottom* of the handler stack, and sees keyboard events only after other modes (notably, normal mode) # have not handled them. if @options.suppressPrintableEvents - @unshift - _name: "mode-#{@id}/suppressPrintableEvents" - keypress: (event) => + do => + handler = (event) => if event.srcElement == @options.suppressPrintableEvents and KeyboardUtils.isPrintable event @suppressEvent else @continueBubbling + @unshift + _name: "mode-#{@id}/suppressPrintableEvents" + keydown: handler + keypress: handler + keyup: handler + Mode.updateBadge() if @badge Mode.modes.push @ @logStack() if @debug -- cgit v1.2.3