Atom电子捕获所有键盘事件,即使应用程序失去焦点。

14

我希望知道是否有一种使用Atom Electron制作应用程序的方法,在用户关注/不关注我的应用时可以运行并获取我的键盘事件。

例如,如果他在Chrome上写东西,我的应用程序将存储他按下的所有键。我进行了一些搜索,但没有找到解决我的问题的方法。


4
听起来你正在尝试做一些不好的事情。 - Patrick Michaelsen
有一些合法的用途可以用来监听所有键,比如剪贴板工具。但这里似乎不是这种情况。 - Slbox
3个回答

12

1
全局快捷键似乎不是他想要的。当你捕获一个全局快捷键时,该组合键被从管道中取出并且不会传递给应用程序。我认为他正在寻找一种监视按键的方法。 - Cyril Gupta

10

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

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();

0

根据文档,使用globalShortcut将会在任何情况下应用键盘快捷方式,即使我们的窗口没有处于焦点状态。但是,如果您只想监听应用程序窗口内的按键事件,则可以使用普通的keyupkeydown事件。但这是一种稍微麻烦的方法,因为要将这些事件从渲染进程传递到主进程,我们必须设置预加载脚本

您可以从此文章中了解有关从渲染进程到主进程监听事件的想法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接