Skip to content

Commit

Permalink
workaround for missing keyup event after win+space
Browse files Browse the repository at this point in the history
  • Loading branch information
nightwing committed Sep 3, 2015
1 parent 8ab413c commit e2e494b
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 9 deletions.
2 changes: 2 additions & 0 deletions demo/kitchen-sink/styles.css
Expand Up @@ -52,4 +52,6 @@ body {
z-index: 10!important;
opacity: 1!important;
background: rgb(84, 0, 255)!important;
color: rgb(255, 255, 255)!important;
width: 10em!important;
}*/
42 changes: 34 additions & 8 deletions lib/ace/lib/event.js
Expand Up @@ -34,6 +34,9 @@ define(function(require, exports, module) {
var keys = require("./keys");
var useragent = require("./useragent");

var pressedKeys = null;
var ts = 0;

exports.addListener = function(elem, type, callback) {
if (elem.addEventListener) {
return elem.addEventListener(type, callback, false);
Expand Down Expand Up @@ -253,7 +256,7 @@ function normalizeCommandKeys(callback, e, keyCode) {
var hashId = getModifierHash(e);

if (!useragent.isMac && pressedKeys) {
if (pressedKeys[91] || pressedKeys[92])
if (pressedKeys.OSKey)
hashId |= 8;
if (pressedKeys.altGr) {
if ((3 & hashId) != 3)
Expand All @@ -278,7 +281,7 @@ function normalizeCommandKeys(callback, e, keyCode) {
keyCode = -1;
}

if (hashId & 8 && (keyCode === 91 || keyCode === 93)) {
if (hashId & 8 && (keyCode === 91 || keyCode === 92)) {
keyCode = -1;
}

Expand Down Expand Up @@ -309,8 +312,7 @@ function normalizeCommandKeys(callback, e, keyCode) {
return callback(e, hashId, keyCode);
}

var pressedKeys = null;
var ts = 0;

exports.addCommandKeyListener = function(el, callback) {
var addListener = exports.addListener;
if (useragent.isOldGecko || (useragent.isOpera && !("KeyboardEvent" in window))) {
Expand All @@ -331,8 +333,19 @@ exports.addCommandKeyListener = function(el, callback) {
var lastDefaultPrevented = null;

addListener(el, "keydown", function(e) {
pressedKeys[e.keyCode] = (pressedKeys[e.keyCode] || 0) + 1;
var result = normalizeCommandKeys(callback, e, e.keyCode);
var keyCode = e.keyCode;
pressedKeys[keyCode] = (pressedKeys[keyCode] || 0) + 1;
if (keyCode == 91 || keyCode == 92) {
pressedKeys.OSKey = true;
} else if (pressedKeys.OSKey) {
if (e.timeStamp - pressedKeys.lastT > 200 && pressedKeys.count == 1)
resetPressedKeys();
}
if (pressedKeys[keyCode] == 1)
pressedKeys.count++;
// console.log(e.timeStamp - pressedKeys.lastT)
pressedKeys.lastT = e.timeStamp;
var result = normalizeCommandKeys(callback, e, keyCode);
lastDefaultPrevented = e.defaultPrevented;
return result;
});
Expand All @@ -345,7 +358,17 @@ exports.addCommandKeyListener = function(el, callback) {
});

addListener(el, "keyup", function(e) {
pressedKeys[e.keyCode] = null;
var keyCode = e.keyCode;
if (!pressedKeys[keyCode]) {
// console.log("resetting", 1)
resetPressedKeys();
} else {
pressedKeys.count = Math.max(pressedKeys.count - 1, 0);
}
if (keyCode == 91 || keyCode == 92) {
pressedKeys.OSKey = false;
}
pressedKeys[keyCode] = null;
});

if (!pressedKeys) {
Expand All @@ -354,8 +377,11 @@ exports.addCommandKeyListener = function(el, callback) {
}
}
};
function resetPressedKeys(e) {
function resetPressedKeys() {
// console.log("resetting")
pressedKeys = Object.create(null);
pressedKeys.count = 0;
pressedKeys.lastT = 0;
}

if (typeof window == "object" && window.postMessage && !useragent.isOldIE) {
Expand Down
2 changes: 1 addition & 1 deletion lib/ace/lib/keys.js
Expand Up @@ -105,7 +105,7 @@ var Keys = (function() {
80: 'p', 81: 'q', 82: 'r', 83: 's', 84: 't', 85: 'u', 86: 'v',
87: 'w', 88: 'x', 89: 'y', 90: 'z', 107: '+', 109: '-', 110: '.',
186: ';', 187: '=', 188: ',', 189: '-', 190: '.', 191: '/', 192: '`',
219: '[', 220: '\\',221: ']', 222: '\''
219: '[', 220: '\\',221: ']', 222: "'", 111: '/', 106: '*'
}
};

Expand Down

0 comments on commit e2e494b

Please sign in to comment.