2016-01-07 13:26:08 +00:00
# globalShortcut
2014-08-04 01:47:42 +00:00
2016-04-21 22:39:12 +00:00
> Detect keyboard events when the application does not have keyboard focus.
2016-04-21 22:35:29 +00:00
2016-11-23 19:20:56 +00:00
Process: [Main ](../glossary.md#main-process )
2016-11-03 17:26:00 +00:00
2016-01-07 13:26:08 +00:00
The `globalShortcut` module can register/unregister a global keyboard shortcut
2015-08-27 00:32:47 +00:00
with the operating system so that you can customize the operations for various
shortcuts.
2015-09-09 21:09:14 +00:00
**Note:** The shortcut is global; it will work even if the app does
2015-08-27 00:32:47 +00:00
not have the keyboard focus. You should not use this module until the `ready`
event of the app module is emitted.
2014-08-04 01:47:42 +00:00
```javascript
2018-09-13 16:10:51 +00:00
const { app, globalShortcut } = require('electron')
2014-08-04 01:47:42 +00:00
2016-05-04 17:59:02 +00:00
app.on('ready', () => {
2016-04-01 21:54:25 +00:00
// Register a 'CommandOrControl+X' shortcut listener.
2016-05-10 17:15:09 +00:00
const ret = globalShortcut.register('CommandOrControl+X', () => {
2016-07-26 01:39:25 +00:00
console.log('CommandOrControl+X is pressed')
})
2015-06-09 16:01:09 +00:00
2015-07-09 14:49:16 +00:00
if (!ret) {
2016-07-26 01:39:25 +00:00
console.log('registration failed')
2015-07-09 14:49:16 +00:00
}
2014-08-04 01:47:42 +00:00
2015-07-09 14:49:16 +00:00
// Check whether a shortcut is registered.
2016-07-26 01:39:25 +00:00
console.log(globalShortcut.isRegistered('CommandOrControl+X'))
})
2014-08-04 01:47:42 +00:00
2016-05-04 17:59:02 +00:00
app.on('will-quit', () => {
2015-07-09 14:49:16 +00:00
// Unregister a shortcut.
2016-07-26 01:39:25 +00:00
globalShortcut.unregister('CommandOrControl+X')
2014-08-04 01:47:42 +00:00
2015-07-09 14:49:16 +00:00
// Unregister all shortcuts.
2016-07-26 01:39:25 +00:00
globalShortcut.unregisterAll()
})
2014-08-04 01:47:42 +00:00
```
2015-08-27 00:32:47 +00:00
## Methods
2016-01-07 13:26:08 +00:00
The `globalShortcut` module has the following methods:
2015-08-27 00:32:47 +00:00
### `globalShortcut.register(accelerator, callback)`
2014-08-04 01:47:42 +00:00
2014-08-04 16:00:39 +00:00
* `accelerator` [Accelerator ](accelerator.md )
2014-08-04 01:47:42 +00:00
* `callback` Function
2015-07-14 15:58:15 +00:00
Registers a global shortcut of `accelerator` . The `callback` is called when
2016-01-07 13:26:08 +00:00
the registered shortcut is pressed by the user.
When the accelerator is already taken by other applications, this call will
silently fail. This behavior is intended by operating systems, since they don't
want applications to fight for global shortcuts.
2014-08-04 01:47:42 +00:00
2019-01-04 04:40:17 +00:00
The following accelerators will not be registered successfully on macOS 10.14 Mojave unless
the app has been authorized as a [trusted accessibility client ](https://developer.apple.com/library/archive/documentation/Accessibility/Conceptual/AccessibilityMacOSX/OSXAXTestingApps.html ):
* "Media Play/Pause"
* "Media Next Track"
* "Media Previous Track"
* "Media Stop"
2018-11-07 17:40:38 +00:00
### `globalShortcut.registerAll(accelerators, callback)`
* `accelerators` String[] - an array of [Accelerator ](accelerator.md )s.
* `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.
When a given accelerator is already taken by other applications, this call will
silently fail. This behavior is intended by operating systems, since they don't
want applications to fight for global shortcuts.
2019-01-04 04:40:17 +00:00
The following accelerators will not be registered successfully on macOS 10.14 Mojave unless
the app has been authorized as a [trusted accessibility client ](https://developer.apple.com/library/archive/documentation/Accessibility/Conceptual/AccessibilityMacOSX/OSXAXTestingApps.html ):
* "Media Play/Pause"
* "Media Next Track"
* "Media Previous Track"
* "Media Stop"
2015-08-27 00:32:47 +00:00
### `globalShortcut.isRegistered(accelerator)`
2014-08-04 01:47:42 +00:00
2014-08-04 16:00:39 +00:00
* `accelerator` [Accelerator ](accelerator.md )
2014-08-04 01:47:42 +00:00
2016-09-24 23:59:30 +00:00
Returns `Boolean` - Whether this application has registered `accelerator` .
2016-01-07 13:26:08 +00:00
When the accelerator is already taken by other applications, this call will
still return `false` . This behavior is intended by operating systems, since they
don't want applications to fight for global shortcuts.
2014-08-04 01:47:42 +00:00
2015-08-27 00:32:47 +00:00
### `globalShortcut.unregister(accelerator)`
2014-08-04 01:47:42 +00:00
2014-08-04 16:00:39 +00:00
* `accelerator` [Accelerator ](accelerator.md )
2014-08-04 01:47:42 +00:00
2015-08-27 00:32:47 +00:00
Unregisters the global shortcut of `accelerator` .
2014-08-04 01:47:42 +00:00
2015-08-27 00:32:47 +00:00
### `globalShortcut.unregisterAll()`
2014-08-04 01:47:42 +00:00
2015-10-07 16:03:46 +00:00
Unregisters all of the global shortcuts.