维基百科的文章对终端ANSI转义代码显示了一些代码,可以被发送到终端和随后的一些数据被返回给应用程序。请提供一个示例如何发送代码,然后在 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));
});
Run Code Online (Sandbox Code Playgroud)
输出:
'\u001b[30;1R'
Run Code Online (Sandbox Code Playgroud)
我让 stdin 进入原始模式,这样结果就不会打印在终端中,并且可以在用户不必按回车键的情况下读取。