是否可以在运行的nodejs脚本中监听传入的击键?如果我使用process.openStdin()
并监听它的'data'
事件,那么输入将被缓冲到下一个换行符,如下所示:
// 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
我正在查找一个nodejs,它相当于ruby中的getc
这可能吗?
8条答案
按热度按时间nsc4cvqm1#
由于
tty
已将此功能剥离,因此对于那些找到此答案的用户,下面介绍如何从stdin获取原始字符流:非常简单-基本上就像process.stdin的文档一样,但是使用
setRawMode( true )
获取原始流,这在文档中很难识别。qlckcl4x2#
如果您切换到原始模式,可以通过以下方式实现:
6uxekuva3#
在节点〉= v6.1.0中:
参见https://github.com/nodejs/node/issues/6626
wixjitnu4#
该版本使用keypress模块,支持node.js版本0.10、0.8、0.6以及iojs 2.3,一定要运行
npm install --save keypress
。vuktfyat5#
测试了nodejs 0.6.4(在版本0.8.14中测试失败):
如果您运行它并:
重要代码#1:
重要代码#2:
mkshixfv6#
这将输出每一个按键。用你喜欢的代码修改console.log。
8i9zcol27#
根据Dan Heberden的答案,这里有一个异步函数-
像这样使用-
q3aa05258#