diff --git a/lib/ace/keyboard/vim.js b/lib/ace/keyboard/vim.js index 0a95ba3b..fdd88117 100644 --- a/lib/ace/keyboard/vim.js +++ b/lib/ace/keyboard/vim.js @@ -116,7 +116,7 @@ exports.handler = { handleKeyboard: function(data, hashId, key, keyCode, e) { // ignore command keys (shift, ctrl etc.) - if (hashId != 0 && (key == "" || key == "\x00")) + if (hashId !== 0 && (!key || keyCode == -1)) return null; var editor = data.editor; diff --git a/lib/ace/lib/event.js b/lib/ace/lib/event.js index 36250d2f..6721b19c 100644 --- a/lib/ace/lib/event.js +++ b/lib/ace/lib/event.js @@ -258,11 +258,11 @@ function normalizeCommandKeys(callback, e, keyCode) { hashId = 8; break; } - keyCode = 0; + keyCode = -1; } if (hashId & 8 && (keyCode === 91 || keyCode === 93)) { - keyCode = 0; + keyCode = -1; } if (!hashId && keyCode === 13) { diff --git a/lib/ace/lib/keys.js b/lib/ace/lib/keys.js index 42d427b1..916d9f00 100644 --- a/lib/ace/lib/keys.js +++ b/lib/ace/lib/keys.js @@ -46,8 +46,8 @@ var Keys = (function() { }, KEY_MODS: { - "ctrl": 1, "alt": 2, "option" : 2, - "shift": 4, "meta": 8, "command": 8, "cmd": 8 + "ctrl": 1, "alt": 2, "option" : 2, "shift": 4, + "super": 8, "meta": 8, "command": 8, "cmd": 8 }, FUNCTION_KEYS : { @@ -108,8 +108,15 @@ var Keys = (function() { }; // A reverse map of FUNCTION_KEYS - for (var i in ret.FUNCTION_KEYS) { - var name = ret.FUNCTION_KEYS[i].toLowerCase(); + var name, i; + for (i in ret.FUNCTION_KEYS) { + name = ret.FUNCTION_KEYS[i].toLowerCase(); + ret[name] = parseInt(i, 10); + } + + // A reverse map of PRINTABLE_KEYS + for (i in ret.PRINTABLE_KEYS) { + name = ret.PRINTABLE_KEYS[i].toLowerCase(); ret[name] = parseInt(i, 10); }