curs_getstr(3x) curs_getstr(3x)
getstr, getnstr, wgetstr, wgetnstr, mvgetstr, mvgetnstr, mvwgetstr, mvwgetnstr - curses 端末キーボードから文字列を受け取る
#include <curses.h> int getstr(char *str); int getnstr(char *str, int n); int wgetstr(WINDOW *win, char *str); int wgetnstr(WINDOW *win, char *str, int n); int mvgetstr(int y, int x, char *str); int mvwgetstr(WINDOW *win, int y, int x, char *str); int mvgetnstr(int y, int x, char *str, int n); int mvwgetnstr(WINDOW *, int y, int x, char *str, int n);
getstr 関数は、改行文字または復帰文字を受け取るまで、 繰り返して getch を呼び出すことと等価です。(終端の文字は 結果の文字列に含まれません。) 結果の値は文字列ポインタ str の指す領域に格納されます。 wgetnstr は最大 n 文字だけを読むので、入力バッファの オーバーフローを防ぎます。 (終端の改行か復帰を除いて) それ以上の文字を 入力しようとすると警報音 (ビープ音) が発生します。 ファンクションキーは警報音を発生させて無視されます。 getnstr 関数は、デフォルト・ウインドウ stdscr から 読み込みます。 ユーザの (端末で指定された) 消去文字 (erase) と 行削除文字 (kill) は解釈されます。 ウインドウでキーパッド・モードが有効な場合、KEY_LEFT と KEY_BACKSPACE はともにユーザの行削除文字と同じと みなされます。 入力文字は、echo が現在有効な場合にのみエコーされます。 その場合、バックスペースは前の文字の削除としてエコーされます (一般的に左への移動)。
すべてのルーチンは失敗のとき整数 ERR を、正常終了のとき OK (SVr4 は「ERR 以外の整数値」としか指定していません) を返します。 X/Open はエラーの条件を何も定義していません。 この実装では、これらの関数はウインドウ・ポインタが ヌルのとき、または何もデータがないままタイムアウトした場合に、 エラーを返します。 この実装はさらに拡張機能も提供しています。 SIGWINCH が関数に割り込むと、OK や ERR でなく KEY_RESIZE を 返します。 mv で始まる関数は、最初に wmove を使用してカーソルを移動し、 位置がウインドウの外だった場合、またはウインドウ・ポインタが ヌルの場合にエラーを返します。
getstr, mvgetstr, mvwgetstr はマクロであるかもしれないことに 注意してください。 訳注: getnstr, wgetstr, mvgetnstr, mvwgetnstr もマクロです。
これらの関数は XSI Curses standard, Issue 4 に記載されて います。 これらの関数は 1 バイト文字しか読みません。 そこ (XSI) ではエラーの条件を何も定義していません。 この実装では、ウインドウ・ポインタがヌルのとき、または 低レベルの wgetch 呼び出しが ERR を返したときに ERR を 返します。 SVr3 と初期の SVr4 の curses の実装は、ファンクションキーを 拒絶しませんでした。SVr4.0 の説明書は、詳細には触れずに、 「特殊キー」(ファンクションキー、home キー、clear キーなど) を 「解釈する」と主張していました。 それは嘘でした。 実際には、それらの実装で文字列に追加される「文字」の値は 予測可能でしたが、有用ではありません (実際にはキーの KEY_ 値の 下位 8 ビットなので)。 関数 getnstr, mvgetnstr, mvwgetnstr は SVr4 に 存在しましたが、明記されていませんでした。
curses(3x), curs_getch(3x), curs_variables(3x). 訳注: echo, keypad は curs_inopts(3x) を参照。 シグナル SIGWINCH は curs_initscr(3x) 等を参照。 ワイド文字を扱う対応する関数群は curs_get_wstr(3x) で 説明しています。 curs_getstr(3x)