EN JA
curs_slk(3X)
curs_slk(3X) curs_slk(3X)

名称

slk_init, slk_set, 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_number, void* opts);
 
attr_t slk_attr(void);
 
int slk_color(short color_pair_number);
 

解説

slk* 関数は、多数の端末に存在するソフトファンクションキーラベルのセットを操作します。ソフトラベルのない端末のために、 curses は、 stdscr と変数 LINES のサイズを減少させ、 stdscr の下端行を占有します。 curses は、それぞれ 8 文字以下の 8 つのラベルを標準化します。これに加えて、ncurses 実装は、それぞれ 5 文字以下の 12 のラベルをシミュレートするモードをサポートしています。これは、エンドユーザデバイスのような今日の PC には最も一般的です。 ncurses は、画面の下端の 2 行以上のまで行をとることにより、このモードをシミュレートし、このモードに対してあらゆるハードウェアのサポートを使用しようとしないことに注意してください。

slk_init ルーチンは、 initscr または newterm が呼び出される前に、呼び出されなければなりません。結局、 initscr がソフトラベルをエミュレートするために stdscr からの行を使用するなら、 fmt は、ラベルが画面上でどのように配置されるかを決定します。 fmt0 に設定すると、ラベルの 3-2-3 配置を示し、 1 は、 4-4 配置を示し、そして 2 は、PC に似た 4-4-4のモードを示します。 fmt3 に設定されるなら、再び PC に似た 4-4-4 のモードですが、加えて、インデックス行は、ユーザがキー番号を容易に識別するのを助けて生成されます。

slk_set ルーチンは、 labnum1 から 8 まで (それぞれ、 12) のラベル番号であることを必要とします。 label は、長さが 8 (それぞれ、5) 文字以下のラベルで表現される文字列でなければなりません。空の文字列または NULL ポインタは、空白のラベルをセットアップします。 fmt は、 01 または 2 のいずれかで、それぞれラベルが左揃え、中心揃え、または右揃えであるかどうかを示します。

slk_refreshslk_noutrefresh ルーチンは、 wrefreshwnoutrefresh ルーチンに対応します。

slk_label ルーチンは、先導する空白、後続する空白を取り除いてラベル番号 labnum のための現在のラベルを返します。

slk_clear ルーチンは、画面からソフトラベルをクリアします。

slk_restore ルーチンは、 slk_clear が実行された後、画面にソフトラベルを復元します。

slk_touch ルーチンは、この次 slk_noutrefresh が実行されるときに、すべてのソフトラベルを出力されるように強制します。

slk_attronslk_attrsetslk_attroffslk_attr ルーチンは、 attronattrsetattroffattr_get に対応しています。ソフトラベルが画面の下端行でシミュレートされる場合のみ、それらは、効果があります。ソフトキーのためのデフォルトのハイライト (強調) は、 (この事実を文書化していない System V curses でのように) A_STANDOUT です。

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 が NULL でないなら、エラーを返します。
slk_color
は、端末またはソフトキーが初期化されていなかった、またはカラーペアが範囲 0..COLOR_PAIRS-1 の外側であるなら、エラーを返します。
slk_init
は、書式化パラメータが範囲 0..3 の外側であるなら、エラーを返します。
slk_label
は、エラーの場合、 NULL を返します。
slk_set
は、端末またはソフトキーが初期化されていなかった、または labnum パラメータがラベルカウントの範囲の外側であるなら、または書式化パラメータが範囲 0..2 の外側であるなら、またはラベルのためのメモリを割り付けることができないなら、エラーを返します。

ほとんどのアプリケーションは、 wrefresh がたぶんすぐに続くので、 slk_noutrefresh を使用するでしょう。

移植性

XSI Curses standard, Issue 4 は、これらの関数を記述しています。属性操作関数 slk_attron, slk_attroff, slk_attrset の引数タイプを attr_t に変更して、 const 修飾子を追加します。 slk_init() のための書式化コード 23、および関数 slk_attr は、ncurses に特有です。

関連項目

curses(3X), curs_attr(3X), curs_initscr(3X), curs_refresh(3X)