curs_initscr 3x

curs_initscr(3x)                                       curs_initscr(3x)




NAME 名前

       initscr, newterm, endwin, isendwin, set_term, delscreen -
       curses screen initialization and manipulation routines
        - curses 画面の初期化と操作

SYNOPSIS 書式

       #include <curses.h>

       WINDOW *initscr(void);
       int endwin(void);
       bool isendwin(void);
       SCREEN *newterm(char *type, FILE *outfd, FILE *infd);
       SCREEN *set_term(SCREEN *new);
       void delscreen(SCREEN* sp);


DESCRIPTION 説明


initscr

       initscr is normally the first curses routine to call  when
       initializing  a program.  A few special routines sometimes
       need to be called before it; these are  slk_init,  filter,
       ripoffline,  use_env.  For multiple-terminal applications,
       newterm may be called before initscr.
        initscr は通常、プログラムを初期化するとき最初に呼び出す 
       curses ルーチンです。
        時々その前に呼び出す必要のある少数の特別なルーチンには 
       slk_init, filter, ripoffline, use_env があります。
        複数の端末を使うアプリケーションは、 initscr の前に 
       newterm を呼び出す場合があります。

       The initscr code determines the terminal type and initial-
       izes  all curses data structures.  initscr also causes the
       first call to refresh to clear the screen.  If errors  oc-
       cur,  initscr writes an appropriate error message to stan-
       dard error and exits; otherwise, a pointer is returned  to
       stdscr.
        initscr のコードは端末のタイプを決定し、 curses の
       データ構造のすべてを初期化します。
        initscr はまた、画面をクリアするために最初の 
       refresh 呼び出しを行います。
        エラーが発生した場合、 initscr は適切なエラーメッセージを
       標準エラーに書き出して終了します。
       そうでない場合は、 stdscr へのポインタを返します。


newterm

       A  program  that  outputs to more than one terminal should
       use the newterm  routine  for  each  terminal  instead  of
       initscr.  A program that needs to inspect capabilities, so
       it can continue to run in a line-oriented mode if the ter-
       minal cannot support a screen-oriented program, would also
       use newterm.  The routine newterm should  be  called  once
       for each terminal.  It returns a variable of type SCREEN *
       which should be saved as a  reference  to  that  terminal.
       newterm's arguments are
        複数の端末へ出力するプログラムは、 initscr の代わりに
       端末ごとに newterm ルーチンを呼び出してください。
        端末が画面指向プログラムをサポートしない場合に
       行指向モードで実行し続けることができるように機能項目を
       検査する必要のあるプログラムも newterm を使うでしょう。
        newterm は端末ごとに一度ずつ呼び出さなければなりません。
        newterm はその端末への参照として保存されるべき 
       SCREEN * 型の変数を返します。(訳注: 変数でなく値)
        newterm の引数は

       o   the type of the terminal to be used in place of $TERM,
       o   $TERM (=環境変数 TERM ) の代わりに使われる端末のタイプ type

       o   a file pointer for output to the terminal, and
       o   端末に出力するためのファイルポインタ

       o   another file pointer for input from the terminal
       o   端末から入力するための別のファイルポインタ

       If the type parameter is NULL, $TERM will be used.
       type 引数が NULL の場合、 $TERM が使われます。


endwin

       The  program must also call endwin for each terminal being
       used before exiting from curses.   If  newterm  is  called
       more  than  once for the same terminal, the first terminal
       referred to must be the  last  one  for  which  endwin  is
       called.
        プログラムはまた、 curses を終了する前に使った端末
       それぞれに対して endwin を呼び出さなければなりません。
        もし同じ端末に対して newterm を 2 回以上呼び出した場合、
       最初に参照した端末に対して最後の endwin を呼び出さなければ
       なりません。

       A  program should always call endwin before exiting or es-
       caping from curses mode temporarily.  This routine
        プログラムは curses モードを終了するとき、
       または一時的に抜ける前にはいつも endwin を呼び出さなければ
       なりません。このルーチンは

       o   restores tty modes,
       o   tty モードを復元し、

       o   moves the cursor to the lower left-hand corner of  the
           screen and
       o   カーソルを画面の左下隅に移動し、

       o   resets the terminal into the proper non-visual mode.
       o   端末を適切なノンビジュアルモードに戻します。

       Calling refresh or doupdate after a temporary escape caus-
       es the program to resume visual mode.
        一時的に抜けたあとで refreshdoupdate を呼び出すと、
       プログラムはビジュアルモードに戻ります。


isendwin

       The isendwin routine  returns  TRUE  if  endwin  has  been
       called without any subsequent calls to wrefresh, and FALSE
       otherwise.
        isendwin ルーチンは endwin が呼び出された後、 wrefresh が
       呼び出されていない場合に TRUE を、そうでない場合に FALSE を
       返します。


