From 520b63cb1d64fb5a293988122007bd05bacc49db Mon Sep 17 00:00:00 2001 From: Stephen Blott Date: Sun, 28 Feb 2016 14:01:16 +0000 Subject: Key bindings; fix tests... ... and fix two bugs: - not suppressing keyup event after keyChar matched in keydown. - we cannot check the passKeys keyChar in keyup because the key state has changed; so we track what the next keyup response should be. --- content_scripts/mode_key_handler.coffee | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'content_scripts/mode_key_handler.coffee') diff --git a/content_scripts/mode_key_handler.coffee b/content_scripts/mode_key_handler.coffee index e38a7051..f7be977b 100644 --- a/content_scripts/mode_key_handler.coffee +++ b/content_scripts/mode_key_handler.coffee @@ -6,7 +6,7 @@ class KeyHandlerMode extends Mode constructor: (options) -> @commandHandler = options.commandHandler ? (->) - @setKeyMapping options.commandHandler ? {} + @setKeyMapping options.keyMapping ? {} delete options[option] for option in ["commandHandler", "keyMapping"] super extend options, @@ -28,7 +28,10 @@ class KeyHandlerMode extends Mode DomUtils.suppressKeyupAfterEscape handlerStack false # Suppress event. else if keyChar and @mappingForKeyChar keyChar + @keydownEvents[event.keyCode] = true @handleKeyChar event, keyChar + else if keyChar + @continueBubbling else # We did not handle the event, but we might handle a subsequent keypress. If we will be handling that # event, then we suppress propagation of this keydown to prevent triggering page events. -- cgit v1.2.3