globalShortcut
Отслеживает действия на клавиатуре, когда она не сфокусирована на приложении.
ProcessMain
Модуль globalShortcut может регистрировать/отменять регистрацию глобальных сочетаний клавиш, так что вы можете настраивать задачи для различных сочетаний клавиш.
[!NOTE] The shortcut is global; it will work even if the app does not have the keyboard focus. This module cannot be used before the
readyevent of the app module is emitted. On Linux Wayland sessions, shortcuts are bound through the desktop portal — see Usage on Linux below.
const { app, globalShortcut } = require('electron')
app.whenReady().then(() => {
// Register a 'CommandOrControl+X' shortcut listener.
const ret = globalShortcut.register('CommandOrControl+X', () => {
console.log('CommandOrControl+X is pressed')
})
if (!ret) {
console.log('ошибка регистрации')
}
// Проверяем, было ли сочетание зарегистрировано.
console.log(globalShortcut.isRegistered('CommandOrControl+X'))
})
app.on('will-quit', () => {
// Отменяем регистрацию сочетания клавиш.
globalShortcut.unregister('CommandOrControl+X')
// Отменяем регистрацию всех сочетаний.
globalShortcut.unregisterAll()
})
[!TIP] See also: A detailed guide on Keyboard Shortcuts.
Usage on Linux
On X11, shortcuts are grabbed directly from the X server and work like on other platforms.
On Wayland, compositors do not let apps grab keys directly. Electron instead uses the org.freedesktop.portal.GlobalShortcuts portal, which changes the module's behavior in several ways:
- Your app must have a valid portal identity. Set
desktopNameinpackage.json(or callapp.setDesktopName()) to a reverse-DNS ID matching your installed.desktopfile, e.g.com.example.MyApp.desktop. With an invalid or unresolvable ID, GNOME 50.0/50.1 denies every bind — silently, from the app's perspective. - GNOME shows a consent dialog the first time an app binds shortcuts, pre-filled with the accelerators the app requested. KDE Plasma binds silently without a dialog (shortcuts are visible and editable in System Settings).
- Bindings persist across relaunches, keyed by the app's portal identity: after the user accepts once, registering the same shortcuts on later launches re-binds them silently.
- The portal path is enabled by default. The
GlobalShortcutsPortalandGlobalShortcutsPortalPreferredTriggerfeatures are on by default, so no feature flags are needed — including on GNOME (see #52221).
Методы
Модуль globalShortcut имеет следующие методы:
globalShortcut.register(accelerator, callback)
History
| Version(s) | Changes |
|---|---|
None | API ADDED |
acceleratorstring - An accelerator shortcut.callbackFunction
Возвращает boolean - было ли сочетание клавиш успешно зарегистрировано.
Registers a global shortcut of accelerator. The callback is called when the registered shortcut is pressed by the user.
Когда accelerator уже занят другими приложениями, этот вызов будет молча завершаться ошибкой. Такое поведение назначается операционными системами, поскольку они не хотят, чтобы приложения боролись за глобальные сочетания клавиш.
The following accelerators will not be registered successfully on macOS 10.14 Mojave unless the app has been authorized as a trusted accessibility client:
- "Media Play/Pause"
- "Media Next Track"
- "Media Previous Track"
- "Media Stop"
globalShortcut.registerAll(accelerators, callback)
History
| Version(s) | Changes |
|---|---|
None | API ADDED |
acceleratorsstring[] - An array of accelerator shortcuts.callbackFunction
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.
Когда определенный accelerator уже занят другими приложениями, этот вызов будет молча завершаться ошибкой. Такое поведение назначается операционными системами, поскольку они не хотят, чтобы приложения боролись за глобальные сочетания клавиш.
The following accelerators will not be registered successfully on macOS 10.14 Mojave unless the app has been authorized as a trusted accessibility client:
- "Media Play/Pause"
- "Media Next Track"
- "Media Previous Track"
- "Media Stop"
globalShortcut.isRegistered(accelerator)
History
| Version(s) | Changes |
|---|---|
None | API ADDED |
acceleratorstring - An accelerator shortcut.
Возвращает boolean - независимо от того, зарегистрировало ли это приложение accelerator.
Когда ускоритель уже занят другими приложениями, этот вызов будет возвращать false. Такое поведение назначается операционными системами, поскольку они не хотят, чтобы приложения боролись за глобальные сочетания клавиш.
globalShortcut.unregister(accelerator)
History
| Version(s) | Changes |
|---|---|
None | API ADDED |
acceleratorstring - An accelerator shortcut.
Отмена регистрации сочетания клавиш accelerator.
globalShortcut.unregisterAll()
History
| Version(s) | Changes |
|---|---|
None | API ADDED |
Отменяет регистрацию всех глобальных ярлыков.
globalShortcut.setSuspended(suspended)
History
| Version(s) | Changes |
|---|---|
None | API ADDED |
suspendedboolean - Whether global shortcut handling should be suspended.
Suspends or resumes global shortcut handling. When suspended, all registered global shortcuts will stop listening for key presses. When resumed, all previously registered shortcuts will begin listening again. New shortcut registrations will fail while handling is suspended.
This can be useful when you want to temporarily allow the user to press key combinations without your application intercepting them, for example while displaying a UI to rebind shortcuts.
globalShortcut.isSuspended()
History
| Version(s) | Changes |
|---|---|
None | API ADDED |
Returns boolean - Whether global shortcut handling is currently suspended.