Allow custom keydown handler to be attached

Fixes #118
This commit is contained in:
Daniel Imms
2016-07-15 16:16:37 -07:00
parent 39edbfb655
commit d4e9d34d2d
+16
View File
@@ -247,6 +247,7 @@
this.queue = '';
this.scrollTop = 0;
this.scrollBottom = this.rows - 1;
this.customKeydownHandler = null;
// modes
this.applicationKeypad = false;
@@ -2517,9 +2518,24 @@
this.write(data + '\r\n');
};
/**
* Attaches a custom keydown handler which is run before keys are processed, giving consumers of
* xterm.js ultimate control as to what keys should be processed by the terminal and what keys
* should not.
* @param {function} customKeydownHandler The custom KeyboardEvent handler to attach. This is a
* function that takes a KeyboardEvent, allowing consumers to stop propogation and/or prevent
* the default action. The function returns whether the event should be processed by xterm.js.
*/
Terminal.prototype.attachCustomKeydownHandler = function(customKeydownHandler) {
this.customKeydownHandler = customKeydownHandler;
}
// Key Resources:
// https://developer.mozilla.org/en-US/docs/DOM/KeyboardEvent
Terminal.prototype.keyDown = function(ev) {
if (this.customKeydownHandler && !this.customKeydownHandler(ev)) {
return;
}
var self = this;
var result = this.evaluateKeyEscapeSequence(ev);