set_term

       The set_term routine is used to switch  between  different
       terminals.   The screen reference new becomes the new cur-
       rent terminal.  The previous terminal is returned  by  the
       routine.   This  is  the  only  routine  which manipulates
       SCREEN pointers; all other routines affect only  the  cur-
       rent terminal.
        set_term ルーチンは異なる端末間の切り替えに使います。
        端末参照 new が新しい現在端末になります。
        このルーチンは直前の端末を返します。
        set_termSCREEN ポインタを操作する唯一のルーチンです。
       他のすべてのルーチンは、現在端末にしか作用しません。


delscreen

       The  delscreen  routine  frees storage associated with the
       SCREEN data structure.  The endwin  routine  does  not  do
       this, so delscreen should be called after endwin if a par-
       ticular SCREEN is no longer needed.
        delscreen ルーチンは SCREEN データ構造に関連する記憶領域を
       開放します。
        endwin ルーチンはこれをしないので、特定の SCREEN が必要なく
       なったなら endwin の後で delscreen を呼び出してください。


RETURN VALUE 戻り値

       endwin returns the integer ERR upon failure  and  OK  upon
       successful completion.
        endwin は失敗の場合に整数 ERR を、正常終了の場合に OK を
       返します。

       Routines that return pointers always return NULL on error.
        ポインタを返すルーチンは、エラーの場合つねに NULL を
       返します。

       X/Open  defines  no error conditions.  In this implementa-
       tion
        X/Open はエラーの条件を何も定義していません。この実装では

       o   endwin returns an error if the terminal was  not  ini-
           tialized.
       o   endwin は端末が初期化されていない場合にエラーを返します。

       o   newterm returns an error if it cannot allocate the da-
           ta structures for the screen,  or  for  the  top-level
           windows  within  the  screen, i.e., curscr, newscr, or
           stdscr.
       o   newterm は画面、または画面内のトップレベル・ウインドウ 
           curscr, newscr, stdscr に対するデータ構造の領域を
           確保できなかった場合にエラーを返します。

       o   set_term returns no error.
       o   set_term はエラーを返すことはありません。


NOTES 注意

       Note that initscr and newterm may be macros.
        initscrnewterm はマクロであるかもしれないことに
       注意してください。


PORTABILITY 移植性

       These functions were described in the XSI Curses standard,
       Issue 4.  As of 2015, the current document is X/Open Curs-
       es, Issue 7.
        これらの関数は XSI Curses standard, Issue 4 に記載されて
       います。
        2015 年現在の文書は X/Open Curses, Issue 7 です。


Differences 相違点

       X/Open specifies that portable applications must not  call
       initscr more than once:
        X/Open はポータブル・アプリケーションは initscr を 
       2 回以上呼び出してはならないと指定しています。

       o   The  portable  way  to use initscr is once only, using
           refresh (see curs_refresh(3x)) to restore  the  screen
           after endwin.
       o   endwin の後で画面を復元するには refresh を使うので、
           ポータブルな initscr の使い方は 1 回のみです。
           ( curs_refresh(3x) 参照)

       o   This implementation allows using initscr after endwin.
       o   この実装では endwin の後で initscr を使うことを
           許しています。

       Old versions of curses, e.g., BSD 4.4, may have returned a
       null pointer from  initscr  when  an  error  is  detected,
       rather  than  exiting.   It is safe but redundant to check
       the return value of initscr in XSI Curses.
        curses の古いバージョン、例えば BSD 4.4 では、エラーが
       検出されたとき、 initscr は終了せずにヌルポインタを返します。
        XSI Curses で initscr の戻り値を検査するのは安全ですが
       冗長です。


Unset TERM Variable 環境変数 TERM の欠如

       If the TERM variable is missing or empty, initscr uses the
       value  "unknown", which normally corresponds to a terminal
       entry with the generic (gn) capability.   Generic  entries
       are detected by setupterm (see curs_terminfo(3x)) and can-
       not be used for full-screen operation.  Other  implementa-
       tions  may handle a missing/empty TERM variable different-
       ly.
        変数 TERM が見つからないか空の場合、 initscr は、通常 
       generic (gn) 機能項目を持つ端末項目に対応する "unknown" 値を
       使います。
        収録項目 generic は setupterm で検出され 
       ( curs_terminfo(3x) 参照) 、全画面動作では使われません。
        他の実装では変数 TERM が見つからないか空の場合の扱いが
       異なることがあります。


