【问题标题】:Read ANSI escape from terminal从终端读取 ANSI 转义
【发布时间】:2016-08-24 01:49:34
【问题描述】:

Wikipedia article 终端 ANSI 转义码显示一些可以发送到终端的代码AND,然后将一些数据返回给应用程序。请提供一个示例如何发送代码,然后在 Node.js 应用程序中读取结果。

例如这个转义序列:

CSI 6n | DSR – 设备状态报告

将光标位置 (CPR) 报告给应用程序(就像在键盘上键入一样)ESC[n;mR,其中 n 是行,m 是列。)

我花了好几个小时尝试使用process.stdoutprocess.stdin、各种fs.* 函数,甚至尝试读取/dev/tty。一切都是徒劳的,完全迷失了。

【问题讨论】:

  • 不鼓励默默地投票结束看起来不明显违反规则的问题。

标签: node.js terminal


【解决方案1】:

这是一种方法:

var util = require("util");

function dsr(callback) {
  process.stdin.setRawMode(true);
  process.stdin.once("data", function(data) {
    process.stdin.setRawMode(false);
    process.stdin.pause();
    callback(data.toString());
  });
  process.stdout.write("\x1b[6n");
}

dsr(function(data) {
  console.log(util.inspect(data));
});

输出:

'\u001b[30;1R'

我正在让标准输入进入原始模式,这样结果就不会在终端中打印出来,并且无需用户按回车键即可读取。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-26
    • 1970-01-01
    • 1970-01-01
    • 2021-01-14
    • 2020-10-10
    • 1970-01-01
    • 1970-01-01
    • 2010-09-19
    相关资源
    最近更新 更多