EN JA
curs_terminfo(3X)
curs_terminfo(3X) curs_terminfo(3X)

名称

del_curterm, mvcur, putp, restartterm, set_curterm, setterm, setupterm, tigetflag, tigetnum, tigetstr, tparm, tputs, vid_attr, vid_puts, vidattr, vidputs - terminfo データベースへの curses インタフェース

書式


#include <curses.h>
 

#include <term.h>

int setupterm(char *term, int fildes, int *errret);

 


int setterm(char *term);

 


TERMINAL *set_curterm(TERMINAL *nterm);

 


int del_curterm(TERMINAL *oterm);

 


int restartterm(char *term, int fildes, int *errret);

 


char *tparm(char *str, ...);

 


int tputs(const char *str, int affcnt, int (*putc)(int));

 


int putp(const char *str);

 


int vidputs(chtype attrs, int (*putc)(int));

 


int vidattr(chtype attrs);

 


int vid_puts(attr_t attrs, short pair, void *opts, int (*putc)(char));

 


int vid_attr(attr_t attrs, short pair, void *opts);

 


int mvcur(int oldrow, int oldcol, int newrow, int newcol);

 


int tigetflag(char *capname);

 


int tigetnum(char *capname);

 


char *tigetstr(char *capname);

 


解説

これらのローレベルのルーチンは、プログラミングファンクションキーのようなある端末のケーパビリティを操作するために terminfo データベースを直接取り扱わなければならないプログラムによって呼び出さなければなりません。他のすべての機能性については、 curses ルーチンがより適切で、また、それらを使用することを勧めます。

最初に、 setupterm が呼ばれるべきです。 setupterm は、 initscrnewterm によって自動的に呼ばれることに注意してください。これは、[ terminfo(5) にリストされた] 端末従属変数の集合を定義します。 terminfo 変数 linescolumns は、 setupterm によって、次のように初期化されます:

use_env(FALSE) が呼ばれた場合、 terminfo の中で指定された lines および columns のための値が使用されます。

そうでなければ、環境変数 LINES および COLUMNS が存在する場合、それらの値が使用されます。これらの環境変数が存在せず、プログラムがウィンドウの中で走っている場合、現在のウィンドウサイズが使用されます。そうでなければ、環境変数が存在しない場合、 terminfo データベースの中で指定された lines および columns のために値が使用されます。

ヘッダファイル curses.h および term.h はこれらの文字列、数値およびフラグのための定義を得るために (この順序で) 含まれるべきです。パラメータ化された文字列は、それらを具体化するために tparm を通して渡されるべきです。すべての terminfo 文字列 [ tparm の出力を含んで] は、 tputs または putp で印刷されるべきです。終了する前に tty モードを復旧するために reset_shell_mode を呼んでください [ curs_kernel(3X) 参照]。カーソルアドレシングを使用するプログラムは、開始時に enter_ca_mode を出力するべきであり、終了する前に exit_ca_mode を出力するべきです。

シェルエスケープを望むプログラムは、 reset_shell_mode を呼び、シェルが呼ばれる前に exit_ca_mode を出力するべきです。そして、 enter_ca_mode を出力し、シェルから返った後に reset_prog_mode を呼ぶべきです。

setupterm ルーチンは、 terminfo データベースを読み込み、 terminfo 構造体を初期化します。しかし、 curses によって使用される出力仮想化構造体を設定しません。端末のタイプは文字列 term です。 term が NULL の場合、環境変数 TERM が使用されます。すべての出力は、出力のために初期化されるファイル記述子 fildes に行なわれます。 errret が NULL でない場合、 setupterm は、 OKERR を返し、 errret で指される整数にステータス値を格納します。 errret の中の 1 のステータスと結合された OK の返り値は正常です。 ERR が返される場合は、次の errret を検査してください。

