curses ライブラリ関数
よく利用する関数についての超てきとー解説
- ヘッダファイル
- #include <ncurses.h>:
curses を使うために必要.
- #include <locale.h>:
日本語文字列を使う場合に必要.
(curses とは無関係だが併用すると便利.)
- #include <unistd.h>:
スリープを使う場合に必要.
(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, ""):
マルチバイト文字列を有効にする.
ただし,環境変数 LANG が適切に設定されている必要あり.
(#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() 等は,
プログラムの初期設定として一度実行するだけでよい.
属性変更の際には,attr*(...) だけを実行する.
- 表示関連
- getmaxyx(stdscr, 変数1, 変数2):
スクリーンサイズを取得する.
変数1 に高さ,変数2 に幅が代入される.
変数をポインタにする必要はない.(& は不要ってこと.)
- clear():
スクリーンをクリアし,リフレッシュする.
- erase():スクリーンをクリアする.リフレッシュはしない.
- move(縦位置, 横位置):
カーソルを移動する.
- addch(文字):
文字を表示する.
- addstr(文字列):
文字列を表示する.
- printw(書式, データ, データ, ...):
curses 版の printf().
- refresh():
スクリーンをリフレッシュ(再表示)する.
なお,移動と表示を一括実行する関数
mvaddch(...) や mvprintw(...)
等も用意されている.
- 入力関連
- timeout(ミリ秒):
キー入力待ち時間(普通は 1 ms 以上)を設定する.
負の値を設定するとキーが押されるまで永久に待つことになる.
(デフォルトでは,負の値が設定されている.)
- getch():
キーボードから文字を入力する.
入力された文字を int 型として返す.
- getstr(文字列ポインタ):
キーボードから文字列を入力する.
- scanw(書式, ポインタ, ポインタ, ...):
curses 版の scanf().
- inch():
スクリーン(カーソル位置)から文字を入力する.
入力された文字を int 型として返す.
- instr(文字配列へのポインタ):
スクリーン(カーソル位置)から文字列を入力する.
なお,移動と入力を一括実行する関数
mvgetstr(...) や mvscanw(...)
等も用意されている.
- 時間関連(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) 2016, yanagawa@kushiro-ct.ac.jp