diff --git a/common/content/editor.js b/common/content/editor.js index 9e0eaa69..5f6cf74e 100644 --- a/common/content/editor.js +++ b/common/content/editor.js @@ -653,6 +653,11 @@ var Editor = Module("editor", { modes.push(modes.TEXT_EDIT); }); + mappings.add([modes.INPUT], + ["", "", "", "", "", ""], + "Handled by " + config.host, + function () Events.PASS); + mappings.add([modes.INSERT], ["", ""], "Expand insert mode abbreviation", function () { diff --git a/common/content/events.js b/common/content/events.js index 0a836a33..90ccbbd3 100644 --- a/common/content/events.js +++ b/common/content/events.js @@ -91,7 +91,8 @@ var ProcessorStack = Class("ProcessorStack", { if (options["timeout"]) this.timer = services.Timer(this, options["timeoutlen"], services.Timer.TYPE_ONE_SHOT); } - else if (result !== Events.KILL && !this.actions.length && !this.passUnknown) { + else if (result !== Events.KILL && !this.actions.length && + !(this.passUnknown || this.modes.some(function (m) m.passEvent(this), this.events[0]))) { result = Events.ABORT; if (!Events.isEscape(this.events.slice(-1)[0])) dactyl.beep(); @@ -107,7 +108,8 @@ var ProcessorStack = Class("ProcessorStack", { this.events[0].originalTarget.dactylKeyPress = undefined; if (result !== Events.PASS || this.events.length > 1) - Events.kill(this.events[this.events.length - 1]); + if (result !== Events.ABORT || !this.events[0].isReplay) + Events.kill(this.events[this.events.length - 1]); if (result === Events.PASS_THROUGH) { events.passing = true; @@ -1544,6 +1546,10 @@ var Events = Module("events", { modes.push(modes.QUOTE); }); + mappings.add([modes.BASE], + [""], "Do Nothing", + function () {}); + mappings.add([modes.BASE], [""], "Do nothing", function () {}); diff --git a/common/content/modes.js b/common/content/modes.js index e30eb2a8..4aa01a14 100644 --- a/common/content/modes.js +++ b/common/content/modes.js @@ -468,6 +468,8 @@ var Modes = Module("modes", { ownsFocus: Class.memoize(function ownsFocus() this.bases.length && this.bases.some(function (b) b.ownsFocus)), + passEvent: function passEvent(event) this.input && event.charCode && !(event.ctrlKey || event.altKey || event.metaKey), + passUnknown: Class.memoize(function () options.get("passunknown").getKey(this.name)), get mask() this, @@ -541,7 +543,7 @@ var Modes = Module("modes", { options: function initOptions() { options.add(["passunknown"], "Pass through unknown keys in these modes", - "regexplist", "^input$", + "regexplist", "", { regexpFlags: "i", setter: function (val) {