globalShortcut 模块可以在操作系统中注册/注销全局快捷键, 以便可以为操作定制各种快捷键。
方法
globalShortcut.register(accelerator, callback)
-
accelerator Accelerator
-
callback Function
返回boolean - 快捷键注册是否成功
注册 accelerator 的全局快捷键。 当用户按下注册快捷键时, callback 会被调用。
globalShortcut.registerAll(accelerators , callback)
-
accelerators Accelerator[] - an array of Accelerators.
-
callback Function注册多个全局快捷键。 当用户按下注册快捷键时, callback 会被调用。
globalShortcut.isRegistered(accelerator)
-
accelerator AcceleratorReturns boolean - 表示 accelerator 全局快捷键是否注册成功
globalShortcut.unregister(accelerator)
accelerator Accelerator注销 accelerator 的全局快捷键。
globalShortcut.unregisterAll()
注销所有的全局 注销快捷键快捷键(清空该应用程序的所有全局快捷键)。
示例
-
注册 Shift+A 快捷键
-
注册 Shift+B 和 Shift+B 快捷键
-
注销 Shift+A 快捷键
-
程序关闭时 注销所有快捷键
代码
?
const注销快捷键 { app, BrowserWindow,BrowserView , Menu, dialog ,globalShortcut} = require('electron')
const path = require('node:path')
const createWindow = () => {
? const win = new BrowserWindow({
? ? width: 800,
? ? height: 600
? })
? win.loadFile("index.html")
}
app.whenReady().then(() => {
? createWindow()
??
? const template = [
? ? {
? ? ? label: '快捷键',
? ? ? role: 'common',
? ? ? submenu: [
? ? ? ? {
? ? ? ? ? label: 'Shift + A',
? ? ? ? ? click() {
? ? ? ? ? ? globalShortcut.register("Shift+A",()=>{ 注销快捷键
? ? ? ? ? ? ? dialog.showMessageBox({
? ? ? ? ? ? ? ? message: 'Shift + A 快捷键',
? ? ? ? ? ? ? ? type: 'info',
? ? ? ? ? ? ? ? title: '注册了Shift + A 快捷键'
? ? ? ? ? ? ? });
? ? ? ? ? ? })
? ? ? ? ? ??
? ? ? ? ? }
? ? ? ? },
? ? ? ? {
? ? ? ? ? label: 'Shift + B 和 Shift + C 快捷键',
? ? ? ? ? click() {
? ? ? ? ? ? globalShortcut.registerAll(["Shift+B","Shift+C"],()=>{
? ? ? ? ? ? ? dialog.showMessageBox({
? ? ? ? ? ? ? ? message: 'Shift + B 和 Shift + C 快捷键',
? ? ? ? ? ? ? ? type: 'info',
? ? ? ? ? ? ? ? title: '注册了Shift + B 和 Shift + C 快捷键'
? ? ? ? ? ? ? });
? ? ? ? ? ? })
? ? ? ? ? }
? ? ? ? },
? ? ? ? {
? ? ? ? ? label: '3.注销 Shift + A 快捷键',
? ? ? ? ? click() {
? ? ? ? ? ? globalShortcut.unregister("Shift+A");
? ? ? ? ? }
? ? ? ? }
? ? ? ]
? ? }
? ]
? const menu = Menu.buildFromTemplate(template)
? Menu.setApplicationMenu(menu)
? app.on('activate', () => {
? ? if (BrowserWindow.getAllWindows().length === 0) {
? ? ? createWindow()
? ? }
? })
})
app.on('window-all-closed', () => {
? globalShortcut.unregisterAll();
? if (process.platform !== 'darwin') {
? ? app.quit()
? }
})