MCPcopy
hub / github.com/ZToolsCenter/ZTools / registerShortcut

Method registerShortcut

src/main/managers/windowManager.ts:638–691  ·  view source on GitHub ↗

* 注册全局快捷键(支持双击修饰键)

(shortcut?: string)

Source from the content-addressed store, hash-verified

636 * 注册全局快捷键(支持双击修饰键)
637 */
638 public registerShortcut(shortcut?: string): boolean {
639 const keyToRegister = shortcut || this.currentShortcut
640
641 // 保存旧的快捷键信息,用于注册失败时回滚
642 const oldShortcut = this.currentShortcut
643 const oldIsDoubleTapMode = this.isDoubleTapMode
644
645 // 注销旧的呼出快捷键(仅注销当前快捷键,不影响其他全局快捷键)
646 if (this.isDoubleTapMode) {
647 const oldModifier = this.currentShortcut.split('+')[0]
648 doubleTapManager.unregister(oldModifier)
649 } else {
650 globalShortcut.unregister(this.currentShortcut)
651 }
652
653 // 双击修饰键模式:通过 doubleTapManager 注册
654 if (this.isDoubleTapShortcut(keyToRegister)) {
655 const modifier = keyToRegister.split('+')[0]
656 doubleTapManager.register(modifier, () => {
657 this.toggleWindowFromDoubleTap()
658 })
659 this.currentShortcut = keyToRegister
660 this.isDoubleTapMode = true
661 console.log(`双击修饰键呼出快捷键 ${keyToRegister} 注册成功`)
662 return true
663 }
664
665 // 普通快捷键模式:通过 globalShortcut 注册
666 const ret = globalShortcut.register(keyToRegister, () => {
667 this.toggleWindow()
668 })
669
670 if (!ret) {
671 console.error(`快捷键注册失败: ${keyToRegister} 已被占用,回滚到旧快捷键: ${oldShortcut}`)
672 // 注册失败,回滚:重新注册旧的快捷键
673 if (oldIsDoubleTapMode) {
674 const oldModifier = oldShortcut.split('+')[0]
675 doubleTapManager.register(oldModifier, () => {
676 this.toggleWindowFromDoubleTap()
677 })
678 } else {
679 globalShortcut.register(oldShortcut, () => {
680 this.toggleWindow()
681 })
682 }
683 return false
684 } else {
685 this.currentShortcut = keyToRegister
686 this.isDoubleTapMode = false
687 console.log(`快捷键 ${keyToRegister} 注册成功`)
688 }
689
690 return ret
691 }
692
693 public setPreviousActiveWindow(
694 windowInfo: {

Callers 2

updateShortcutFunction · 0.80
index.tsFile · 0.80

Calls 5

isDoubleTapShortcutMethod · 0.95
toggleWindowMethod · 0.95
registerMethod · 0.65
unregisterMethod · 0.45

Tested by

no test coverage detected