EN JA
curs_get_wch(3X)
curs_get_wch(3X) curs_get_wch(3X)

名称

get_wch, wget_wch, mvget_wch, mvwget_wch, unget_wch - curses 端末キーボードからワイド文字を取得する (または、押し戻す)

書式

#include <curses.h>
 
int get_wch(wint_t * wch );
 
int wget_wch(WINDOW * win , wint_t * wch );
 
int mvget_wch(int y , int x , wint_t * wch );
 
int mvwget_wch(WINDOW * win , int y , int x , wint_t * wch );
 
int unget_wch(const wchar_t wch );

解説

get_wch, wget_wch, mvget_wchmvwget_wch 関数は、現在の、または、指定されたウィンドウに関連している端末から文字を読み込みます。遅延がない (no-delay) モードで、入力を待たないなら、値 ERR が返されます。遅延 (delay) モードで、プログラムは、システムがプログラムにテキストを渡すまで、待ちます。 cbreak の設定によって、これは、1 つの文字 (cbreak モード) の後、または最初の改行 (nocbreak モード) の後です。半遅延 (half-delay) モードで、プログラムは、ユーザが文字をタイプするか、または指定されたタイムアウト間隔は経過するまで待ちます。

noecho が設定されていないなら、これらのルーチンは指定されたウィンドウに文字をエコーします。

ウィンドウがパッドでなく、最後に wrefresh を呼び出して以来、移動されるか、または変更されているなら、別の文字が読み込まれる前に wrefresh は呼び出されます。

keypad が有効にされているなら、これらの関数は、 wch によって指されたオブジェクトを <curses.h> で定義されている対応する KEY_ 値に設定することによって、ファンクションキーを押すことにも対処し、 KEY_CODE_YES を返します。 (エスケープ文字のような) ファンクションキーの始まりかもしれない文字を受け取るなら、curses はタイマを設定します。シーケンスの残りが指定された時間以内に到着するなら、 curses は文字を渡します。そうでなければ、 curses はファンクションキーの値を返します。こういう訳で、多くの端末は、ユーザが ESC キーを押す時間とエスケープがプログラムに返される時間の間に遅延が起こります。

unget_wch 関数は、ワイド文字 wch を入力キューの先頭にプッシュバックするので、ワイド文字は、 get_wch への次の呼び出しによって返されます。 1 文字のプッシュバックは、保証されます。プログラムが、介在する get_wch への呼び出しなしであまりに多くの回数 unget_wch を呼び出すなら、その操作は失敗するかもしれません。

ヘッダファイル <curses.h> は、自動的に、ヘッダファイル <stdio.h> をインクルードしています。

アプリケーション自体で ESC キーを単一文字 (single-character) 関数として定義するべきではありません。

get_wch, wget_wch, mvget_wch または mvwget_wch を使用するとき、アプリケーションは、同時に nocbreak モードと echo モードを使用するべきではありません。各文字がタイプされるとき、tty ドライバの状態によって、プログラムは望ましくない結果を生むかもしれません。

wget_wchunget_wch を除いて、すべての関数は、マクロであるかもしれないことに注意してください。

戻り値

get_wch, wget_wch, mvget_wchmvwget_wch 関数が、成功してファンクションキーを押すことを報告するとき、それらは KEY_CODE_YES を返します。成功してワイド文字を報告するとき、それらは OK を返します。そうでなければ、それらは ERR を返します。

成功して終了すれば、 unget_wchOK を返します。そうでなければ、関数は、 ERR を返します。

関連項目

curses(3X), curs_getch(3X), curs_ins_wch(3X), curs_inopts(3X), curs_move(3X), curs_refresh(3X)