From 912b3798485fa6e897dd7bf43a8d7c07268359a2 Mon Sep 17 00:00:00 2001 From: nightwing Date: Wed, 8 May 2013 19:04:55 +0400 Subject: [PATCH] add support for meta key modifier on windows --- lib/ace/lib/event.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/lib/ace/lib/event.js b/lib/ace/lib/event.js index 9f47d281..f80c2042 100644 --- a/lib/ace/lib/event.js +++ b/lib/ace/lib/event.js @@ -244,6 +244,9 @@ function normalizeCommandKeys(callback, e, keyCode) { keyCode = 0; } + if (!useragent.isMac && pressedKeys[91] || pressedKeys[92]) + hashId |= 8; + if (hashId & 8 && (keyCode == 91 || keyCode == 93)) { keyCode = 0; } @@ -257,6 +260,7 @@ function normalizeCommandKeys(callback, e, keyCode) { return callback(e, hashId, keyCode); } +var pressedKeys = Object.create(null); exports.addCommandKeyListener = function(el, callback) { var addListener = exports.addListener; if (useragent.isOldGecko || (useragent.isOpera && !("KeyboardEvent" in window))) { @@ -277,6 +281,7 @@ exports.addCommandKeyListener = function(el, callback) { var lastDefaultPrevented = null; addListener(el, "keydown", function(e) { + pressedKeys[e.keyCode] = true; var result = normalizeCommandKeys(callback, e, e.keyCode); lastDefaultPrevented = e.defaultPrevented; return result; @@ -288,6 +293,14 @@ exports.addCommandKeyListener = function(el, callback) { lastDefaultPrevented = null; } }); + + addListener(el, "keyup", function(e) { + pressedKeys[e.keyCode] = null; + }); + + addListener(el, "focus", function(e) { + pressedKeys = Object.create(null); + }); } };