【发布时间】:2017-01-12 08:41:07
【问题描述】:
我正在尝试向我的 Electron 应用程序添加一个全局快捷方式,以切换显示/隐藏它。我的应用是使用 maxogden/menubar 和 React 构建的菜单栏应用。
我有以下代码。为了简洁起见,我留下了一些内容,但这就是我设置全局快捷方式的方式。
我认为注意maxogden/menubar Readme 上的提示之一也很重要:
使用 mb.on('after-create-window', callback) 在你之后运行 应用已加载
const { globalShortcut } = require('electron');
const keyboardShortcuts = {
open: 'CommandOrControl+Shift+g',
close: 'CommandOrControl+Shift+g'
}
menu.on('after-create-window', () => {
globalShortcut.register(keyboardShortcuts.open, () => {
menu.window.show();
});
});
menu.on('after-show', () => {
globalShortcut.unregister(keyboardShortcuts.open);
globalShortcut.register(keyboardShortcuts.close, () => {
menu.window.hide();
});
});
menu.on('focus-lost', () => {
globalShortcut.unregister(keyboardShortcuts.close);
globalShortcut.register(keyboardShortcuts.open, () => {
menu.window.show();
});
});
第一次打开菜单栏后,我的快捷方式已注册并可以显示应用程序。但是,我为unregister 快捷方式实现的代码,并重新注册它以隐藏应用程序(显示时),似乎不起作用。
我不确定我的重新注册快捷方式的代码是否设置在正确的事件处理程序中,即after-show 和focus-lost。我感觉我正在使用的这些事件处理程序与我的menu 直接相关,而不是menu.window。这可以解释为什么没有重新注册快捷方式,但我不确定。
有谁知道我将如何明智地设置一个全局快捷方式来打开/关闭我的菜单栏应用程序?
【问题讨论】:
标签: javascript reactjs keyboard-shortcuts electron menubar