Merge pull request #1438 from ajaxorg/keyboard/meta

add support for meta key modifier on windows
This commit is contained in:
Lennart Kats 2013-05-20 08:06:41 -07:00
commit d14888a8a0

View file

@ -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);
});
}
};