resizeterm(3x) resizeterm(3x)
is_term_resized, resize_term, resizeterm - change the curses terminal size - curses 端末サイズの変更
#include <curses.h> bool is_term_resized(int lines, int columns); int resize_term(int lines, int columns); int resizeterm(int lines, int columns);
This is an extension to the curses library. It provides callers with a hook into the ncurses data to resize win- dows, primarily for use by programs running in an X Window terminal (e.g., xterm). これは curses ライブラリの拡張です。 主に X ウインドウ端末 (例えば xterm ) 上で実行される プログラム用に、ウインドウのサイズを変更するための ncurses のデータへのフックを提供します。
The function resizeterm resizes the standard and current windows to the specified dimensions, and adjusts other bookkeeping data used by the ncurses library that record the window dimensions such as the LINES and COLS vari- ables. resizeterm 関数は、標準ウインドウと現在ウインドウを 指定の寸法に変更し、 ncurses ライブラリが使う、例えば 変数 LINES と COLS のようにウインドウの寸法を記録している 他の保有データを調整します。
Most of the work is done by the inner function resize_term. The outer function resizeterm adds bookkeep- ing for the SIGWINCH handler. When resizing the windows, resize_term blank-fills the areas that are extended. The calling application should fill in these areas with appro- priate data. The resize_term function attempts to resize all windows. However, due to the calling convention of pads, it is not possible to resize these without addi- tional interaction with the application. 大部分の作業は内部関数 resize_term が行います。 外側の関数 resizeterm は SIGWINCH ハンドラのための 記録作業を追加します。 ウインドウのサイズを変更するとき、 resize_term は 拡張した領域を空白で埋めます。 呼び出し側のアプリケーションはこれらの領域を適切なデータで 満たしてください。 resize_term 関数はすべてのウインドウのサイズを 変更しようとします。 しかし、パッドの呼出規約のため、アプリケーションとの追加的な 相互作用なしにこれらのサイズを変更することはできません。
A support function is_term_resized is provided so that applications can check if the resize_term function would modify the window structures. It returns TRUE if the win- dows would be modified, and FALSE otherwise. resize_term 関数がウインドウ構造(体)を変更するかどうかを 調べるために、補助関数 is_term_resized が提供されます。 ウインドウが変更されるなら TRUE を、そうでなければ FALSE を返します。
Except as noted, these functions return the integer ERR upon failure and OK on success. They will fail if either of the dimensions are less than or equal to zero, or if an error occurs while (re)allocating memory for the windows. 特記がない限り、これらの関数は失敗のとき整数 ERR を、 成功のとき OK を返します。 これらの関数は、寸法がゼロまたはそれ未満のとき、または ウインドウのメモリを(再)割り当てする間にエラーが発生したときに 失敗します。
While these functions are intended to be used to support a signal handler (i.e., for SIGWINCH), care should be taken to avoid invoking them in a context where malloc or real- loc may have been interrupted, since it uses those func- tions. これらの関数をシグナルハンドラのサポートに (つまり SIGWINCH のために) 使おうとするときは、 malloc または realloc が割り込まれるかもしれない状況で 呼ばないように注意を払う必要があります。 それらの関数を使うからです。 If ncurses is configured to supply its own SIGWINCH han- dler, ncurses が自身の SIGWINCH ハンドラを提供するように 構成されている場合には、 o on receipt of a SIGWINCH, the handler sets a flag o SIGWINCH を受け取ると、ハンドラはフラグをセットし、 o which is tested in wgetch and doupdate, o フラグは wgetch と doupdate でテストされ、 o in turn, calling the resizeterm function, o 次に、 resizeterm 関数を呼び出し、 o which ungetch's a KEY_RESIZE which will be read on the next call to wgetch. o それは KEY_RESIZE を ungetch し、次の wgetch 呼び出しで 読み出されるようにします。 The KEY_RESIZE alerts an application that the screen size has changed, and that it should repaint special features such as pads that cannot be done automati- cally. KEY_RESIZE は画面サイズが変更され、パッドのように 自動的に再描画されない特別な部分を描画し直さなくては ならないことをアプリケーションに警告します。 Calling resizeterm or resize_term directly from a sig- nal handler is unsafe. This indirect method is used to provide a safe way to resize the ncurses data structures. シグナルハンドラから resizeterm または resize_term を 直接呼び出すのは安全ではありません。 安全に ncurses のデータ構造のサイズを変更する方法を 与えるために、この間接的な方法が使われます。 If the environment variables LINES or COLUMNS are set, this overrides the library's use of the window size obtained from the operating system. Thus, even if a SIG- WINCH is received, no screen size change may be recorded. 環境変数 LINES または COLUMNS が設定されている場合、 ライブラリがオペレーティング・システムから得たウインドウの サイズを使わないようにします。 したがって、 SIGWINCH を受け取っても、画面サイズの変更は 記録されないことがあります。
It is possible to resize the screen with SVr4 curses, by SVr4 curses では次の方法で画面サイズの変更ができます。 o exiting curses with endwin(3x) and o endwin(3x) で curses を終了し o resuming using refresh(3x). o refresh(3x) を使って再開します。 (訳注: 原文のリンク先は両方とも間違っています) Doing that clears the screen and is visually distracting. これは画面をクリアし、壊れたように見えます。 This extension of ncurses was introduced in mid-1995. It was adopted in NetBSD curses (2001) and PDCurses (2003). この ncurses 拡張機能は 1995年の中頃に導入されました。 NetBSD curses (2001年) と PDCurses (2003年) にも 採用されました。
curs_getch(3x), curs_variables(3x), wresize(3x).
Thomas Dickey (from an equivalent function written in 1988 for BSD curses). Thomas Dickey (1988年に BSD curses 用に書かれた 同等の関数から) resizeterm(3x)