Curses ライブラリに関する下調べ
行編集機能の実装には curses ライブラリを使うので、その下調べ。
- Curses の機能を使うには
_XOPEN_CURSES
マクロを定義する必要がある。 - Enhanced Curses の機能はライブラリが
_XOPEN_CURSES
マクロを定義しているときのみ利用可能。その機能を使うにはアプリケーションで_XOPEN_SOURCE_EXTENDED
マクロを値 1 で定義する必要がある。 - 大文字 2 文字の識別子はライブラリが使用するため留保されている。
- curses.h ヘッダでは以下の接頭辞で始まるマクロが定義される可能性がある:
A_
,ACS_
,ALL_
,BUTTON
,COLOR_
,KEY_
,MOUSE
,REPORT_
,WA_
,WACS_
- term.h ヘッダでは接頭辞
ext_
で始まるマクロが定義される可能性がある。その他 capability 名が定義される。 - Curses ライブラリを使用したプログラムは -l curses でリンクする。
- Curses の仕様は C99 の策定前にできたので、Curses が定めるところの bool と C99 の stdbool.h ヘッダが定めるところの bool との関係は定義されていない。
- Non-spacing characters とは
wcwidth
が 0 を返す文字である。(ナル文字を除く) - ウィンドウを切り替えるアプリケーションは最初に
initscr
またはnewterm
を呼び、最後にendwin
を呼ぶ。initscr
またはnewterm
を呼ぶ前に呼んでいいのは、filter
,ripoffline
,slk_init
,use_env
そして term.h でプロトタイプ宣言される関数のみである。 - term.h ヘッダで宣言されるもの:
cur_term
,del_curterm()
,putp()
,restartterm()
,set_curterm()
,setupterm()
,tgetent()
,tgetflag()
,tgetnum()
,tgetstr()
,tgoto()
,tigetflag()
,tigetnum()
,tigetstr()
,tparm()
,tputs()
,typedef bool
,typedef TERMINAL
- Terminfo データベースを使用するには、まず
setupterm
を呼ぶ。 - 古い環境の事を考えると term.h の前に curses.h をインクルードしたほうが良い。
- X/Open 規格によれば
tparm()
の一つ目以外の引数の型はすべて long となっているはずだが、実際のヘッダでは二つ目以降の引数は可変個数引数として宣言されている場合があるので注意を要する。
Yash においては curses の機能全体は不要で、terminfo だけあれば事足りる筈。
| 固定リンク
コメント