我想用 Nodejs 编写一个 CLI 应用程序。
我想要记录某个字符串,具体取决于按下的箭头键。我尝试了击键库,但有一些缺陷。 ![在此处输入图像描述][1]
首先,我需要在记录击键之前按“Enter”键。 此外,当按下箭头键时,CLI 会显示随机字符。
process.stdin.on('keypress', function (ch, key) {
if (key.ctrl && key.name == 'c') {
process.stdin.pause();
} else {
console.log('test!');
}
});
输出
^[[A
test!
^[[B
test!
^[[C
test!
知道如何做得更好吗?
最佳答案
我找到了一个更好的替代方案,开箱即用:
var stdin = process.stdin;
stdin.setRawMode(true);
stdin.resume();
stdin.setEncoding('utf8');
stdin.on('data', function(key){
if (key == '\u001B\u005B\u0041') {
process.stdout.write('up');
}
if (key == '\u001B\u005B\u0043') {
process.stdout.write('right');
}
if (key == '\u001B\u005B\u0042') {
process.stdout.write('down');
}
if (key == '\u001B\u005B\u0044') {
process.stdout.write('left');
}
if (key == '\u0003') { process.exit(); } // ctrl-c
});
关于node.js - 立即在 Mac 上的 CLI 中注册击键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30687106/