2016-04-29 10 views
3

Wikipedia article端末のANSIエスケープコードでは、端末に送信できるコードがいくつか表示されます。および次にいくつかのデータがアプリケーションに返されます。コードを送信し、その結果をNode.jsアプリケーションで読み取る方法の例を示してください。例えば端末からのANSIエスケープの読み出し

このエスケープシーケンス:

CSIの6N | DSR - デバイスステータスレポート

nは行であり、mは列であり、ESC[n;mR(キーボードで入力したかのように)としてアプリケーションにカーソル位置(CPR)を報告)

I。 process.stdoutprocess.stdin、様々なfs.*機能を使用しようと過ごした時間は、さえ/dev/ttyから読み取ろうとしました。すべて無駄に、完全に失われた。

+1

は黙って、明らかに落胆されたルールに違反似ていない質問を閉じるための投票します。 – exebook

答えて

3

は、ここに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)); 
}); 

出力:私は結果を端末に印刷されていないとせずに読み込むことができるように、rawモードに入る標準入力作ってるんだ

'\u001b[30;1R' 

ユーザーはリターンを押す必要があります。

関連する問題