form_driver(3X) | form_driver(3X) |
名称
form_driver - form システムのコマンド処理ループ書式
#include <form.h>解説
一旦 form が記入された (表示された) ならば、 form_driver によってそれへの流し込むファネル (漏斗) 入力イベントにするべきです。このルーチンは、3 つの主な入力ケースがあります。- -
- 入力は、form ナビゲーション要求です。ナビゲーション要求コードは、 wgetch によって返されたキーと文字コードと区別される、 <form.h> で定義された定数です。
- -
- 入力は、印刷可能な文字です。 (256 未満の正でなければならない) 印刷可能な文字は、プログラムのロケール設定にしたがってチェックされます。
- -
- 入力は、マウスイベントに関連している KEY_MOUSE 特殊キーです。
- REQ_NEXT_PAGE
- 次のページに移動します。
- REQ_PREV_PAGE
- 前のページに移動します。
- REQ_FIRST_PAGE
- 最初のページに移動します。
- REQ_LAST_PAGE
-
最後のフィールドに移動します。
- REQ_NEXT_FIELD
- 次のフィールドに移動します。
- REQ_PREV_FIELD
- 前のフィールドに移動します。
- REQ_FIRST_FIELD
- 最前のフィールドに移動します。
- REQ_LAST_FIELD
- 最後のフィールドに移動します。
- REQ_SNEXT_FIELD
- ソートされた次のフィールドに移動します。
- REQ_SPREV_FIELD
- ソートされた前のフィールドに移動します。
- REQ_SFIRST_FIELD
- ソートされた最初のフィールドに移動します。
- REQ_SLAST_FIELD
- ソートされた最後のフィールドに移動します。
- REQ_LEFT_FIELD
- フィールドを左に移動します。
- REQ_RIGHT_FIELD
- フィールドを右に移動します。
- REQ_UP_FIELD
- フィールドを上に移動します。
- REQ_DOWN_FIELD
-
フィールドを下に移動します。
- REQ_NEXT_CHAR
- 次の文字に移動します。
- REQ_PREV_CHAR
- 前の文字に移動します。
- REQ_NEXT_LINE
- 次の行に移動します。
- REQ_PREV_LINE
- 前の行に移動します。
- REQ_NEXT_WORD
- 次の語に移動します。
- REQ_PREV_WORD
- 前の語に移動します。
- REQ_BEG_FIELD
- フィールドの始めに移動します。
- REQ_END_FIELD
- フィールドの終りに移動します。
- REQ_BEG_LINE
- 行の始めに移動します。
- REQ_END_LINE
- 行の終りに移動します。
- REQ_LEFT_CHAR
- フィールドの左に移動します。
- REQ_RIGHT_CHAR
- フィールドの右に移動します。
- REQ_UP_CHAR
- フィールドの上に移動します。
- REQ_DOWN_CHAR
-
フィールドの下に移動します。
- REQ_NEW_LINE
- 新しい行を挿入するかオーバレイします。
- REQ_INS_CHAR
- カーソルにブランク (空白) を挿入します。
- REQ_INS_LINE
- カーソルに空行を挿入します。
- REQ_DEL_CHAR
- カーソルの文字を削除します。
- REQ_DEL_PREV
- カーソルの前の文字を削除します。
- REQ_DEL_LINE
- カーソルの行を削除します。
- REQ_DEL_WORD
- カーソルのブランク (空白) で区切られた語を削除します。
- REQ_CLR_EOL
- カーソルから行の終りまでクリアします。
- REQ_CLR_EOF
- カーソルからフィールドの終りまでクリアします。
- REQ_CLR_FIELD
- すべてのフィールドをクリアします。
- REQ_OVL_MODE
- オーバレイモードに入ります。
- REQ_INS_MODE
-
挿入モードに入ります。
- REQ_SCR_FLINE
- フィールドを前に 1 行スクロールします。
- REQ_SCR_BLINE
- フィールドを後に 1 行スクロールします。
- REQ_SCR_FPAGE
- フィールドを前に 1 ページスクロールします。
- REQ_SCR_BPAGE
- フィールドを後に 1 ページスクロールします。
- REQ_SCR_FHPAGE
- フィールドを前に半ページスクロールします。
- REQ_SCR_BHPAGE
-
フィールドを後に半ページスクロールします。
- REQ_SCR_FCHAR
- フィールドを前に 1 文字スクロールします。
- REQ_SCR_BCHAR
- フィールドを後に 1 文字スクロールします。
- REQ_SCR_HFLINE
- フィールドを前に 1 行水平スクロールします。
- REQ_SCR_HBLINE
- フィールドを後に 1 行水平スクロールします。
- REQ_SCR_HFHALF
- フィールドを前に半行水平スクロールします。
- REQ_SCR_HBHALF
-
フィールドを後に半行水平スクロールします。
- REQ_VALIDATION
- フィールドを確認します。
- REQ_NEXT_CHOICE
- 次の選択されたフィールドを表示します。
- REQ_PREV_CHOICE
- 前の選択されたフィールドを表示します。
2 つめの引数が印刷可能な文字である場合、ドライバは、現在のフィールドで現在の位置にそれを置きます。それが上にリストされた form リクエストのうちの 1 つである場合、そのリクエストが実行されます。
マウス操作
2 番目の引数が KEY_MOUSE 特別キーであるなら、関連マウスイベントは、上記の事前に定義された要求の 1 つに変換されます。現在のユーザのウィンドウのクリックだけは、 (例えば、フォーム表示領域またはデコレーションウィンドウの中) 操作されます。利用者が、フォームの表示領域の上をクリックするなら:
- REQ_PREV_FIELD が、シングルクリックで生成されます。
- REQ_PREV_PAGE が、ダブルクリックで生成されます。
- REQ_FIRST_FIELD が、トリプルクリックで生成されます。
利用者が、フォームの表示領域の下をクリックするなら:
- REQ_NEXT_FIELD が、シングルクリックで生成されます。
- REQ_NEXT_PAGE が、ダブルクリックで生成されます。
- REQ_LAST_FIELD が、トリプルクリックで生成されます。
利用者が、フォームの表示領域の内側のフィールドをクリックするなら:
- -
- フォームカーソルは、そのフィールドに置かれます。
- -
- 利用者がフィールドをダブルクリックするなら、フォームカーソルは、そのフィールドに置かれ、 E_UNKNOWN_COMMAND が返されます。ダブルクリックは、通常フィールド特有の動作が返されるべきであることを意味するので、この返り値は、意味があります。アプリケーション特有のコマンドが実行されるべきであることをシグナルすることがまさにこの返り値の目的です。
- -
- 要求への変換が行われたなら、 form_driver は、この要求の結果を返します。
ユーザのウィンドウの外側がクリックされたか、またはマウスイベントがフォーム要求に変換できなかったなら、 E_REQUEST_DENIED が返されます。
アプリケーション定義コマンド
2 つめの引数が印刷可能なものでも上記のあらかじめ定義された from リクエストのうちの 1 つでもない場合、ドライバは、それがアプリケーションに特有のコマンドで E_UNKNOWN_COMMAND を返すと仮定されます。アプリケーションで定義されたコマンドは、それらのあらかじめ定義されたリクエストの最大の値である、 MAX_COMMAND と比べて定義されるべきです。戻り値
form_driver は、次のエラーコードの 1 つを返します:- E_OK
- ルーチンが成功した。
- E_BAD_ARGUMENT
- ルーチンは、正しくないか範囲外の引数を検知しました。
- E_BAD_STATE
- ルーチンは、初期化または終了の関数から呼ばれました。
- E_NOT_POSTED
- form は、記入されていません。
- E_INVALID_FIELD
- フィールドの内容は、有効ではありません。
- E_REQUEST_DENIED
- form ドライバは、要求を処理することができませんでした。
- E_SYSTEM_ERROR
- システムエラーが生じた ( errno 参照)。
- E_UNKNOWN_COMMAND
- form ドライバコードは、未知の要求コードを合いました。