本文介绍了nodejs如何从标准输入读取击键的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否可以在正在运行的 nodejs 脚本中监听传入的击键?如果我使用 process.openStdin() 并监听它的 'data' 事件,那么输入会被缓冲直到下一个换行符,就像这样:

Is it possible to listen for incoming keystrokes in a running nodejs script?If I use process.openStdin() and listen to its 'data' event then the input is buffered until the next newline, like so:

// stdin_test.js
var stdin = process.openStdin();
stdin.on('data', function(chunk) { console.log("Got chunk: " + chunk); });

运行这个,我得到:

$ node stdin_test.js
                <-- type '1'
                <-- type '2'
                <-- hit enter
Got chunk: 12

我想看到的是:

$ node stdin_test.js
                <-- type '1' (without hitting enter yet)
 Got chunk: 1

我正在寻找一个相当于例如 getc 在 ruby​​ 中

I'm looking for a nodejs equivalent to, e.g., getc in ruby

这可能吗?

推荐答案

可以这样实现,如果切换到raw模式:

var stdin = process.openStdin();
require('tty').setRawMode(true);

stdin.on('keypress', function (chunk, key) {
  process.stdout.write('Get Chunk: ' + chunk + '
');
  if (key && key.ctrl && key.name == 'c') process.exit();
});

这篇关于nodejs如何从标准输入读取击键的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-23 19:30