1
端末はハードコピーで、curses アプリケーションのために使用できないことを意味します。
0
端末を見つけることができないか、curses アプリケーションを走らせるためにあまりにもわずかの情報しかない、ジェネリックタイプであることを意味します。
-1
terminfo データベースを見つけることができないことを意味します。

errret が NULL の場合、 setupterm は、エラーが見つかったならエラーメッセージを印刷して終了します。したがって、最も単純な呼び出しは次のとおりです。

 


setupterm((char *)0, 1, (int *)0);

 

これは、すべてデフォルトを使用し、出力を stdout に送ります。

setterm ルーチンは、 setupterm と取り換えられます。次の呼び出し、

 


setupterm(term, 1, (int *)0)

 

は、 setterm(term) と同じ機能を提供します。 setterm ルーチンは、BSD 互換性のためにここに含まれており、新しいプログラムに推薦されません。

set_curterm ルーチンは、 nterm に変数 cur_term を設定し、 nterm からの値を使用するすべての terminfo ブール値、数値および文字列変数を作成します。それは、 cur_term の古い値を返します。

del_curterm ルーチンは、 oterm によって指される空間を解放し、それを将来の使用のために利用可能にします。 otermcur_term と同じである場合、 terminfo のブール値、数値および文字列変数のいずれかの参照はその後、別の setupterm が呼ばれるまで、無効のメモリ位置を参照するかもしれません。

restartterm ルーチンは、前の状態 (例えばコアイメージダンプとして保存されたゲームを再ロードする場合) にメモリを戻した後にそれが呼ばれることを除いて、 setupterminitscr に似ています。それは、ウィンドウおよび入力と出力のオプションがメモリが保存された時と同じであると仮定します。しかし、端末タイプおよびボーレートは異なるかもしれません。従って、それは様々な tty 状態ビットを保存し、 setupterm を呼び出し、そしてそのビットを復旧します。

tparm ルーチンは、パラメータ pi で文字列 str を具体化します。ポインタは適用されたパラメータで str の結果に返されます。

tputs ルーチンは文字列 str にパディング情報を適用し、それを出力します。 str は、terminfo 文字列変数か tparmtgetstr あるいは tgoto からの返り値でなければなりません。適用可能でない場合、 affcnt は影響を受けた行の数、あるいは 1 です。 putc は一度に 1 つ文字が渡される putchar に似たルーチンです。

putp ルーチンは、 tputs(str, 1, putchar) を呼びます。 putp の出力は常に stdout に行き、 setupterm で指定された fildes でないことに注意してください。

vidputs ルーチンは、 curses(3X) にリストされた属性の任意の組み合わせである、ビデオ属性モード attrs で端末に文字列を表示します。文字は、 putchar に似たルーチン putc に渡されます。

vidattr ルーチンはそれを putchar を通して出力することを除いて、 vidputs ルーチンに似ています。

vid_attrvid_puts ルーチンはそれぞれ vidattr と vidputs に対応しています。それは、ビデオ属性と色を表すために 1 組の引数を使用します。すなわち、属性のためのタイプ attr_t の 1 つと color_pair 番号のための short の 1 つです。 vid_attrvid_puts ルーチンは、 WA_ 接頭語がある属性定数を使用するように設計されています。 opts 引数は今後の使用のために予約されています。現在、アプリケーションはその引数のために NULL ポインタを供給しなければなりません。

mvcur ルーチンはローレベルのカーソル動作を提供します。それは、(次の refresh ではなく) 直ちに効果を現わします。

tigetflagtigetnum および tigetstr ルーチンは、 xenl のようにそれらに渡された terminfo capname に対応するケーパビリティの値を返します。

tigetflag ルーチンは、 capname がブールケーパビリティでない場合、値 -1 を返します。またはそれがキャンセルされたか、端末記述に不在の場合、 0 を返します。

tigetnum ルーチンは、 capname が数値ケーパビリティでない場合、値 -2 を返します。またはそれがキャンセルされたか、端末記述に不在の場合、 -1 を返します。

