1
0
mirror of https://github.com/gryf/pentadactyl-pm.git synced 2026-02-28 01:45:47 +01:00

Fix createEvent/init*Event insanity.

This commit is contained in:
Kris Maglione
2009-06-06 14:47:34 -04:00
parent 4b46d967bd
commit 8ac6321a1c
2 changed files with 46 additions and 11 deletions

View File

@@ -970,8 +970,10 @@ function Events() //{{{
}
let elem = liberator.focus || window.content;
let evt = doc.createEvent("KeyEvents");
evt.initKeyEvent("keypress", true, true, view, ctrl, alt, shift, meta, keyCode, charCode);
let evt = events.create(doc, "keypress", {
ctrlKey: ctrl, altKey: alt, shiftKey: shift, metaKey: meta ,
keyCode: keyCode, charCode: charCode
});
if (typeof noremap == "object")
for (let [k, v] in Iterator(noremap))
evt[k] = v;
@@ -1012,6 +1014,40 @@ function Events() //{{{
}
},
create: function (doc, type, opts)
{
var DEFAULTS = {
Key: {
type: type,
bubbles: true, cancelable: true,
view: doc.defaultView,
ctrlKey: false, altKey: false, shiftKey: false, metaKey: false,
keyCode: 0, charCode: 0
},
Mouse: {
type: type,
bubbles: true, cancelable: true,
view: doc.defaultView,
detail: 1,
screenX: 0, screenY: 0,
clientX: 0, clientY: 0,
ctrlKey: false, altKey: false, shiftKey: false, metaKey: false,
button: 0,
relatedTarget: null
}
};
const TYPES = {
click: "Mouse", mousedown: "Mouse", mouseup: "Mouse",
mouseover: "Mouse", mouseout: "Mouse",
keypress: "Key", keyup: "Key", keydown: "Key"
};
var t = TYPES[type];
var evt = doc.createEvent(t + "Events");
evt["init" + t + "Event"].apply(evt,
[v for ([k, v] in Iterator(util.extend(DEFAULTS[t], opts)))]);
return evt;
},
/**
* Converts the specified key event to a string in liberator key-code
* notation. Returns null for an unknown key event.