electron globalShortcut 快捷键与系统全局快捷键冲突

electron 开发自己的接口测试工具(Post Tools),在设置了 globalShortcut 快捷键后,发现应用中的快捷键与系统全局快捷键冲突了,导致系统快捷键不可正常使用。

electron globalShortcut

快捷键配置

export function initGlobalShortcut(mainWindow) {
  globalShortcut.register('CommandOrControl+shift+r', () => {
    app.relaunch()
    app.exit()
  })
  globalShortcut.register('CommandOrControl+shift+delete', () => {
    resetLocalData()
  })
  globalShortcut.register('F1', () => {
    shell.openExternal('https://tiven.cn/p/4dc21784/')
  })
  globalShortcut.register('F2', () => {
    shell.openExternal('https://tiven.cn/service/tools/post-tool')
  })
  globalShortcut.register('F5', () => {
    mainWindow?.reload()
  })
  globalShortcut.register('CommandOrControl+r', () => {
    mainWindow?.reload()
  })
  globalShortcut.register('CommandOrControl+q', () => {
    app.exit()
  })
  globalShortcut.register('CommandOrControl+w', () => {
    mainWindow?.hide()
    mainWindow?.setSkipTaskbar(true)
  })
  globalShortcut.register('F11', () => {
    // 是否全屏
    if (mainWindow?.isFullScreen()) {
      // mainWindow?.minimize();
      mainWindow?.setFullScreen(false)
      mainWindow?.setMenuBarVisibility(true)
    } else {
      mainWindow?.setFullScreen(true)
      mainWindow?.setMenuBarVisibility(false)
    }
  })
  globalShortcut.register('Esc', () => {
    // 是否全屏
    if (mainWindow?.isFullScreen()) {
      // mainWindow?.minimize();
      mainWindow?.setFullScreen(false)
      mainWindow?.setMenuBarVisibility(true)
    }
  })
  globalShortcut.register('CommandOrControl+F12', () => {
    mainWindow?.webContents.openDevTools({ mode: 'detach' })
  })
}

解决冲突

一般来说会在 mainWindow ready-to-show 的时候初始化快捷键,当然也可以在应用失去焦点(blur)的时候主动应用的注销快捷键,以避免和系统快捷键冲突。


  mainWindow.on('ready-to-show', () => {
    mainWindow.show()
    // 注册全局快捷键
    initGlobalShortcut(mainWindow)
  })

  mainWindow.on('blur', () => {
    // 失去焦点,注销快捷键
    globalShortcut.unregisterAll()
  })


欢迎访问:天问博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值