使用process.stdin进行原始键盘捕获并不按预期工作?

时间:2015-11-10 00:30:57

标签: node.js stdin

我在Windows上的终端中捕获Raw键盘输入时遇到问题。这让我抓狂,因为我知道我用较旧版本的nodejs(一年+前)实现了这个功能

使用最新版本的 NodeJS (目前正在使用 4.2.2 ),捕获输入似乎有些错误 ..除非我遗漏了什么?

我正在投放的内容:

stdin = process.stdin;
stdin.on('data', function (data) {
    if (data == '\u0003') { process.exit(); }
    process.stdout.write('Captured Key : ' + data + "\n");
});
stdin.setEncoding('utf8');
stdin.setRawMode(true);
stdin.resume();

我的期望:

运行后,程序应立即响应按下的任何键,然后输出:

Captured Key : T
Captured Key : E
Captured Key : S
. . . etc

我得到了什么:

运行程序后,第一个键盘输入就像在Raw中捕获 NOT 一样,它被捕获并显示在屏幕上。

然后当我按 ENTER 键时,我刚输入的文本被推送到处理函数,然后程序将接受 raw中的进一步输入正如所料。

看起来好像程序需要使用ENTER按键来启动正确的原始模式输入模式?

pic相关 :我输入了TEST(ENTER)。然后程序按预期工作。

任何人都知道这是什么一回事?我找不到任何东西。此外,我不想使用任何外部库。谢谢!

0 个答案:

没有答案