Signal Handlers シグナルハンドラ

       Quoting from X/Open Curses, section 3.1.1:
        以下は X/Open Curses, section 3.1.1 から引用。

            Curses implementations may provide for  special  han-
            dling  of  the SIGINT, SIGQUIT and SIGTSTP signals if
            their disposition is SIG_DFL at the time initscr() is
            called ...
             initscr() が呼び出されたときに SIGINT, SIGQUIT, 
            SIGTSTP シグナルの処理方法 (disposition) が 
            SIG_DFL の場合、 Curses の実装によってはこれらシグナルの
            特別な取り扱いを与えることがある。…

            Any  special handling for these signals may remain in
            effect for the life  of  the  process  or  until  the
            process changes the disposition of the signal.
             これらシグナルの特別な取り扱いは、実際上
            プロセスの寿命まで、またはプロセスがシグナルの処理方法を
            変更するまで続くことがある。

            None  of the Curses functions are required to be safe
            with respect to signals ...
             どの Curses 関数もシグナルに関して安全であることを
            求められない…

       This implementation  establishes  signal  handlers  during
       initialization,  e.g.,  initscr  or newterm.  Applications
       which must handle these signals should set up  the  corre-
       sponding handlers after initializing the library:
        この実装は、例えば initscr または newterm による初期化の
       間にシグナルハンドラを設定します。
        これらのシグナルを扱わなければならないアプリケーションは
       ライブラリの初期化後に対応するハンドラを準備してください。

       SIGINT
            The  handler  attempts to cleanup the screen on exit.
            Although it usually works as expected, there are lim-
            itations:
            ハンドラは終了時に画面を一掃しようとします。
            通常は期待通りに動作しますが、いくつかの制限があります。

            o   Walking the SCREEN list is unsafe, since all list
                management is done without any signal blocking.
            o   SCREEN リストをたどることは安全ではありません。
                すべてのリスト処理はどのシグナルもブロックせずに
                行われるからです。

            o   On  systems  which  have  REENTRANT  turned   on,
                set_term  uses  functions which could deadlock or
                misbehave in other ways.
            o   REENTRANT を持つシステムを起動する際、 set_term は
                デッドロックその他の不都合を引き起こすかもしれない
                関数を使います。

            o   endwin calls other functions, many of  which  use
                stdio or other library functions which are clear-
                ly unsafe.
            o   endwin は他の関数を呼び出し、その多くは 
                stdio その他の明らかに安全でないライブラリ関数を
                使います。

       SIGTERM
            This uses the same handler as SIGINT, with  the  same
            limitations.   It  is not mentioned in X/Open Curses,
            but is more suitable for this  purpose  than  SIGQUIT
            (which is used in debugging).
            SIGINT と同じハンドラを使い、同じ制限があります。
            X/Open Curses では考慮されていませんが、 (デバッグに
            使われる) SIGQUIT よりもこの用途により向いています。

       SIGTSTP
            This  handles  the  stop signal, used in job control.
            When resuming the process, this  implementation  dis-
            cards    pending    input    with   flushinput   (see
            curs_util(3x)), and repaints the screen assuming that
            it  has been completely altered.  It also updates the
            saved  terminal  modes   with   def_shell_mode   (see
            curs_kernel(3x)).
            ジョブ制御で使われる stop シグナルを扱います。
            プロセスを再開するとき、この実装は待機中の入力を 
            flushinput で捨て ( curs_util(3x) 参照) 、
            画面が完全に変更されたものとして再描画します。
            (訳注: flushinput ではなく flushinp )
            また、 def_shell_mode でセーブした端末モードを
            更新します。 ( curs_kernel(3x) 参照)
            

       SIGWINCH
            This  handles the window-size changes which were ini-
            tially ignored in the standardization  efforts.   The
            handler  sets a (signal-safe) variable which is later
            tested in wgetch (see curs_getch(3x)).  If keypad has
            been enabled for the corresponding window, wgetch re-
            turns the key symbol KEY_RESIZE.  At the  same  time,
            wgetch calls resizeterm to adjust the standard screen
            stdscr, and update other data such as LINES and COLS.
            標準化の努力の中で当初は無視されていた、ウインドウの
            サイズ変更を扱います。
            このハンドラは、後に wgetch でテストされる 
            (シグナル安全な) 変数をセットします。
            ( curs_getch(3x) 参照)
            対応するウインドウで keypad が有効になっていれば、 
            wgetch はキー識別子 KEY_RESIZE を返します。
            同時に wgetchresizeterm を呼び出して
            標準画面 stdscr を調整し、 LINESCOLS のような
            他のデータを更新します。
            (訳注: resizeterm(3x) 参照)


SEE ALSO 関連項目

       curses(3x),   curs_kernel(3x),   curs_refresh(3x),
       curs_slk(3x),  curs_terminfo(3x),  curs_util(3x), 
       curs_variables(3x).



                                                       curs_initscr(3x)