globalShortcut
在应用程序没有键盘焦点时检测键盘事件。
进程: 主进程
globalShortcut 模块可以向操作系统注册/取消注册全局键盘快捷键,以便您可以自定义各种快捷键的操作。
该快捷键是全局性的;即使应用程序没有键盘焦点,它也能工作。 在应用程序模块的 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)
acceleratorstring - 一个 加速器 快捷键。callbackFunction
返回 boolean - 快捷键是否成功注册。
注册 accelerator 的全局快捷键。 当用户按下已注册的快捷键时,将调用 callback。
如果其他应用程序已经使用了该加速器,则此调用将静默失败。 这种行为是操作系统设计的,因为它们不希望应用程序争夺全局快捷键。
在 macOS 10.14 Mojave 上,除非应用程序已被授权为 受信任的可访问性客户端,否则以下加速器将无法成功注册
- "Media Play/Pause"
- "Media Next Track"
- "Media Previous Track"
- "Media Stop"
globalShortcut.registerAll(accelerators, callback)
acceleratorsstring[] - 一个 加速器 快捷键数组。callbackFunction
注册 accelerators 中所有 accelerator 项的全局快捷键。 当用户按下任何已注册的快捷键时,将调用 callback。
如果其他应用程序已经使用了给定的加速器,则此调用将静默失败。 这种行为是操作系统设计的,因为它们不希望应用程序争夺全局快捷键。
在 macOS 10.14 Mojave 上,除非应用程序已被授权为 受信任的可访问性客户端,否则以下加速器将无法成功注册
- "Media Play/Pause"
- "Media Next Track"
- "Media Previous Track"
- "Media Stop"
globalShortcut.isRegistered(accelerator)
acceleratorstring - 一个 加速器 快捷键。
返回 boolean - 该应用程序是否已注册 accelerator。
如果其他应用程序已经使用了该加速器,则此调用仍然会返回 false。 这种行为是操作系统设计的,因为它们不希望应用程序争夺全局快捷键。
globalShortcut.unregister(accelerator)
acceleratorstring - 一个 加速器 快捷键。
取消注册 accelerator 的全局快捷键。
globalShortcut.unregisterAll()
取消注册所有全局快捷键。