EN JA
curs_kernel(3X)
curs_kernel(3X) curs_kernel(3X)

名称

def_prog_mode, def_shell_mode, reset_prog_mode, reset_shell_mode, resetty, savetty, getsyx, setsyx, ripoffline, curs_set, napms - 低レベル curses ルーチン

書式

#include <curses.h>
 
int def_prog_mode(void);
 
int def_shell_mode(void);
 
int reset_prog_mode(void);
 
int reset_shell_mode(void);
 
int resetty(void);
 
int savetty(void);
 
void getsyx(int y, int x);
 
void setsyx(int y, int x);
 
int ripoffline(int line, int (*init)(WINDOW *, int));
 
int curs_set(int visibility);
 
int napms(int ms);
 

解説

下記ルーチンは、様々な curses ケーパビリティに低レベルのアクセスを与えます。議題のルーチンは、典型的にライブラリルーチンの内部で使用されています。

def_prog_modedef_shell_mode ルーチンは、 reset_prog_modereset_shell_mode ルーチンによって使用される、"プログラム" ( curses の中で) あるいは "シェル" ( curses の中ではない) 状態として現在の端末モードを保存します。これは、 initscr によって自動的に行われます。 newterm() によって割り付けられた各画面コンテキスト (状況) のためのそのような保存エリアが 1 つあります。

reset_prog_modereset_shell_mode ルーチンは、"プログラム" ( curses の中で) するための端末あるいは "シェル" ( curses の外) 状態を復旧します。これらは、 endwin によっておよび endwin の後に doupdate によって自動的に行われます。したがって、それらは、通常呼び出されません。

resettysavetty ルーチンは、端末のモードの状態を保存し復旧します。 savetty は、バッファの中に現状の状態を保存します。また、 resetty は、 savetty への最後の呼び出しの状態を復旧します。

getsyx ルーチンは、 yx の仮想画面カーソルの現在の座標を返します。 leaveok が現在 TRUE である場合、 -1-1 が返されます。 ripoffline を使用して、ラインが画面のトップから取り除かれた場合、 yx は、これらのラインを含んでいます。したがって、 yx は、 setsyx のための引数としてのみ使用されるべきです。

setsyx ルーチンは、 yx に仮想画面カーソルを設定します。 yx が両方とも -1 である場合、 leaveok が設定されます。 2 つのルーチン getsyx および setsyx は、ライブラリルーチンによって使用されるために設計されています。それらは、プログラムのカーソルの現在の位置を変更したくない、 curses ウィンドウを操作します。ライブラリルーチンは、最初に getsyx を呼び出し、それ自身のウィンドウの操作を行い、そのウィンドウ上で wnoutrefresh を行い、 setsyx を呼び出し、次に、 doupdate を呼ぶでしょう。

ripoffline ルーチンは、 slk_init [ curs_slk(3X) を参照] が画面のサイズを縮小するために使用するのと同じ機能へのアクセスを提供します。 ripoffline は、 initscr または newterm が呼ばれる前に呼ばれなければなりません。 line が正の場合、行 (ライン) は、 stdscr の最上部から取り除かれます。 line が負の場合、行 (ライン) は、最下部から取り除かれます。これが内部の initscr で行なわれた場合、 (ユーザによって供給された) ルーチン init は、 2 つの引数で呼ばれます。割り付けられた 1 行ウィンドウへのウィンドウポインタ、およびウィンドウ中のカラムの数の整数。この初期化ルーチンの内部で、( <curses.h> で定義された) 整数変数 LINES および COLS は、正確なことは保証されません。また、 wrefresh または doupdate は呼ばれてはなりません。初期化ルーチン中に wnoutrefresh を呼び出すことは許されています。

ripoffline は、 initscr または newterm を呼ぶ前に 5 回まで呼ぶことができます。

curs_set ルーチンは、カーソル状態を visibility (可視性) のための非可視、正常、あるいは極めて可視に等しい、それぞれ 01、あるいは 2 に設定します。端末が要求された visibility 可視性をサポートする場合、前の カーソル状態が返されます。そうでなければ、 ERR が返されます。

napms ルーチンは、 ms ミリ秒で sleep するために使用されます。

戻り値

curs_set を除いて、これらのルーチンは、常に OK を返します。

curs_set は、前のカーソル状態を返すか、あるいは、要求された visibility (可視性) がサポートされない場合、 ERR を返します。

X/Open は、エラー条件を何も定義していません。この実装では、

def_prog_mode, def_shell_mode, reset_prog_mode,
reset_shell_mode は、端末が初期化されていなかった、または端末の設定を取得するための I/O 呼び出しが失敗するなら、エラーを返します。
ripoffline
は、はぎとられた (ripped-off) 行の最大数が最大 (NRIPS = 5) を超えるなら、エラーを返します。

getsyx は、マクロであることに注意してください、したがって、変数 yx の前に & は、必要ありません。

古い SVr4 マニュアルページは、 curs_set の返り値が "現在正しくない"と警告しています。この実装は、それを正しくします。しかし、他のどんな場所でも、返り値の正確を頼りにすることは、愚かかもしれません。

ncurses および SVr4 の両方は、 curs_set が通常以外にカーソルを作るために呼ばれた場合、 endwin の中で curs_set を呼ぶでしょう。すなわち、不可視か、非常に可視のどちらか。 ncurses がそれを復旧するために初期のカーソル状態を決定する方法はありません。

移植性

関数 setsyxgetsyx は、XSI Curses standard, Issue 4 に記述されていません。他のすべての関数は、XSI Curses に記述されています。

SVr4 文書は、 setsyx および getsyx 返りタイプ int であると記述しています。それらが返り値のための文書化された意味のないマクロであるので、これは、誤解を招きやすい。

関連項目

curses(3X), curs_initscr(3X), curs_outopts(3X), curs_refresh(3X), curs_scr_dump(3X), curs_slk(3X)