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)