J'avais l'habitude de electron
développer mon propre outil de test d'interface (Post Tools). Après avoir défini globalShortcut
les 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.
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-show
l'ouverture de mainWindow. Bien entendu, la touche de raccourci de déconnexion peut également être blur
appliqué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