diff options
Diffstat (limited to 'data/extensions/spyblock@gnu.org/lib/keySelector.js')
-rw-r--r-- | data/extensions/spyblock@gnu.org/lib/keySelector.js | 40 |
1 files changed, 26 insertions, 14 deletions
diff --git a/data/extensions/spyblock@gnu.org/lib/keySelector.js b/data/extensions/spyblock@gnu.org/lib/keySelector.js index 01d9cd0..151f50d 100644 --- a/data/extensions/spyblock@gnu.org/lib/keySelector.js +++ b/data/extensions/spyblock@gnu.org/lib/keySelector.js @@ -4,16 +4,26 @@ Cu.import("resource://gre/modules/Services.jsm"); -let validModifiers = +let validModifiers = Object.create(null); +validModifiers.ACCEL = null; +validModifiers.CTRL = "control"; +validModifiers.CONTROL = "control"; +validModifiers.SHIFT = "shift"; +validModifiers.ALT = "alt"; +validModifiers.META = "meta"; + +let bindingsKeys = null; +(function() { - ACCEL: null, - CTRL: "control", - CONTROL: "control", - SHIFT: "shift", - ALT: "alt", - META: "meta", - __proto__: null -}; + let request = new XMLHttpRequest(); + request.open("GET", "chrome://global/content/platformHTMLBindings.xml"); + request.addEventListener("load", () => + { + bindingsKeys = request.responseXML.getElementsByTagName("handler"); + }); + request.send(); +})(); + /** * Sets the correct value of validModifiers.ACCEL. @@ -66,9 +76,11 @@ KeySelector.prototype = if (!validModifiers.ACCEL) initAccelKey(); - this._existingShortcuts = {__proto__: null}; + this._existingShortcuts = Object.create(null); - let keys = window.document.getElementsByTagName("key"); + let keys = Array.prototype.slice.apply(window.document.getElementsByTagName("key")); + if (bindingsKeys) + keys.push.apply(keys, bindingsKeys); for (let i = 0; i < keys.length; i++) { let key = keys[i]; @@ -95,7 +107,7 @@ KeySelector.prototype = let keyModifiers = key.getAttribute("modifiers"); if (keyModifiers) - for each (let modifier in keyModifiers.toUpperCase().match(/\w+/g)) + for (let modifier of keyModifiers.toUpperCase().match(/\w+/g)) if (modifier in validModifiers) keyData[validModifiers[modifier]] = true; @@ -110,7 +122,7 @@ KeySelector.prototype = */ selectKey: function(/**String*/ variants) /**Object*/ { - for each (let variant in variants.split(/\s*,\s*/)) + for (let variant of variants.split(/\s*,\s*/)) { if (!variant) continue; @@ -125,7 +137,7 @@ KeySelector.prototype = code: null, codeName: null }; - for each (let part in variant.toUpperCase().split(/\s+/)) + for (let part of variant.toUpperCase().split(/\s+/)) { if (part in validModifiers) keyData[validModifiers[part]] = true; |