如何在电子应用程序中将鼠标单击设置为全局快捷方式
Posted
技术标签:
【中文标题】如何在电子应用程序中将鼠标单击设置为全局快捷方式【英文标题】:How to set mouse click as global shortcut in electron app 【发布时间】:2018-05-03 16:31:52 【问题描述】:当电子应用程序在后台运行时,我想在鼠标的双 right-click
上触发一个动作。
我阅读了文档,似乎没有globalshortcuts 用于鼠标事件。
还有其他方法可以实现吗?也许一些与电子应用程序兼容的节点模块?
【问题讨论】:
【参考方案1】:很遗憾,我们还不能做到这一点。
正如 MarshallOfSound 对这个官方问题的评论
“globalShortcut 全局拦截组合键并阻止任何应用程序接收这些键事件。如果您阻止应用程序接收鼠标按钮按下,那么事情会很快在各处中断 ?”
https://github.com/electron/electron/issues/13964
对于 macOS,我目前正在使用 Keyboard Maestro 应用程序。 我正在使用这个应用程序获取我的鼠标键,并在我的 Electron 应用程序中触发一个 globalShortcut 组合键。
也许适用于 Windows、AHK(自动热键)
【讨论】:
【参考方案2】:我为 html 代码找到了这个不错的解决方案
<script type = "text/javascript">
const remote = require('electron')
const Menu, MenuItem = remote
const menu = new Menu()
// Build menu one item at a time, unlike
menu.append(new MenuItem (
label: 'MenuItem1',
click()
console.log('item 1 clicked')
))
menu.append(new MenuItem(type: 'separator'))
menu.append(new MenuItem(label: 'MenuItem2', type: 'checkbox', checked: true))
menu.append(new MenuItem (
label: 'MenuItem3',
click()
console.log('item 3 clicked')
))
// Prevent default action of right click in chromium. Replace with our menu.
window.addEventListener('contextmenu', (e) =>
e.preventDefault()
menu.popup(remote.getCurrentWindow())
, false)
</script>
把它作为你的 HTML 正文中的第一项,它应该可以工作。至少它适用于我的项目
编辑,因为我忘记了:感谢谷歌在第 6 个条目上的答案
【讨论】:
如果我的应用程序在背景上运行,即当焦点在不同的应用程序上时,它会起作用吗?? 我没有测试过。所以你想让你的应用在后台运行,所以右键应该替换 windows/linux/max 内部上下文菜单? 是的......重新阅读这个问题,我很确定这个答案不会有帮助以上是关于如何在电子应用程序中将鼠标单击设置为全局快捷方式的主要内容,如果未能解决你的问题,请参考以下文章
如何在Android模拟器中将应用程序的快捷方式添加到主屏幕