globalShortcut
优质
小牛编辑
134浏览
2023-12-01
在应用程序没有键盘焦点时,监听键盘事件。
进程:主进程
globalShortcut
模块可以在操作系统中注册/注销全局快捷键, 以便可以为操作定制各种快捷键。
注意: 快捷方式是全局的; 即使应用程序没有键盘焦点, 它也仍然在持续监听键盘事件。 在 app 模块的 ready
事件就绪之前,这个模块不能使用。
const { app, globalShortcut } = require('electron')
app.whenReady().then(() => {
// 注册一个'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
返回Boolean
- 快捷键注册是否成功
注册 accelerator
的全局快捷键。 当用户按下注册快捷键时, callback
会被调用。
如果指定的快捷键已经被其他应用程序注册掉, 调用会默默失败。 该特性由操作系统定义,因为操作系统不希望多个程序的全局快捷键互相冲突。
在 macOS 10.14 Mojave 下面,如果 app 没有被授权为可信任使用的客户端,那么下列快捷键会注册失败:
- "Media Play/Pause"
- "Media Next Track"
- "Media Previous Track"
- "Media Stop"
globalShortcut.registerAll(accelerators, callback)
accelerators
String[] - an array of Accelerators.callback
Function
注册多个全局快捷键。 当用户按下注册快捷键时, 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()
注销所有的全局快捷键(清空该应用程序的所有全局快捷键)。