diff --git a/src/canvas/view/CanvasView.js b/src/canvas/view/CanvasView.js index c091097b0..b8270a9c7 100644 --- a/src/canvas/view/CanvasView.js +++ b/src/canvas/view/CanvasView.js @@ -207,8 +207,8 @@ module.exports = Backbone.View.extend({ // the keyCode/which will be always `0`. Even if it's an old/deprecated // property keymaster (and many others) still use it... using `defineProperty` // hack seems the only way - const createCustomEvent = e => { - var oEvent = new KeyboardEvent(e.type, e); + const createCustomEvent = (e, cls) => { + var oEvent = new window[cls](e.type, e); oEvent.keyCodeVal = e.keyCode; ['keyCode', 'which'].forEach(prop => { Object.defineProperty(oEvent, prop, { @@ -219,12 +219,17 @@ module.exports = Backbone.View.extend({ }); return oEvent; }; - fdoc.addEventListener('keydown', e => { - doc.dispatchEvent(createCustomEvent(e)); - }); - fdoc.addEventListener('keyup', e => { - doc.dispatchEvent(createCustomEvent(e)); - }); + + [ + { event: 'keydown keyup', class: 'KeyboardEvent' } + //{ event: 'mousedown mousemove mouseup', class: 'MouseEvent' }, + ].forEach(obj => + obj.event.split(' ').forEach(event => { + fdoc.addEventListener(event, e => + doc.dispatchEvent(createCustomEvent(e, obj.class)) + ); + }) + ); } },