electron自带api,主进程使用:globalShortcut
globalShortcut模块可以在操作系统中注册/注销全局快捷键,但是个人不推荐用这种方式来注册快捷键:
优点:响应级别最高,只要软件在运行中,无论软件处于什么状态(没聚焦甚至隐藏),都会响应。
缺点:如果快捷键已经被其他应用程序注册掉,那么会注册失败。注册成功后,由于其响应级别最高,所以会影响其他软件快捷键的使用,在启动软件后,其他软件的快捷键相同的话其他软件的快捷键无法生效。
官网api地址:https://www.electronjs.org/zh/docs/latest/api/global-shortcut
主进程使用:electron-localshortcut
第三方的npm包,api和globalShortcut基本一致,相对而言没那么激进,是针对于窗口注册的,故需传入窗口进行注册,当窗口没聚焦时,不会相应。
优点:针对于窗口的监听,响应需处于聚焦状态,基本上能满足大多数场景。
缺点:需要引入第三方包,页面有webview,且焦点在webview上时无法触发。
github地址:https://github.com/parro-it/electron-localshortcut
渲染进程使用:Mousetrap
github地址:https://github.com/ccampbell/mousetrap
渲染进程使用:hotkeys-js
github地址:https://gitee.com/jaywcjlove/hotkeys?_from=gitee_search
渲染进程使用:jj-keyboard