node.js - 立即在 Mac 上的 CLI 中注册击键

标签 node.js command-line-interface

我想用 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/

相关文章:

javascript - Azure - 自定义 API 的备份脚本

python - 如何将Python点击的默认选项设置为-h?

javascript - 解决矛盾的 Cache-Control header

node.js - 'typeof Sequelize' 类型缺少 'Sequelize' : Sequelize, 配置、modelManager、connectionManager 等 23 个类型中的以下属性

javascript - 设置 'Content-disposition' 而不设置 'Content-Length' 是否可以接受?

javascript - 如何在没有 Node.js 的情况下使用 JS require()

python - 安装最新版本的 EB CL 时出现问题

node.js - Redis 消息的异步操作

python - 画中画安装 : Cannot combine --user and --target

angular - 在 Angular CLI 中更改颜色