• 系统快捷键
    • 方法
      • globalShortcut.register(accelerator, callback)
      • globalShortcut.registerAll(accelerators, callback)
      • globalShortcut.isRegistered(accelerator)
      • globalShortcut.unregister(accelerator)
      • globalShortcut.unregisterAll()

    系统快捷键

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

    线程:主线程

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

    注意: 快捷方式是全局的; 即使应用程序没有键盘焦点, 它也仍然在持续监听键盘事件。 在应用程序模块发出 ready 事件之前, 不应使用此模块。

    1. const { app, globalShortcut } = require('electron')
    2. app.on('ready', () => {
    3. // 注册一个 'CommandOrControl+X' 的全局快捷键
    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)

    • accelerator Accelerator
    • callback FunctionReturns Boolean - Whether or not the shortcut was registered successfully.

    注册指定的 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 FunctionRegisters a global shortcut of all accelerator items in accelerators. The callback is called when any of the registered shortcuts are pressed by the user.

    When a given accelerator is already taken by other applications, this call will silently fail. 该特性由操作系统定义,因为操作系统不希望多个程序的全局快捷键互相冲突。

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

    • "Media Play/Pause"
    • "Media Next Track"
    • "Media Previous Track"
    • "Media Stop"

    globalShortcut.isRegistered(accelerator)

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

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

    globalShortcut.unregister(accelerator)

    • accelerator Accelerator注销 accelerator 的全局快捷键。

    globalShortcut.unregisterAll()

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