1

これによると(@ Programs using ncurses):

http://en.wikipedia.org/wiki/Ncurses

この:

http://aperiodic.net/screen/faq#when_i_split_the_display_and_then_detach_screen_forgets_the_split

Screen は、テキスト ライブラリではなく termcap (使い方がほとんどわからない) を使用してウィンドウ分割を処理します。同じことを行う必要がある小さな C++ コンソール アプリケーションを開発しています。当然の選択である ncurses を試してみましたが、色の ANSI エスケープ シーケンス (http://ascii-table.com/ansi-escape-sequences.php) をサポートしていません。 ()/exec() 同じ tty 内の 4 つの bash シェル。これは ncurses の簡単な部分ですが、色がなく、ゴミのように見える多くの失敗したエスケープ シーケンスがあります。printf() や std::cout などのメソッドは色で完全に機能しますが、ncurses は独自の関数に依存して適切な位置に保持されるため、この場合は役に立ちません。

エスケープ シーケンスを解析して ncurses に変換し、出力をライブラリのネイティブ属性で色付けすることを提案する前に、これは作業が多すぎるため、(GNU Screen のように) より洗練された方法で処理する必要があることに注意してください。

それで、それを解決する方法のアイデアはありますか?

前もって感謝します

4

1 に答える 1

3

下位プログラムが独自のエスケープ シーケンスを発行することを許可することはできません。そうすると、画面の書式設定が破壊されます。

実際、 GNUscreenは独自の端末をエミュレートしています。つまり、エスケープ シーケンスを解析し、そのロジックを実行し、画面の内部表現を構築し、それを実行中の端末に転送します。それがそれを行う唯一の正気な方法です。残念ながら、それは大変な作業です。

于 2011-06-03T18:29:50.160 に答える