Elecronjs 全局键盘快捷键在 make 后不起作用(使用 electron-forge)
Elecronjs global keyboard shortcuts not working after make (using electron-forge)
我目前正在开发一个类似于 Spotlight 搜索的应用程序。其中一项功能是能够使用键盘快捷键(在本例中为 ctrl + D)调用搜索栏。我正在使用 electron.js 来创建它。为了创建全局快捷方式,我使用了以下内容:
app.whenReady().then(() => {
globalShortcut.register('CommandOrControl+D', () => {
if (mainWindow.isVisible() == false) {
mainWindow.show();
console.log("\nctrl + D was pressed\nmainWindow focused");
} else if (mainWindow.isVisible() == true) {
mainWindow.blur();
mainWindow.hide();
console.log("\nctrl + D was pressed\nmainWindow not focused")
}
})
})
在测试时(使用electron-forge),我会暂时输入命令electron-forge start
到运行程序,它运行得很好,但是在运行ning electron-forge make
和 运行 exe 文件,快捷方式不再适用于 hide/blur 和 window,但是它可以召唤 window.
我尝试将 ctrl + D 命令更改为 ctrl + X(electron 推荐)和其他几个命令并重新制作项目以确保快捷方式未被使用,但没有成功。我也从 isFocused 而不是 isVisible 开始,即使在测试中也不起作用。
注意:我使用的是 Windows 10,有时在使用 electron 时它的运行方式可能与 Mac 不同,尽管在这个问题上它真的不应该有什么不同。
这是一个非常奇怪的故障,但我设法让它工作。 Electron Forge 没有任何问题。事实证明 isVisible
的输出不是很可靠,因此通过将其替换为 isFocused
,它可以完美地工作。这也意味着可以删除mainWindow.hide()
。
我还发现 windows 本身或其他程序采取的许多快捷方式可能会混淆结果(非常明显但仍然值得一提),而超级键(Windows 键)不会由于它主要用于系统级程序,因此无法使用。
我目前正在开发一个类似于 Spotlight 搜索的应用程序。其中一项功能是能够使用键盘快捷键(在本例中为 ctrl + D)调用搜索栏。我正在使用 electron.js 来创建它。为了创建全局快捷方式,我使用了以下内容:
app.whenReady().then(() => {
globalShortcut.register('CommandOrControl+D', () => {
if (mainWindow.isVisible() == false) {
mainWindow.show();
console.log("\nctrl + D was pressed\nmainWindow focused");
} else if (mainWindow.isVisible() == true) {
mainWindow.blur();
mainWindow.hide();
console.log("\nctrl + D was pressed\nmainWindow not focused")
}
})
})
在测试时(使用electron-forge),我会暂时输入命令electron-forge start
到运行程序,它运行得很好,但是在运行ning electron-forge make
和 运行 exe 文件,快捷方式不再适用于 hide/blur 和 window,但是它可以召唤 window.
我尝试将 ctrl + D 命令更改为 ctrl + X(electron 推荐)和其他几个命令并重新制作项目以确保快捷方式未被使用,但没有成功。我也从 isFocused 而不是 isVisible 开始,即使在测试中也不起作用。
注意:我使用的是 Windows 10,有时在使用 electron 时它的运行方式可能与 Mac 不同,尽管在这个问题上它真的不应该有什么不同。
这是一个非常奇怪的故障,但我设法让它工作。 Electron Forge 没有任何问题。事实证明 isVisible
的输出不是很可靠,因此通过将其替换为 isFocused
,它可以完美地工作。这也意味着可以删除mainWindow.hide()
。
我还发现 windows 本身或其他程序采取的许多快捷方式可能会混淆结果(非常明显但仍然值得一提),而超级键(Windows 键)不会由于它主要用于系统级程序,因此无法使用。