aboutsummaryrefslogtreecommitdiffstats
path: root/lib/keyboardUtils.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/keyboardUtils.js')
-rw-r--r--lib/keyboardUtils.js22
1 files changed, 22 insertions, 0 deletions
diff --git a/lib/keyboardUtils.js b/lib/keyboardUtils.js
index fe3dcd59..5b8b4c84 100644
--- a/lib/keyboardUtils.js
+++ b/lib/keyboardUtils.js
@@ -61,3 +61,25 @@ function isEscape(event) {
return event.keyCode == keyCodes.ESC ||
(event.ctrlKey && getKeyChar(event) == '['); // c-[ is mapped to ESC in Vim by default.
}
+
+var KeyPressListener = function(handlers) {
+ this.handlers = handlers;
+}
+
+KeyPressListener.prototype = {
+ enable: function() {
+ var handlers = this.handlers;
+ var wrapper = function(callback){
+ return function(event) {
+ callback(event)
+ }
+ }
+ (handlers.keyDown && document.addEventListener("keydown", handlers.keyDown, true));
+ (handlers.keyUp && document.addEventListener("keyup", handlers.keyUp, true));
+ },
+ disable: function() {
+ var handlers = this.handlers;
+ (handlers.keyDown && document.removeEventListener("keydown", handlers.keyDown, true));
+ (handlers.keyUp && document.removeEventListener("keyup", handlers.keyUp, true));
+ }
+}