curses ライブラリ関数
よく利用する関数についての超てきとー解説
- 初期設定関連
- initscr():スクリーンを初期化する.
(curses を利用する場合,
最初に呼び出さなければならない関数です.)
- leaveok(stdscr, TRUE):カーソルを表示しないモードに設定.
(うまく働かない場合もあるようだが...)
- curs_set(0):カーソルを表示しないモードに設定.
(同上...)
- curs_set(1):カーソルを表示するモードに設定.
- nocbreak():入力バッファを使用するモードに設定.
(キー入力の末尾に必ず [Enter] キーが必要ってこと.)
- cbreak():入力バッファを使用しないモードに設定.
- noecho():キー入力された文字を表示しないモードに設定.
- echo():キー入力された文字を表示するモードに設定.
- keypad(stdscr, TRUE):カーソルキーを有効にする.
各カーソルキーのマクロ名は,
KEY_UP,KEY_DOWN,KEY_LEFT,KEY_RIGHT
である.
- endwin():端末制御を終了する.
- setlocale(LC_ALL, "");:マルチバイト文字列を有効にする.
(#include <locale.h>,curses の関数ではない.)
- カラー関連
- start_color():カラーを有効にする.
- init_pair(色番号, 文字色, 背景色):カラーペアを登録する.
文字色,背景色としては,COLOR_BLACK,COLOR_RED,
等が利用できる.(/usr/include/curses.h を参照せよ.)
色番号は 1 以上.
(システム依存の上限値があるので,大きすぎてもダメ.)
- use_default_colors():
端末のデフォルトの文字色・背景色を -1 として指定可能にする.
- assume_default_colors(文字色, 背景色):
init_pair(0, ...) と同じ意味.
(init_pair( ) では色番号 0 は指定できない.)
- bkgd(COLOR_PAIR(色番号)):スクリーンの背景色を設定する.
また,ここで使ったカラーペアがデフォルトの色になる.
- attrset(0):
デフォルトの色を使う.
- attrset(COLOR_PAIR(色番号)):
次の表示処理に使うカラーペアを指定する.
表示処理の直前に行なうとよい.
(A_NORMAL,A_BOLD,A_REVERSE,等の属性も指定できる.
たとえば,強調表示したい場合,
COLOR_PAIR(色番号)|A_BOLD を指定すればよい.)
- attron(COLOR_PAIR(色番号)):
A_BOLD などの属性を変えずに,色だけを変える.
- attron(属性):
色を変えずに,A_BOLD などの属性だけを変える.
なお,start_color(),init_pair() は,
プログラムの初期設定として一度実行するだけでよい.
- 表示関連
- getmaxyx(stdscr, 変数1, 変数2):スクリーンサイズを取得する.
変数1 に高さ,変数2 に幅が代入される.
変数をポインタにする必要はない.(& は不要ってこと.)
- clear():スクリーンをクリアし,リフレッシュする.
- erase():スクリーンをクリアする.リフレッシュはしない.
- move(縦位置, 横位置):カーソルを移動する.
- addch(文字):文字を表示する.
- addstr(文字列):文字列を表示する.
- printw(書式, データ, データ, ...):
curses 版の printf().
- refresh():スクリーンをリフレッシュ(再表示)する.
なお,mvaddch(縦位置, 横位置, 文字) のような,
移動と表示を同時に行なう関数も用意されている.
- 入力関連
- timeout(ミリ秒):キー入力待ち時間(普通は 1 ms 以上)を設定する.
負の値を設定するとキーが押されるまで永久に待つことになる.
(デフォルトでは,負の値が設定されている.)
- getch():キーボードから文字を入力する.
入力された文字を int 型として返す.
- getstr(文字列ポインタ):キーボードから文字列を入力する.
- scanw(書式, ポインタ, ポインタ, ...):
curses 版の scanf().
- inch():スクリーン(カーソル位置)から文字を入力する.
入力された文字を int 型として返す.
- instr(文字配列へのポインタ):スクリーン(カーソル位置)から文字列を入力する.
なお,mvgetstr(縦位置, 横位置, 文字列ポインタ) のような,
移動と入力を同時に行なう関数も用意されている.
- 時間関連(curses の関数ではない.)
- sleep(秒):指定時間だけ処理を停止する.
(#include <unistd.h>)
- usleep(μ秒):同上.
- その他
- beep():ベルを鳴らす.(端末によっては鳴らない場合もある.)
- flash():画面を点滅する.
オンラインマニュアル
全般的な解説は,次のマニュアルページに記載されている.
多分,英語だけど...
必要な部分だけ拾い読みすればよいだけなので何とかしよう.
そこには,curses ライブラリに含まれているすべての関数について,
関数名とマニュアルページ名の対応表も記載されている.
...
curses Routine Name Manual Page Name
___________________________________________
addch curs_addch(3X)
addchnstr curs_addchstr(3X)
...
たとえば,関数 addch() について調べたければ,
マニュアル curs_addch を読めばよい.
または,関数によっては素直に,
man addch 等でも OK な場合もある.
(c) 2014, yanagawa@kushiro-ct.ac.jp