Ruby 1.9.2 リファレンスマニュアル > ライブラリ一覧 > cursesライブラリ > Cursesモジュール
module Curses
クラスの継承リスト: Curses
Abstract
Curses モジュールや Curses::Window クラスは、curses ライブラリを利用して、 端末に依存しない形式でテキストユーザインタフェースを作成できます。 curses ライブラリとは、 C のプログラムから端末のディスプレイ画面を制御するためのライブラリのことで、 次のような実装があります。
本モジュールを使ってテキストユーザインタフェースを作成する流れは次のようになります。
- Curses.#init_screen で初期化を行います。
- Curses のモジュール関数を使って、 入力のエコーを無効にするなどの curses の設定を行います。
- Curses.#stdscr で Curses::Window オブジェクトを取得し、 それを使ってインタフェースを構築する。
- Curses.#getch や Curses.#getstr により、 ユーザからの入力を取得します。入力した情報に従って処理を行い、 そして、入力を待つということを繰り返します。
- 最後に Curses.#close_screen で終了処理を行います。
例: 画面中央に「Hello World!」と表示し、何か入力があると終了する。
require "curses" Curses.init_screen begin s = "Hello World!" Curses.setpos(Curses.lines / 2, Curses.cols / 2 - (s.length / 2)) Curses.addstr(s) Curses.refresh Curses.getch ensure Curses.close_screen end
なお、curses や ncurses をインストールしていない環境では、 本モジュールは利用できません。 利用できない場合、require の時点で以下のような例外が発生します。
foo:1:in `require': no such file to load -- bar (LoadError)
from foo:1:in `<main>'
いくつかの操作において、サポートしていない環境では、 例外 NotImplementError が発生します。
セーフレベル ($SAFE) が 4 の場合、ほとんどの操作で例外 SecurityError を発生します。
モジュール関数
ESCDELAY -> Integer-
ESC の入力を破棄する時間(ミリ秒単位)を取得します。
サポートしていない環境では、例外 NotImplementError が発生します。
ESCDELAY=(val) -> Integer-
ESC の入力を破棄する時間(ミリ秒単位)を val に設定します。 設定した値を返します。
- [PARAM] val:
- ESC の入力を破棄する時間(ミリ秒単位)を指定します。
サポートしていない環境では、例外 NotImplementError が発生します。
TABSIZE -> Integer-
タブ幅を取得します。
サポートしていない環境では、例外 NotImplementError が発生します。
TABSIZE=(val) -> Integer-
タブ幅を val に設定します。設定した値を返します。
- [PARAM] val:
- タブ幅を指定します。
サポートしていない環境では、例外 NotImplementError が発生します。
addch(ch)-
stdscr のカーソルの位置に ch (1 バイト) を上書きします。
addstr(str)-
stdscr のカーソルの位置に文字列 str を挿入します。
attroff(attrs)attron(attron)attrset(attrs)beep-
音を出します。 この機能がないところでは単に無視されます。
bkgd(ch)bkgdset(ch)can_change_color?cbreak -> nilcrmode -> nil-
キーボード入力のバッファリングをやめ、ユーザの入力を即座に処理できるようにします。
このメソッドの中で Curses.#init_screen を呼び出します。
セーフレベル ($SAFE) が 4 の場合、例外 SecurityError を発生します。
[SEE_ALSO] Curses.#nocbreak、Curses.#nocrmode
clear -> nil-
画面全体を表すウィンドウ stdscr の文字を消去し、画面をクリアします。 画面のクリアを反映させるために、 本メソッドのあとに Curses.#refresh を呼び出す必要はありません。
詳しくは、 man ページの curs_clear(3X) の clear 関数を参照ください。
このメソッドの中で Curses.#init_screen を呼び出します。
セーフレベル ($SAFE) が 4 の場合、例外 SecurityError を発生します。
close_screen -> nil-
curses の終了処理を行います。 端末の状態を復帰させ、カーソルを左端に移動させます。
詳しくは、 man ページの curs_initscr(3X) の endwin 関数を参照ください。
[SEE_ALSO] Curses.#init_screen、Curses.#stdscr
closed? -> bool-
curses が終了しているかどうかを返します。
詳しくは、 man ページの curs_initscr(3X) の isendwin 関数を参照ください。
サポートしていない環境では、例外 NotImplementError が発生します。
[SEE_ALSO] Curses.#close_screen
clrtoeolcolor_content(color)color_pair(attr)color_pairs -> Integer-
サポートしていない環境では、例外 NotImplementError が発生します。
- [EXCEPTION] NotImplementError:
colors -> Integer-
サポートしていない環境では、例外 NotImplementError が発生します。
- [EXCEPTION] NotImplementError:
cols-
画面に表示可能な桁数(バイト)を返します。 ただし実際にはもう 1 バイト少なくしか表示できないライブラリが あるようです。
curs_set(visibility)def_prog_modedelchdeleteln-
stdscr のカーソルがある行を削除し、後の行を上に詰めます。
doupdate -> nil-
画面全体を表すウィンドウ stdscr の表示を更新します。 Curses.#refresh 以上に能率良く更新処理を行います。
詳しくは、 man ページの curs_refresh(3X) の doupdate 関数を参照ください。
利用している curses のライブラリが doupdate 関数を提供していない場合、 doupdate 関数の代わりに、refresh 関数を呼び出します。
このメソッドの中で Curses.#init_screen を呼び出します。
セーフレベル ($SAFE) が 4 の場合、例外 SecurityError を発生します。
echo -> nil-
ユーザの入力内容を画面に表示するようにします。 つまり、入力のエコーを有効にします。
詳しくは、 man ページの curs_inopts(3X) の echo 関数を参照ください。
このメソッドの中で Curses.#init_screen を呼び出します。
セーフレベル ($SAFE) が 4 の場合、例外 SecurityError を発生します。
flash-
画面を一瞬点滅させます。 この機能がないところでは単に無視されます。
getch-
標準入力から 1 バイト読み込みます。 戻り値は ASCII コードを表す整数です。
getmousegetstr-
標準入力から一行読み込みます。 戻り値は文字列です。
このメソッドは getnstr() が実装されていない プラットホームではバッファオーバーフローをおこす恐れが あります。
has_colors?inch-
stdscr のカーソル位置から 1 バイト読みとって返します。
init_color(color, r, g, b)init_pair(pair, f, b)init_screen -> Curses::Windowstdscr -> Curses::Window-
端末の種類や curses に関するデータを初期化し、画面をクリアします。 stdscr と呼ばれる画面全体を表すウィンドウを返します。
ncurses を利用している場合、 このメソッドに失敗すると標準エラー出力にエラーメッセージを出力し、終了します。 そうでない場合、このメソッドに失敗すると例外 RuntimeError を発生します。
詳しくは、 man ページの curs_initscr(3X) の initscr 関数と、 curs_clear(3X) の clear 関数を参照ください。
Curses のいくつかのメソッドは、内部でこのメソッドを呼び出します。 これにより、このメソッドを呼び出していない場合でも、 いくつかの処理をできるようになっています。
セーフレベル ($SAFE) が 4 の場合、例外 SecurityError を発生します。
[SEE_ALSO] Curses.#close_screen
insch(ch)-
stdscr のカーソルの位置に ch (1 バイト) を挿入します。
insertlnkeyname(c)lines-
画面に表示可能な行数を返します。
mouseinterval(interval)mousemask(mask)nl -> nil-
cooked モードのとき、return キーの入力に対して LF (Ctrl-j) を返すようにします。
詳しくは、 man ページの curs_outopts(3X) の nl 関数を参照ください。
nocbreak -> nilnocrmode -> nil-
通常の端末のように、キーボード入力のバッファリングを有効にします。 ユーザの入力はエンターキーなどを押すまで処理できません。 この状態のことを「coocked」モードといいます。
このメソッドの中で Curses.#init_screen を呼び出します。
セーフレベル ($SAFE) が 4 の場合、例外 SecurityError を発生します。
[SEE_ALSO] Curses.#cbreak、Curses.#crmode
noecho-
ユーザの入力内容を画面に表示しないようにします。 つまり、入力のエコーを止めます。
詳しくは、 man ページの curs_inopts(3X) の noecho 関数を参照ください。
このメソッドの中で Curses.#init_screen を呼び出します。
セーフレベル ($SAFE) が 4 の場合、例外 SecurityError を発生します。
nonl-
cooked モードのとき、return キーの入力に対して CR (Ctrl-m) を返すようにします。
詳しくは、 man ページの curs_outopts(3X) の nonl 関数を参照ください。
noraw -> nil-
raw モードを抜け、通常の状態にします。 つまり、キーボード入力のバッファリングを行い、 割り込み(Ctrl-C)、サスペンド(Ctrl-Z) などの特殊キーの処理を行うようにします。
[SEE_ALSO] Curses.#raw
pair_content(pair)pair_number(attrs)raw -> nil-
Curses.#cbreak と同様に、キーボード入力のバッファリングをやめ、 ユーザの入力を即座に処理できるようにします。なおかつ、 割り込み(Ctrl-C)、サスペンド(Ctrl-Z) などの特殊キーの処理をやめます。 この状態のことを「raw」モードといいます。
[SEE_ALSO] Curses.#cbreak、Curses.#noraw
refresh -> nil-
画面全体を表すウィンドウ stdscr の表示を更新します。
詳しくは、 man ページの curs_refresh(3X) の refresh 関数を参照ください。
このメソッドの中で Curses.#init_screen を呼び出します。
セーフレベル ($SAFE) が 4 の場合、例外 SecurityError を発生します。
reset_prog_moderesize(lin, col)resizeterm(lin, col)scrl(n)setpos(y, x)-
stdscr のカーソルを座標 (x,y) に移動します。 座標はともに 0 が始点です。
文字がない場所に setpos した場合の挙動は OS に依存します。
setscrreg(top, bottom)standend-
強調する文字の書き込みを終えます。
standout-
以降書き込む文字を強調します。 「強調」は反転であることが多いようですが、 そう決められているわけではありません。
start_colortimeout=ungetch(ch)-
文字 ch (ASCII コードを示す整数) をストリームに戻します。
ungetmouse(mevent)use_default_colors -> nil-
前景色と背景色を端末のデフォルト値 (-1) に設定します。
詳細は man ページの defualt_colors(3X) を参照ください。
サポートしていない環境では、例外 NotImplementError が発生します。
定数
ALL_MOUSE_EVENTSA_ALTCHARSETA_ATTRIBUTESA_BLINKA_BOLDA_CHARTEXTA_COLORA_DIMA_HORIZONTALA_INVISA_LEFTA_LOWA_NORMALA_PROTECTA_REVERSEA_RIGHTA_STANDOUTA_TOPA_UNDERLINEA_VERTICALBUTTON1_CLICKEDBUTTON1_DOUBLE_CLICKEDBUTTON1_PRESSEDBUTTON1_RELEASEDBUTTON1_TRIPLE_CLICKEDBUTTON2_CLICKEDBUTTON2_DOUBLE_CLICKEDBUTTON2_PRESSEDBUTTON2_RELEASEDBUTTON2_TRIPLE_CLICKEDBUTTON3_CLICKEDBUTTON3_DOUBLE_CLICKEDBUTTON3_PRESSEDBUTTON3_RELEASEDBUTTON3_TRIPLE_CLICKEDBUTTON4_CLICKEDBUTTON4_DOUBLE_CLICKEDBUTTON4_PRESSEDBUTTON4_RELEASEDBUTTON4_TRIPLE_CLICKEDBUTTON_ALTBUTTON_CTRLBUTTON_SHIFTCOLOR_BLACKCOLOR_BLUECOLOR_CYANCOLOR_GREENCOLOR_MAGENTACOLOR_REDCOLOR_WHITECOLOR_YELLOWKEY_A1KEY_A3KEY_B2KEY_BACKSPACEKEY_BEGKEY_BREAKKEY_BTABKEY_C1KEY_C3KEY_CANCELKEY_CATABKEY_CLEARKEY_CLOSEKEY_COMMANDKEY_COPYKEY_CREATEKEY_CTABKEY_CTRL_AKEY_CTRL_BKEY_CTRL_CKEY_CTRL_DKEY_CTRL_EKEY_CTRL_FKEY_CTRL_GKEY_CTRL_HKEY_CTRL_IKEY_CTRL_JKEY_CTRL_KKEY_CTRL_LKEY_CTRL_MKEY_CTRL_NKEY_CTRL_OKEY_CTRL_PKEY_CTRL_QKEY_CTRL_RKEY_CTRL_SKEY_CTRL_TKEY_CTRL_UKEY_CTRL_VKEY_CTRL_WKEY_CTRL_XKEY_CTRL_YKEY_CTRL_ZKEY_DCKEY_DLKEY_DOWNKEY_EICKEY_ENDKEY_ENTERKEY_EOLKEY_EOSKEY_EXITKEY_F0KEY_F1KEY_F10KEY_F11KEY_F12KEY_F13KEY_F14KEY_F15KEY_F16KEY_F17KEY_F18KEY_F19KEY_F2KEY_F20KEY_F21KEY_F22KEY_F23KEY_F24KEY_F25KEY_F26KEY_F27KEY_F28KEY_F29KEY_F3KEY_F30KEY_F31KEY_F32KEY_F33KEY_F34KEY_F35KEY_F36KEY_F37KEY_F38KEY_F39KEY_F4KEY_F40KEY_F41KEY_F42KEY_F43KEY_F44KEY_F45KEY_F46KEY_F47KEY_F48KEY_F49KEY_F5KEY_F50KEY_F51KEY_F52KEY_F53KEY_F54KEY_F55KEY_F56KEY_F57KEY_F58KEY_F59KEY_F6KEY_F60KEY_F61KEY_F62KEY_F63KEY_F7KEY_F8KEY_F9KEY_FINDKEY_HELPKEY_HOMEKEY_ICKEY_ILKEY_LEFTKEY_LLKEY_MARKKEY_MAXKEY_MESSAGEKEY_MINKEY_MOUSEKEY_MOVEKEY_NEXTKEY_NPAGEKEY_OPENKEY_OPTIONSKEY_PPAGEKEY_PREVIOUSKEY_PRINTKEY_REDOKEY_REFERENCEKEY_REFRESHKEY_REPLACEKEY_RESETKEY_RESIZEKEY_RESTARTKEY_RESUMEKEY_RIGHTKEY_SAVEKEY_SBEGKEY_SCANCELKEY_SCOMMANDKEY_SCOPYKEY_SCREATEKEY_SDCKEY_SDLKEY_SELECTKEY_SENDKEY_SEOLKEY_SEXITKEY_SFKEY_SFINDKEY_SHELPKEY_SHOMEKEY_SICKEY_SLEFTKEY_SMESSAGEKEY_SMOVEKEY_SNEXTKEY_SOPTIONSKEY_SPREVIOUSKEY_SPRINTKEY_SRKEY_SREDOKEY_SREPLACEKEY_SRESETKEY_SRIGHTKEY_SRSUMEKEY_SSAVEKEY_SSUSPENDKEY_STABKEY_SUNDOKEY_SUSPENDKEY_UNDOKEY_UPREPORT_MOUSE_POSITION