Node.js Nodejs监听全局热键按下

Node.js Nodejs监听全局热键按下,node.js,Node.js,我没有将节点用作服务器;我将其用于CLI应用程序。不过,这一个需要在后台运行,并监听全局按键事件(无焦点) 我在Node中看不到任何明显的方法。我的选择是什么?似乎是和的组合,你可以想怎么做。我只在节点脚本中使用过keypress,而不是守护进程,所以我不知道它是否会以同样的方式工作。但它可能!最糟糕的情况是,您会发现一个解决方案无法解决您的问题。看起来您需要全局钩子来处理所有键盘事件。 你可以试试这个模块。使用非常简单: const ioHook = require('iohook'); io

我没有将节点用作服务器;我将其用于CLI应用程序。不过,这一个需要在后台运行,并监听全局按键事件(无焦点)


我在Node中看不到任何明显的方法。我的选择是什么?

似乎是和的组合,你可以想怎么做。我只在节点脚本中使用过keypress,而不是守护进程,所以我不知道它是否会以同样的方式工作。但它可能!最糟糕的情况是,您会发现一个解决方案无法解决您的问题。

看起来您需要全局钩子来处理所有键盘事件。
你可以试试这个模块。使用非常简单:

const ioHook = require('iohook');
ioHook.on("keypress", event => {
  console.log(event);
  // {keychar: 'f', keycode: 19, rawcode: 15, type: 'keypress'}
});
ioHook.start();

我只是用iohook。你可以这样做

const ioHook = require('./node_modules/iohook-master/index.js');

ioHook.on("keyup",function(keyPress){
    if(keyPress.keycode == CTRLIZQ){
        //do something
    }
});

ioHook.start();

鉴于您将其用于命令行工具,那么“在后台”是什么意思;在什么背景下?我的大多数应用程序都是CLI应用程序。这个不是真的。这将是一个后台过程。但当你按下它的热键时,它会弹出一个CLI界面。对,那么背景是什么呢?您将其作为后台进程运行,但您的全局环境是什么?windows、OSX、Linux GUI、终端访问、虚拟机…?这有什么关系?应该是跨平台的。如果可能的话,还有Windows、Linux和Mac。这真是个奇怪的问题。为什么这不重要?不同的环境有不同的API来与操作系统对话,有人为特定的操作系统编写热键库的可能性比有人为所有操作系统编写热键库的可能性要高得多。我看不到任何类似于您在上询问的内容,如果您已经查看了:如果您使用您已经查找的内容和位置更新您的帖子,这将有所帮助。似乎iohook将为较新版本的Node安装。我在节点v8.1.4上,它不会安装,我无法编译,因为
npm安装失败后不会留下任何工件。是的,很抱歉。我只是没有时间更新iohook@Steverino我已经更新了iohook以支持新版本的node.jsI,它在v6.11.1上,并且只能获得一个按键事件。小心!这个库有一个bug。您无法打开“iohook”的两个实例,因为您的鼠标冻结。看看它