从终端读取ANSI转义
问题描述:
Wikipedia article在终端上ANSI转义码显示了一些可能发送到终端的代码AND然后将一些数据返回给应用程序。请举例说明如何发送代码,然后在Node.js应用程序中读取结果。从终端读取ANSI转义
例如,这转义序列:
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));
});
输出:
'\u001b[30;1R'
我在做标准输入进入原始模式,这样的结果是不是在终端打印,可以在不被读取用户不得不按回车。
对于不明显看起来违反规则的问题,默默投票结束是令人沮丧的。 – exebook