从终端读取 ANSI 转义

2023-12-15

维基百科文章在终端上 ANSI 转义代码显示一些可以发送到终端的代码AND然后一些数据返回给应用程序。请提供一个示例,说明如何发送代码,然后在 Node.js 应用程序中读取结果。

例如这个转义序列:

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

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

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


这是一种方法:

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));
});

Output:

'\u001b[30;1R'

我正在使 stdin 进入原始模式,以便结果不会打印在终端中,并且无需用户按回车键即可读取。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从终端读取 ANSI 转义 的相关文章

随机推荐