tigetstr ルーチンは、 capname が文字列ケーパビリティでない場合、値 (char *)-1 を返します。またはそれがキャンセルされたか、端末記述に不在の場合、 0 を返します。

各ケーパビリティのための capname は、 terminfo(5) のケーパビリティセクションの中の capname コードとタイトルがつけられたテーブルカラムで与えられます。

 
char *boolnames[], *boolcodes[], *boolfnames[]
 
char *numnames[], *numcodes[], *numfnames[]
 
char *strnames[], *strcodes[], *strfnames[]

それらの NULL で終了する配列は、 terminfo 変数の各々のために、 capnamestermcap コードおよび完全な C の名前を含んでいます。

戻り値

整数を返すルーチンは、失敗すると ERR を返します。前のルーチンの記述で他の注意がない場合、成功して終了すれば、 OK (SVr4 は、" ERR 以外の整数値"とだけ明記されています) を返します。

ポインタを返すルーチンは、エラーの場合、常に NULL を返します。

X/Open は、エラー条件を定義しません。この実行では、

del_curterm
端末パラメータが NULL であるなら、エラーを返します。
putp
tputs を呼び出し、同じエラーコードを返します。
restartterm
setupterm への関連する呼び出しがエラーを返すなら、エラーを返します。
setupterm
十分なメモリを割り付けることができないか、または初期ウィンドウ (stdscr、curscr、newscr) を作成することができないなら、エラーを返します。他のエラー条件は、上に文書化されています。
tputs
文字列パラメータが NULL であるなら、エラーを返します。 I/O を検出しません: X/Open は、 tputs が出力関数 putc の返り値を無視すると記載しています。

setupterm ルーチンは、 setterm の代わりに使用されるべきです。 initscr に含まれる記憶域の割り付けを委託せずに、端末のケーパビリティためにテストしたい場合、それは有用です。

vidattr および vidputs はマクロであるかもしれないことに注意してください。

移植性

関数 setterm は、X/Open に記述されず、移植性がないと見なされます。他のすべての関数は、X/Open に記述されています。

setupterm は、端末名を配列 ttytype にコピーします。これは、X/Open Curses の一部ではありませんが、いくつかのアプリケーションでは、当然と思われています。

System V Release 4 では、 set_curterm は、 int リターンタイプを持っており、 OK または ERR を返します。私たちは、X/Open Curses 動作を実装することに決めました。

System V Release 4 では、 tputs の第 3 引数タイプはタイプ int (*putc)(char) を持っています。

X/Open Curses (Solaris) の少なくとも 1 つの実装は、 tputs から OK/ERR 以外の値を返します。それは、文字列の長さを返して、エラーのチェックを行いません。

X/Open Curses は、可変引数リストではなく、固定の数のパラメータの tparm プロトタイプとなっています。この実装は、可変引数のリストを使用しています。移植性のあるアプリケーションは、形式の後に 9 つのパラメータを用意するべきです。 0 は、この目的のためによいでしょう。

X/Open は、 mvcur を呼び出した後 curses の状態は、実際のターミナルの状態と一致してはならない、そしてアプリケーションは、通常の curses 呼び出しを再開する前に、ウィンドウを touch および refresh するべきと注記しています。 ncurses と System V Release 4 curses の両方は、 initscr あるいは newterm のいずれかで割り付けられた SCREEN データを使用して mvcur を実装しています。したがって、それは、terminfo 関数として文書化されますが、 mvcur は、実際に、はっきりと明記されていない curses 関数です。

X/Open は、古い位置を mvcur に与えなければならないと記述しています。この実装では、呼び出し側は、古い座標に -1 を使用することができます。その場合には、古い位置は未知です。

例えば、 tic -x によって定義されるような、拡張された端末のケーパビリティ名は、このセクションで説明される配列に格納されません。

関連項目

curses(3X), curs_initscr(3X), curs_kernel(3X), curs_termcap(3X), putc(3), terminfo(5)