Ruby 1.9.2 リファレンスマニュアル > ライブラリ一覧 > cursesライブラリ > Cursesモジュール

module Curses

クラスの継承リスト: Curses

Abstract

Curses モジュールや Curses::Window クラスは、curses ライブラリを利用して、 端末に依存しない形式でテキストユーザインタフェースを作成できます。 curses ライブラリとは、 C のプログラムから端末のディスプレイ画面を制御するためのライブラリのことで、 次のような実装があります。

本モジュールを使ってテキストユーザインタフェースを作成する流れは次のようになります。

  1. Curses.#init_screen で初期化を行います。
  2. Curses のモジュール関数を使って、 入力のエコーを無効にするなどの curses の設定を行います。
  3. Curses.#stdscrCurses::Window オブジェクトを取得し、 それを使ってインタフェースを構築する。
  4. Curses.#getchCurses.#getstr により、 ユーザからの入力を取得します。入力した情報に従って処理を行い、 そして、入力を待つということを繰り返します。
  5. 最後に 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 -> nil
crmode -> nil

キーボード入力のバッファリングをやめ、ユーザの入力を即座に処理できるようにします。

このメソッドの中で Curses.#init_screen を呼び出します。

セーフレベル ($SAFE) が 4 の場合、例外 SecurityError を発生します。

[SEE_ALSO] Curses.#nocbreakCurses.#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_screenCurses.#stdscr

closed? -> bool

curses が終了しているかどうかを返します。

詳しくは、 man ページの curs_initscr(3X) の isendwin 関数を参照ください。

サポートしていない環境では、例外 NotImplementError が発生します。

[SEE_ALSO] Curses.#close_screen

clrtoeol
color_content(color)
color_pair(attr)
color_pairs -> Integer

サポートしていない環境では、例外 NotImplementError が発生します。

[EXCEPTION] NotImplementError:
colors -> Integer

サポートしていない環境では、例外 NotImplementError が発生します。

[EXCEPTION] NotImplementError:
cols

画面に表示可能な桁数(バイト)を返します。 ただし実際にはもう 1 バイト少なくしか表示できないライブラリが あるようです。

curs_set(visibility)
def_prog_mode
delch
deleteln

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 コードを表す整数です。

getmouse
getstr

標準入力から一行読み込みます。 戻り値は文字列です。

このメソッドは getnstr() が実装されていない プラットホームではバッファオーバーフローをおこす恐れが あります。

has_colors?
inch

stdscr のカーソル位置から 1 バイト読みとって返します。

init_color(color, r, g, b)
init_pair(pair, f, b)
init_screen -> Curses::Window
stdscr -> 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 バイト) を挿入します。

insertln
keyname(c)
lines

画面に表示可能な行数を返します。

mouseinterval(interval)
mousemask(mask)
nl -> nil

cooked モードのとき、return キーの入力に対して LF (Ctrl-j) を返すようにします。

詳しくは、 man ページの curs_outopts(3X) の nl 関数を参照ください。

nocbreak -> nil
nocrmode -> nil

通常の端末のように、キーボード入力のバッファリングを有効にします。 ユーザの入力はエンターキーなどを押すまで処理できません。 この状態のことを「coocked」モードといいます。

このメソッドの中で Curses.#init_screen を呼び出します。

セーフレベル ($SAFE) が 4 の場合、例外 SecurityError を発生します。

[SEE_ALSO] Curses.#cbreakCurses.#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.#cbreakCurses.#noraw

refresh -> nil

画面全体を表すウィンドウ stdscr の表示を更新します。

詳しくは、 man ページの curs_refresh(3X) の refresh 関数を参照ください。

このメソッドの中で Curses.#init_screen を呼び出します。

セーフレベル ($SAFE) が 4 の場合、例外 SecurityError を発生します。

reset_prog_mode
resize(lin, col)
resizeterm(lin, col)
scrl(n)
setpos(y, x)

stdscr のカーソルを座標 (x,y) に移動します。 座標はともに 0 が始点です。

文字がない場所に setpos した場合の挙動は OS に依存します。

setscrreg(top, bottom)
standend

強調する文字の書き込みを終えます。

standout

以降書き込む文字を強調します。 「強調」は反転であることが多いようですが、 そう決められているわけではありません。

start_color
timeout=
ungetch(ch)

文字 ch (ASCII コードを示す整数) をストリームに戻します。

ungetmouse(mevent)
use_default_colors -> nil

前景色と背景色を端末のデフォルト値 (-1) に設定します。

詳細は man ページの defualt_colors(3X) を参照ください。

サポートしていない環境では、例外 NotImplementError が発生します。

定数

