2011-09-26 11 views
12

ncursesのようなコマンドラインGUIの作成を支援するライブラリがいくつかあります。どうすればいいですか? al。作業?

簡単に言えば、どのように機能しますか?

私が最初に考えたのは、ncursesがすべてのキーボード入力を傍受し、各「フレーム」を線ごとに正常に出力することでした。しかし、より詳細な検査では、新しいフレームがそれぞれ前のフレームを上書きすることが明らかになります。すでに出力されている行はどのように変更されますか?さらに、それはどのように色を扱うのですか?

EDIT:vimemacsのような「ファンシー」インターフェースを持つものには同じ質問が適用されます。

答えて

14

テキスト端末は、各端末の種類が異なると、コマンド・シーケンスの独自のセットを持っているなどのライン

を削除し、文字を挿入、画面上の特定の位置にカーソルを移動のようなことを行うコマンドシーケンスを持っています。 ncursesにはデータベースがあります(詳細については、terminfoを参照してください)。

内部的にncursesは、現在の保留中の変更が適用された後の現在の内容と画面の外観を2画面表示します。プログラムが画面の再描画を要求すると、ncursesは画面を更新して目的のビューに見えるように効率的な方法を計算します。正確な文字/コマンドシーケンスの出力は、使用されている端末タイプによって異なります。

3

curses(とncursesもそうだと思いますが)は、画面上でカーソルを動かして動作します。このようなことを行う制御シーケンスがあります。コードをもう一度見てみると、それらが表示されます。これらのシーケンスはASCII制御文字ではなく、(umm ...)ESCで始まる文字列です。より高いレベルの説明についてはhereをご覧ください。

+0

ほとんどの端末は、[ANSIエスケープシーケンス](https://en.wikipedia.org/wiki/ANSI_escape_code)をサポートしています(一部)。それらは '\ 033 [' \ 033は本当にESCです。 'echo -e'を使って自分の端末で遊んで、いくつかを印刷して何が起こるかを見ることができます。端末を目に見えないように設定していた場合、 'reset'(盲目的に入力してEnterを押します)はあなたの友人になります...) – 5gon12eder

関連する問題