系统快捷键
在应用程序没有键盘焦点时,监听键盘事件。
线程:主线程
globalShortcut
模块可以在操作系统中注册/注销全局快捷键, 以便可以为操作定制各种快捷键。
注意: 快捷方式是全局的; 即使应用程序没有键盘焦点, 它也仍然在持续监听键盘事件。 在应用程序模块发出 ready
事件之前, 不应使用此模块。
const { app, globalShortcut } = require('electron')
app.on('ready', () => {
// 注册一个 'CommandOrControl+X' 的全局快捷键
const ret = globalShortcut.register('CommandOrControl+X', () => {
console.log('CommandOrControl+X is pressed')
})
if (!ret) {
console.log('registration failed')
}
// 检查快捷键是否注册成功
console.log(globalShortcut.isRegistered('CommandOrControl+X'))
})
app.on('will-quit', () => {
// 注销快捷键
globalShortcut.unregister('CommandOrControl+X')
// 注销所有快捷键
globalShortcut.unregisterAll()
})
方法
globalShortcut
模块具有以下方法:
globalShortcut.register(accelerator, callback)
accelerator
Acceleratorcallback
Function
注册指定的accelerator
为全局快捷键。当用户按下该注册的快捷键时, 将调用callback
回调函数。
如果指定的快捷键已经被其他应用程序注册掉, 调用会默默失败。 该特性由操作系统定义,因为操作系统不希望多个程序的全局快捷键互相冲突。
在 macOS 10.14 Mojave 下面,如果 app 没有被授权为可信任使用的客户端,那么下列快捷键会注册失败:
- "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()
注销所有的全局快捷键(清空该应用程序的所有全局快捷键)。