Files
FiDA_Front/src/components/Canvas/DepthCanvas/manager/events/KeyEventManager.ts
2026-03-17 17:17:48 +08:00

39 lines
1.2 KiB
TypeScript

export class KeyEventManager {
stateManager: any
constructor(options) {
this.stateManager = options.stateManager;
this._handleKeyDown = this.handleKeyDown.bind(this)
}
onMounted() { }
/** 处理键盘事件 */
_handleKeyDown: any
handleKeyDown(event: any) {
const activeID = this.stateManager.layerManager.activeID.value
const ctrl = event.ctrlKey ? 'ctrl-' : "";
const shift = event.shiftKey ? 'shift-' : "";
const key = event.key;
const reg = new RegExp(`^${ctrl}${shift}${key}$`, 'i')
const list = [
{ key: "ctrl-c", handler: () => this.stateManager.layerManager.copyLayerById(activeID) },
{ key: "delete", handler: () => this.stateManager.layerManager.deleteLayerById(activeID) },
{ key: "ctrl-z", handler: () => this.stateManager.undoState() },
{ key: "ctrl-shift-z", handler: () => this.stateManager.redoState() },
]
list.forEach((v: any) => {
if (reg.test(v.key)) v.handler(event)
})
}
/** 注册事件 */
registerEvents() {
document.addEventListener('keydown', this._handleKeyDown)
}
/** 删除事件 */
removeEvents() {
document.removeEventListener('keydown', this._handleKeyDown)
}
dispose() {
this.removeEvents()
}
}