ALL_MOUSE_EVENTS
A_ALTCHARSET
A_ATTRIBUTES
A_BLINK
A_BOLD
A_CHARTEXT
A_COLOR
A_DIM
A_HORIZONTAL
A_INVIS
A_LEFT
A_LOW
A_NORMAL
A_PROTECT
A_REVERSE
A_RIGHT
A_STANDOUT
A_TOP
A_UNDERLINE
A_VERTICAL
BUTTON1_CLICKED
BUTTON1_DOUBLE_CLICKED
BUTTON1_PRESSED
BUTTON1_RELEASED
BUTTON1_TRIPLE_CLICKED
BUTTON2_CLICKED
BUTTON2_DOUBLE_CLICKED
BUTTON2_PRESSED
BUTTON2_RELEASED
BUTTON2_TRIPLE_CLICKED
BUTTON3_CLICKED
BUTTON3_DOUBLE_CLICKED
BUTTON3_PRESSED
BUTTON3_RELEASED
BUTTON3_TRIPLE_CLICKED
BUTTON4_CLICKED
BUTTON4_DOUBLE_CLICKED
BUTTON4_PRESSED
BUTTON4_RELEASED
BUTTON4_TRIPLE_CLICKED
BUTTON_ALT
BUTTON_CTRL
BUTTON_SHIFT
COLOR_BLACK
COLOR_BLUE
COLOR_CYAN
COLOR_GREEN
COLOR_MAGENTA
COLOR_RED
COLOR_WHITE
COLOR_YELLOW
KEY_A1
KEY_A3
KEY_B2
KEY_BACKSPACE
KEY_BEG
KEY_BREAK
KEY_BTAB
KEY_C1
KEY_C3
KEY_CANCEL
KEY_CATAB
KEY_CLEAR
KEY_CLOSE
KEY_COMMAND
KEY_COPY
KEY_CREATE
KEY_CTAB
KEY_CTRL_A
KEY_CTRL_B
KEY_CTRL_C
KEY_CTRL_D
KEY_CTRL_E
KEY_CTRL_F
KEY_CTRL_G
KEY_CTRL_H
KEY_CTRL_I
KEY_CTRL_J
KEY_CTRL_K
KEY_CTRL_L
KEY_CTRL_M
KEY_CTRL_N
KEY_CTRL_O
KEY_CTRL_P
KEY_CTRL_Q
KEY_CTRL_R
KEY_CTRL_S
KEY_CTRL_T
KEY_CTRL_U
KEY_CTRL_V
KEY_CTRL_W
KEY_CTRL_X
KEY_CTRL_Y
KEY_CTRL_Z
KEY_DC
KEY_DL
KEY_DOWN
KEY_EIC
KEY_END
KEY_ENTER
KEY_EOL
KEY_EOS
KEY_EXIT
KEY_F0
KEY_F1
KEY_F10
KEY_F11
KEY_F12
KEY_F13
KEY_F14
KEY_F15
KEY_F16
KEY_F17
KEY_F18
KEY_F19
KEY_F2
KEY_F20
KEY_F21
KEY_F22
KEY_F23
KEY_F24
KEY_F25
KEY_F26
KEY_F27
KEY_F28
KEY_F29
KEY_F3
KEY_F30
KEY_F31
KEY_F32
KEY_F33
KEY_F34
KEY_F35
KEY_F36
KEY_F37
KEY_F38
KEY_F39
KEY_F4
KEY_F40
KEY_F41
KEY_F42
KEY_F43
KEY_F44
KEY_F45
KEY_F46
KEY_F47
KEY_F48
KEY_F49
KEY_F5
KEY_F50
KEY_F51
KEY_F52
KEY_F53
KEY_F54
KEY_F55
KEY_F56
KEY_F57
KEY_F58
KEY_F59
KEY_F6
KEY_F60
KEY_F61
KEY_F62
KEY_F63
KEY_F7
KEY_F8
KEY_F9
KEY_FIND
KEY_HELP
KEY_HOME
KEY_IC
KEY_IL
KEY_LEFT
KEY_LL
KEY_MARK
KEY_MAX
KEY_MESSAGE
KEY_MIN
KEY_MOUSE
KEY_MOVE
KEY_NEXT
KEY_NPAGE
KEY_OPEN
KEY_OPTIONS
KEY_PPAGE
KEY_PREVIOUS
KEY_PRINT
KEY_REDO
KEY_REFERENCE
KEY_REFRESH
KEY_REPLACE
KEY_RESET
KEY_RESIZE
KEY_RESTART
KEY_RESUME
KEY_RIGHT
KEY_SAVE
KEY_SBEG
KEY_SCANCEL
KEY_SCOMMAND
KEY_SCOPY
KEY_SCREATE
KEY_SDC
KEY_SDL
KEY_SELECT
KEY_SEND
KEY_SEOL
KEY_SEXIT
KEY_SF
KEY_SFIND
KEY_SHELP
KEY_SHOME
KEY_SIC
KEY_SLEFT
KEY_SMESSAGE
KEY_SMOVE
KEY_SNEXT
KEY_SOPTIONS
KEY_SPREVIOUS
KEY_SPRINT
KEY_SR
KEY_SREDO
KEY_SREPLACE
KEY_SRESET
KEY_SRIGHT
KEY_SRSUME
KEY_SSAVE
KEY_SSUSPEND
KEY_STAB
KEY_SUNDO
KEY_SUSPEND
KEY_UNDO
KEY_UP
REPORT_MOUSE_POSITION

Methods

Classes