globalShortcut
在应用没有键盘焦点时检测键盘事件。
进程: 主进程
globalShortcut
模块可以向操作系统注册/注销全局键盘快捷键,以便您可以自定义各种快捷键的操作。
注意:该快捷键是全局的;即使应用没有键盘焦点,它也仍将起作用。本模块必须在 app 模块的 ready
事件被触发之后才能使用。
另请注意,也可以使用 Chromium 的 GlobalShortcutsPortal
实现,它允许应用在 Wayland 会话中运行时绑定全局快捷键。
const { app, globalShortcut } = require('electron')
// Enable usage of Portal's globalShortcuts. This is essential for cases when
// the app runs in a Wayland session.
app.commandLine.appendSwitch('enable-features', 'GlobalShortcutsPortal')
app.whenReady().then(() => {
// Register a 'CommandOrControl+X' shortcut listener.
const ret = globalShortcut.register('CommandOrControl+X', () => {
console.log('CommandOrControl+X is pressed')
})
if (!ret) {
console.log('registration failed')
}
// Check whether a shortcut is registered.
console.log(globalShortcut.isRegistered('CommandOrControl+X'))
})
app.on('will-quit', () => {
// Unregister a shortcut.
globalShortcut.unregister('CommandOrControl+X')
// Unregister all shortcuts.
globalShortcut.unregisterAll()
})
方法
globalShortcut
模块具有以下方法:
globalShortcut.register(accelerator, callback)
accelerator
Acceleratorcallback
函数
返回 boolean
- 指示快捷键是否注册成功。
注册一个 accelerator
全局快捷键。 当用户按下注册的快捷键时,将调用 callback
函数。
当快捷键已经被其他应用占用时,此调用将悄然失败。 这是操作系统的设计行为,因为它们不希望应用之间为全局快捷键而竞争。
以下快捷键在 macOS 10.14 Mojave 上将无法成功注册,除非应用已被授权为受信任的辅助功能客户端:
- "Media Play/Pause"
- "Media Next Track"
- "Media Previous Track"
- "Media Stop"
globalShortcut.registerAll(accelerators, callback)
accelerators
Accelerator[] - Accelerator 数组。callback
函数
注册 accelerators
中所有 accelerator
项的全局快捷键。 当用户按下注册的快捷键中的任何一个时,将调用 callback
函数。
当给定的快捷键已经被其他应用占用时,此调用将悄然失败。 这是操作系统的设计行为,因为它们不希望应用之间为全局快捷键而竞争。
以下快捷键在 macOS 10.14 Mojave 上将无法成功注册,除非应用已被授权为受信任的辅助功能客户端:
- "Media Play/Pause"
- "Media Next Track"
- "Media Previous Track"
- "Media Stop"
globalShortcut.isRegistered(accelerator)
accelerator
Accelerator
返回 boolean
- 指示此应用是否已注册 accelerator
。
当快捷键已经被其他应用占用时,此调用仍然会返回 false
。 这是操作系统的设计行为,因为它们不希望应用之间为全局快捷键而竞争。
globalShortcut.unregister(accelerator)
accelerator
Accelerator
注销 accelerator
全局快捷键。
globalShortcut.unregisterAll()
注销所有全局快捷键。