系统快捷键

在应用程序没有键盘焦点时,监听键盘事件。

进程:主进程

globalShortcut 模块可以在操作系统中注册/注销全局快捷键, 以便可以为操作定制各种快捷键。

注意: 快捷方式是全局的; 即使应用程序没有键盘焦点, 它也仍然在持续监听键盘事件。 This module cannot be used before the ready event of the app module is emitted.

  1. const { app, globalShortcut } = require('electron')
  2. app.whenReady().then(() => {
  3. // Register a 'CommandOrControl+X' shortcut listener.
  4. const ret = globalShortcut.register('CommandOrControl+X', () => {
  5. console.log('CommandOrControl+X is pressed')
  6. })
  7. if (!ret) {
  8. console.log('registration failed')
  9. }
  10. // 检查快捷键是否注册成功
  11. console.log(globalShortcut.isRegistered('CommandOrControl+X'))
  12. })
  13. app.on('will-quit', () => {
  14. // 注销快捷键
  15. globalShortcut.unregister('CommandOrControl+X')
  16. // 注销所有快捷键
  17. globalShortcut.unregisterAll()
  18. })

方法

globalShortcut 模块具有以下方法:

globalShortcut.register(accelerator, callback)

返回Boolean - 快捷键注册是否成功

注册 accelerator 的全局快捷键。 当用户按下注册快捷键时, callbak 会被调用。

如果指定的快捷键已经被其他应用程序注册掉, 调用会默默失败。 该特性由操作系统定义,因为操作系统不希望多个程序的全局快捷键互相冲突。

在 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

Registers a global shortcut of all accelerator items in accelerators. The callback is called when any of the registered shortcuts are pressed by the user.

如果定义的快捷键已经被其他应用占有,这个调用会故障沉默。 该特性由操作系统定义,因为操作系统不希望多个程序的全局快捷键互相冲突。

在 macOS 10.14 Mojave 下面,如果 app 没有被授权为可信任使用的客户端,那么下列快捷键会注册失败:

  • “Media Play/Pause”
  • “Media Next Track”
  • “Media Previous Track”
  • “Media Stop”

globalShortcut.isRegistered(accelerator)

Returns Boolean - 表示 accelerator 全局快捷键是否注册成功

当快捷键已经被其他应用程序注册时, 此调用将返回 false。 该特性由操作系统定义,因为操作系统不希望多个程序的全局快捷键互相冲突。

globalShortcut.unregister(accelerator)

注销 accelerator 的全局快捷键。

globalShortcut.unregisterAll()

注销所有的全局快捷键(清空该应用程序的全局快捷键)。