因为我自己根据自己的工作流写了一些插件,插件里面有一些快捷键操作,其中包括了ctrl+z,ctrl+shift+z,而creator中直接最暴力地占用了最顶层的keydown事件,而且是在捕获阶段,而不是冒泡阶段
window.addEventListener(“keydown”, e => {
“win32” === process.platform && window._Scene && e.ctrlKey && 90 === e.keyCode && (e.preventDefault(), e.shiftKey ? Editor.Ipc.sendToPanel(“scene”, “scene:redo”) : Editor.Ipc.sendToPanel(“scene”, “scene:undo”))
}, !0);
我后续在插件中,即使在顶层window上注册了捕获阶段的keydown,依然阻止不了以上的事件,快捷键无法覆盖的问题,我6月份的时候在论坛有提过tab和shift tab的问题,当时解决方式是靠暴力注入Editor的私有变量来解决的
建议在window上附加一个开关: window.globalHotKeyOn && (…creator 要执行的事件)
或者creator在注册事件时,用一个map先列出事件,以便于removeEventListener
那么在当前情况下,我要使用自己定义的ctrl+z 和 ctrl+shift+z 应该怎么做?