名前 | 形式 | 機能説明 | 戻り値 | 属性 | 関連項目 | 注意事項
cc [ flag ... ] file ... -lcurses [ library .. ] #include <curses.h>int getwch(void);
getwch()、wgetwch()、mvgetwch()、mvwgetwch() の各ルーチンは、ウィンドウに対応づけられた端末から EUC 文字 1 文字を読み込み、それを wchar_t 文字に転送し、wchar_t 文字を返します。遅延無しモードでは、入力待ちのものがなければ ERR 値が返されます。遅延モードでは、システムからテキストが渡されるまでプログラムは待ち状態に置かれます。待つタイミングは cbreak の設定により異なり、1 つの文字の後 (cbreak モード) または最初の改行の後 (nocbreak モード) となります。また半遅延モードでは、何らかの文字が入力されるまであるいは指定されたタイムアウト値に達するまで待ちます。noecho が設定されていなければ、読み込まれた文字は指定されたウィンドウ中にエコーされます。
ウィンドウがパッドでなく、最後に wrefresh(3CURSES) が呼び出されてからウィンドウの移動または変更が行われていれば、次の文字を読み込む前に wrefresh が呼び出されます。
keypad が TRUE の場合、ファンクションキーが押されると実際の文字の代わりにファンクションキーのトークンが返されます。使用可能なファンクションキーは KEY_ で始まる名前で、0401 で始まる整数とともに <curses.h> 中に定義されています。ファンクションキーの先頭文字でありうる文字 (たとえばエスケープ文字) を受け取ると、curses(3CURSES) はタイマをセットします。指定された時間内にそのシーケンスの残りの文字が到着しなければ、受け取った 1 文字だけを渡します。時間内に残りの文字を受け取れば、ファンクションキーの値を返します。このため、エスケープ文字を押したのにそれがプログラムに渡されるまでに時間がかかった、 というケースを多くの端末が経験することになります。
ungetwch() ルーチンは、次に wgetwch() を呼び出したときに返される入力キュー中に wch 文字を戻します。
keypad が有効であれば、以下の表にリストされているファンクションキー (いずれも <curses.h> 中に定義) が getwch() により返されます。なお端末によっては、これらすべてのファンクションキーがサポートされるとは限りません。サポートされないケースは、そのキーが押されたときにその端末転送するコードが一意ではない場合、およびそのキーの定義が terminfo(4) データべース中に存在しない場合です。
名前 | キー名 |
---|---|
KEY_BREAK | Break キー |
KEY_DOWN | 4 つの矢印キー . . . |
KEY_UP | |
KEY_LEFT | |
KEY_RIGHT | |
KEY_HOME | Home キー (左上向き矢印) |
KEY_BACKSPACE | バックスペース |
KEY_F0 | ファンクションキー (64 個分の空白が予約されている) |
KEY_F(n) | For 0 ≤ n ≤ 63 |
KEY_DL | 行削除 |
KEY_IL | 行挿入 |
KEY_DC | 文字削除 |
KEY_IC | 文字挿入、または挿入モードに入る |
KEY_EIC | 挿入モードを抜ける |
KEY_CLEAR | 画面クリア |
KEY_EOS | 画面の終わりまでクリア |
KEY_EOL | 行の終わりまでクリア |
KEY_SF | 上方へ 1 行スクロール |
KEY_SR | 下方へ 1 行スクロール (リバース) |
KEY_NPAGE | 次ページ |
KEY_PPAGE | 前ページ |
KEY_STAB | タブを設定 |
KEY_CTAB | タブをクリア |
KEY_CATAB | 全タブをクリア |
KEY_ENTER | 入力または送信 |
KEY_SRESET | ソフト (部分的) リセット |
KEY_RESET | リセットまたはハードリセット |
KEY_PRINT | 印刷またはコピー |
KEY_LL |
下部のホーム位置 (左下) へ。 キーパッドの割り当ては次のとおり。 A1 up A3 left B2 right C1 down C3 |
KEY_A1 | キーパッドの左上 |
KEY_A3 | キーパッドの右上 |
KEY_B2 | キーパッドの中央 |
KEY_C1 | キーパッドの左下 |
KEY_C3 | キーパッドの右下 |
KEY_BTAB | バックタブキー |
KEY_BEG | 開始 (Beginning) キー |
KEY_CANCEL | キャンセルキー |
KEY_CLOSE | クローズキー |
KEY_COMMAND | コマンド (cmd) キー |
KEY_COPY | コピーキー |
KEY_CREATE | 作成キー |
KEY_END | 終了キー |
KEY_EXIT | Exit キー |
KEY_FIND | 検索キー |
KEY_HELP | ヘルプキー |
KEY_MARK | マークキー |
KEY_MESSAGE | メッセージキー |
KEY_MOVE | 移動キー |
KEY_NEXT | 次オブジェクトキー |
KEY_OPEN | オープンキー |
KEY_OPTIONS | オプションキー |
KEY_PREVIOUS | 前オブジェクトキー |
KEY_REDO | 再実行キー |
KEY_REFERENCE | 参照キー |
KEY_REFRESH | リフレッシュキー |
KEY_REPLACE | 置換キー |
KEY_RESTART | 再スタートキー |
KEY_RESUME | 再開キー |
KEY_SAVE | セーブキー |
KEY_SBEG | シフト付き開始キー |
KEY_SCANCEL | シフト付きキャンセルキー |
KEY_SCOMMAND | シフト付きコマンドキー |
KEY_SCOPY | シフト付きコピーキー |
KEY_SCREATE | シフト付き作成キー |
KEY_SDC | シフト付き文字削除キー |
KEY_SDL | シフト付き行削除キー |
KEY_SELECT | 選択キー |
KEY_SEND | シフト付き送信キー |
KEY_SEOL | シフト付き行クリアキー |
KEY_SEXIT | シフト付き Exit キー |
KEY_SFIND | シフト付き検索キー |
KEY_SHELP | シフト付きヘルプキー |
KEY_SHOME | シフト付き Home キー |
KEY_SIC | シフト付き入力キー |
KEY_SLEFT | シフト付き左向き矢印キー |
KEY_SMESSAGE | シフト付きメッセージキー |
KEY_SMOVE | シフト付き移動キー |
KEY_SNEXT | シフト付き次オブジェクトキー |
KEY_SOPTIONS | シフト付きオプションキー |
KEY_SPREVIOUS | シフト付き前オブジェクトキー |
KEY_SPRINT | シフト付き印刷キー |
KEY_SREDO | シフト付き再実行キー |
KEY_SREPLACE | シフト付き置換キー |
KEY_SRIGHT | シフト付き右向き矢印キー |
KEY_SRSUME | シフト付き再開キー |
KEY_SSAVE | シフト付きセーブキー |
KEY_SSUSPEND | シフト付き中断キー |
KEY_SUNDO | シフト付き取消キー |
KEY_SUSPEND | 中断キー |
KEY_UNDO | 取消キー |
上記ルーチンはすべて、エラーが発生すれば整数 ERR を返し、正常に終了すれば ERR 以外の整数値を返します。
次の属性については attributes(5) のマニュアルページを参照してください。
属性タイプ | 属性値 |
---|---|
MT レベル | Unsafe |
curses(3CURSES), curs_inopts(3CURSES), curs_move(3CURSES), wrefresh(3CURSES), terminfo(4), attributes(5)
ヘッダーファイル <curses.h> は自動的に <stdio.h>、<unctrl.h>、および <widec.h> ヘッダーファイルを含みます。
単一文字関数に対してエスケープ文字を使うことはできません。
getwch()、wgetwch()、mvgetwch()、mvwgetwch() のいずれかの関数を用いる際、nocbreak モードと echo モードを同時に使用することはできません。個々の文字が入力されたときの tty ドライバの状態によっては、プログラムは予測したものとは異なる結果を生成する場合があります。
getwch()、mvgetwch()、mvwgetwch() の各ルーチンはマクロにすることも可能です。