curs_slk(3x) curs_slk(3x)
slk_init, slk_set, slk_wset, slk_refresh, slk_noutrefresh,
slk_label, slk_clear, slk_restore, slk_touch, slk_attron,
slk_attrset, slk_attroff, slk_attr_on, slk_attr_set,
slk_attr_off, slk_attr, slk_color
- curses ソフトウェア・ファンクションキー・ラベル・ルーチン
#include <curses.h>
int slk_init(int fmt);
int slk_set(int labnum, const char *label, int fmt);
int slk_refresh(void);
int slk_noutrefresh(void);
char *slk_label(int labnum);
int slk_clear(void);
int slk_restore(void);
int slk_touch(void);
int slk_attron(const chtype attrs);
int slk_attroff(const chtype attrs);
int slk_attrset(const chtype attrs);
int slk_attr_on(attr_t attrs, void* opts);
int slk_attr_off(const attr_t attrs, void * opts);
int slk_attr_set(const attr_t attrs, short color_pair,
void* opts);
attr_t slk_attr(void);
int slk_color(short color_pair);
int slk_wset(int labnum, const wchar_t *label, int fmt);
slk* 関数群は、多くの端末に存在するソフトウェア・
ファンクションキー・ラベル (以下ソフトラベル) を操作します。
ソフトラベルを持たない端末のために、curses は stdscr と
変数 LINES のサイズを縮小し、stdscr の最下行を専用とします。
curses は各 8 文字以内の 8 個のラベルを標準化しています。
これに加え、ncurses の実装は各 5 文字以内の 12 個のラベルを
シミュレートするモードをサポートしています。
これは今日の PC のような利用者機器に便利です。
ncurses はハードウェアのサポートを全く使おうとすることなく、
画面の最下部 2 行以内を使ってこのモードをシミュレートします。
slk_init ルーチンは initscr または newterm を呼び出す前に
呼び出さなければなりません。
最終的に initscr が stdscr から 1 行を使ってソフトラベルを
エミュレートするとき、fmt は画面上にラベルをどう配置するかを
決定します。
0 3-2-3 配置でラベルを表示します
1 4-4 配置でラベルを表示します
2 PC のような 4-4-4 配置でラベルを表示します
3 これもPC のような 4-4-4 配置ですが、
それに加えて見出し行を作成し、
利用者がキー番号を識別しやすくします
slk_set ルーチン (とワイド文字用ライブラリの slk_wset
ルーチン) は、次の 3 つの引数を取ります。
labnum
1 から 8 (slk_init で fmt が 2 または 3 の場合は
12) までのラベル番号
label
ラベルとして表示される、8 (slk_init で fmt が
2 または 3 の場合は 5) 文字までの長さの文字列。
ヌル文字列またはヌルポインタの場合は
空白のラベルを設定します
fmt
0, 1, 2 のいずれかであり、それぞれラベル内で
左寄せ、中央揃え、右寄せにして表示します
slk_refresh と slk_noutrefresh ルーチンは
wrefresh と wnoutrefresh ルーチンに対応しています。
slk_label ルーチンは、ラベル番号 labnum の現在のラベルを
返します。先行または後続する空白は取り除かれます。
slk_clear ルーチンは画面からソフトラベルをクリアします。
slk_restore ルーチンは slk_clear が実行された後、
ソフトラベルを画面上に復元します。
slk_touch ルーチンは、次に slk_noutrefresh が実行された時に
すべてのソフトラベルを出力するように強制します。
slk_attron, slk_attrset, slk_attroff, slk_attr ルーチンは
attron, attrset, attroff, attr_get に対応しています。
これらは画面の最下行でソフトラベルがシミュレートされている
場合のみ有効です。
ソフトラベルのデフォルトの強調表示は A_STANDOUT です
(これを文書化していない System V curses と同様に)。
slk_color ルーチンは color_set に対応しています。
これは画面の最下行でソフトラベルがシミュレートされている
場合のみ有効です。
これらのルーチンは失敗のとき ERR を、正常終了のとき OK
(SVr4 は「ERR 以外の整数値」としか指定していません) を
返します。
X/Open はエラーの条件を何も定義していません。この実装では
slk_attr
ソフトラベルで使われている属性値を返します
slk_attroff, slk_attron, slk_clear,
slk_noutrefresh, slk_refresh, slk_touch
端末またはソフトラベルが初期化されていない場合に
エラーを返します
slk_attrset
端末またはソフトラベルが初期化されていない場合に
エラーを返します
slk_attr_set
端末またはソフトラベルが初期化されていない場合、
または色のペアが 0 〜 COLOR_PAIRS-1 の範囲外の
場合、または opts がヌルでない場合に
エラーを返します
slk_color
端末またはソフトラベルが初期化されていない場合、
または色のペアが 0 〜 COLOR_PAIRS-1 の範囲外の
場合にエラーを返します
slk_init
書式引数 fmt が 0 〜 3 の範囲外の場合に
エラーを返します
slk_label
エラーの場合 NULL を返します
slk_set
端末またはソフトラベルが初期化されていない場合、
または引数 labnum がラベル数の範囲外の場合、
または書式引数 fmt が 0 〜 2 の範囲外の場合、
またはラベル用のメモリが確保できない場合に
エラーを返します
すぐ後に wrefresh が続くでしょうから、ほとんどの
アプリケーションは slk_noutrefresh を使うでしょう。
これらの関数は XSI Curses standard, Issue 4 に記載されて
います。
同書は属性操作関数 slk_attron, slk_attroff, slk_attrset の
引数を attr_t 型とし、const 修飾子を追加しています。
slk_init() 関数の書式コード 2 と 3、および slk_attr 関数は
ncurses に固有です。
curses(3x), curs_attr(3x), curs_initscr(3x),
curs_refresh(3x), curs_variables(3x).
curs_slk(3x)