Atom Electron即使在应用程序未聚焦时也能捕获所有键盘事件

3j86kqsm  于 2022-12-08  发布在  Electron
关注(0)|答案(3)|浏览(395)

我想知道是否有一种方法,使一个应用程序与原子电子运行,并获得我的键盘事件时,用户是/不是集中在我的应用程序。
例如,如果他在Chrome上写了一些东西,我的应用程序会存储他按下的所有键。我搜索了一下,但没有找到解决我问题的东西。

kmpatx3s

kmpatx3s1#

最接近您所寻找的是全局快捷方式:https://github.com/electron/electron/blob/master/docs/api/global-shortcut.md。虽然在core Electron中没有任何东西来支持捕获所有的键盘事件,但幸运的是,node.js对于native node addons是非常可扩展的。

vjhs03f7

vjhs03f72#

对于全局快捷键,可以使用Electron Keyboard-Shortcuts module

const {app, globalShortcut} = require('electron')

app.on('ready', () => {
  globalShortcut.register('CommandOrControl+X', () => {
    console.log('CommandOrControl+X is pressed')
  })
})

但本模块只支持快捷键
如果需要任何键监听/挂钩,则应使用另一个模块,如iohook

const ioHook = require('iohook');

ioHook.on("keyup", event => {
   console.log(event); // {keychar: 'f', keycode: 19, rawcode: 15, type: 'keup'}
});

ioHook.start();
bq3bfh9z

bq3bfh9z3#

根据文档,使用globalShortcut会将键盘快捷键应用到任何地方,即使我们的窗口没有处于焦点状态。但是如果你只想在你的应用程序窗口中监听按键事件。那么你可以使用普通的keyupkeydown事件。但是这是一个稍微长一点的方法,因为要将这些事件从渲染传递到主进程,我们必须设置预加载脚本。
您将了解如何侦听从render到主进程inside this post的事件。

相关问题