如何在电子应用中将鼠标单击设置为全局快捷方式

时间:2017-11-20 12:41:11

标签: electron node-modules

当电子应用在后台运行时,我想在鼠标的双right-click上触发一个动作  我阅读了文档,看起来鼠标事件没有globalshortcuts

任何其他方式来实现这一目标?也许某些节点模块与电子应用兼容?

2 个答案:

答案 0 :(得分:0)

我找到了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 Body中的第一项,它应该可以正常工作。至少它适用于我的项目

编辑,因为我忘了它:积分谷歌回答第6条

答案 1 :(得分:0)

不幸的是,我们还不能实现。

正如 MarshallOfSound 对这个官方问题的评论

“globalShortcut 全局拦截组合键,并阻止任何应用程序接收这些键事件。如果您阻止应用程序接收鼠标按钮,那么一切都会很快崩溃?”

https://github.com/electron/electron/issues/13964


对于 macOS,我目前使用的是 Keyboard Maestro App。 我正在使用此应用获取鼠标键,并在我的 Electron 应用中触发 globalShortcut 组合键寄存器。

也许适用于 Windows、AHK(自动热键)