Les touches de raccourci électronique globalShortcut sont en conflit avec les touches de raccourci globales du système

J'avais l'habitude de electrondévelopper mon propre outil de test d'interface (Post Tools). Après avoir défini globalShortcutles touches de raccourci, j'ai constaté que les touches de raccourci de l'application étaient en conflit avec les touches de raccourci globales du système, ce qui empêchait les touches de raccourci système de fonctionner correctement.

raccourci global électronique

Configuration des touches de raccourci

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' })
  })
}

résoudre des conflits

De manière générale, les touches de raccourci seront initialisées à ready-to-showl'ouverture de mainWindow. Bien entendu, la touche de raccourci de déconnexion peut également être blurappliquée activement lorsque l'application perd le focus ( ) pour éviter tout conflit avec les touches de raccourci système.


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

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


Bienvenue sur : le blog de Tianwen

Je suppose que tu aimes

Origine blog.csdn.net/tiven_/article/details/131713941
conseillé
Classement