Main Page   Modules   Data Structures   Globals   Appendix  

入力メソッド (基本部分)
[シェル API]

入力メソッド用API. [詳細]

データ構造

struct  MInputDriver
 入力ドライバ用構造体. [詳細]
struct  MInputMethod
 入力メソッドの構造体. [詳細]
struct  MInputContext
 入力コンテクスト用構造体. [詳細]

変数: コールバックコマンド用定義済みシンボル.

入力メソッドドライバのコールバック関数において COMMAND 引数とし て用いられる定義済みシンボル (MInputDriver::callback_list 参照)。

MSymbol Minput_preedit_start
MSymbol Minput_preedit_done
MSymbol Minput_preedit_draw
MSymbol Minput_status_start
MSymbol Minput_status_done
MSymbol Minput_status_draw
MSymbol Minput_candidates_start
MSymbol Minput_candidates_done
MSymbol Minput_candidates_draw
MSymbol Minput_set_spot
MSymbol Minput_toggle
MSymbol Minput_reset

型定義

typedef MInputMethod MInputMethod
typedef MInputContext MInputContext
typedef void(* MInputCallbackFunc )(MInputContext *ic, MSymbol command)
 入力メソッドコールバック関数の型宣言.
typedef MInputDriver MInputDriver
 入力ドライバ用構造体.

関数

MInputMethodminput_open_im (MSymbol language, MSymbol name, void *arg)
 入力メソッドをオープンする.
void minput_close_im (MInputMethod *im)
 入力メソッドをクローズする.
MInputContextminput_create_ic (MInputMethod *im, void *arg)
 入力コンテクストを生成する.
void minput_destroy_ic (MInputContext *ic)
 入力コンテクストを破壊する.
int minput_filter (MInputContext *ic, MSymbol key, void *arg)
 入力キーをフィルタする.
int minput_lookup (MInputContext *ic, MSymbol key, void *arg, MText *mt)
 入力コンテクスト中のテキストの検索.
void minput_set_spot (MInputContext *ic, int x, int y, int ascent, int descent, int fontsize, MText *mt, int pos)
 入力コンテクストのスポットを設定する.
void minput_toggle (MInputContext *ic)
 入力メソッドを切替える.
void minput_reset_ic (MInputContext *ic)
 入力コンテクストをリセットする.

変数

MInputDriver minput_default_driver
 内部入力メソッド用デフォルトドライバ.
MSymbol Minput_driver
MInputDriverminput_driver
 内部入力メソッド用ドライバ.
MSymbol Minput_preedit_start
MSymbol Minput_preedit_draw
MSymbol Minput_preedit_done
MSymbol Minput_status_start
MSymbol Minput_status_draw
MSymbol Minput_status_done
MSymbol Minput_candidates_start
MSymbol Minput_candidates_draw
MSymbol Minput_candidates_done
MSymbol Minput_set_spot
MSymbol Minput_toggle
MSymbol Minput_reset
MInputDriver minput_default_driver
 内部入力メソッド用デフォルトドライバ.
MInputDriverminput_driver
 内部入力メソッド用ドライバ.
MSymbol Minput_driver

説明

入力メソッドは多様な文字を入力するためのオブジェクトである。入力メ ソッドはシンボル LANGUAGE と NAME の組によって識別され、この組によっ て入力メソッドドライバが決まる。入力メソッドドライバとはある入力メ ソッドを扱うための関数の集まりである。 入力メソッドには内部メソッ ドと外部メソッドの二通りがある。

処理の流れ

入力メソッド処理の典型的な処理は以下のようになる。


型定義

typedef struct MInputMethod MInputMethod
 

typedef struct MInputContext MInputContext
 

typedef void(* MInputCallbackFunc)(MInputContext *ic, MSymbol command)
 

入力メソッドから呼ばれるコールバック関数の型である。#IC は入力コン テクストへのポインタ、#COMMAND は関数が呼ばれるコールバックの名前 である。

typedef struct MInputDriver MInputDriver
 

MInputDriver は、入力メソッドを取り扱う関数を含む入力メソッドド ライバの構造体の型である。


関数

MInputMethod * minput_open_im MSymbol  language,
MSymbol  name,
void *  arg
 

関数 minput_open_im() は言語 language と名前 name に合致する入 力メソッドをオープンし、新たに割り当てられた入力メソッドオブジェク トへのポインタを返す。

この関数は、まず入力メソッド用のドライバを以下のようにして決定する。

languageMnil でなければ、変数 minput_driver で指されている ドライバを用いる。

languageMnil であり、nameMinput_driver プロパティを持 つ場合には、そのプロパティの値で指されている入力ドライバを用いて入 力メソッドをオープンする。name にそのようなプロパティが無かった場 合は NULL を返す。

次いで、ドライバのメンバ MInputDriver::open_im() が呼ばれる。

arg は、ドライバが参照できるように、構造体 MInputMethod のメンバ arg に設定される。

void minput_close_im MInputMethod im  ) 
 

関数 minput_close_im() は、入力メソッド im をクローズする。この 入力メソッド imminput_open_im() によって作られたものでなけれ ばならない。

MInputContext * minput_create_ic MInputMethod im,
void *  arg
 

関数 minput_create_ic() は入力メソッド im に対応する入力コンテク ストオブジェクトを生成し、 Minput_preedit_start, Minput_status_start, Minput_status_draw に対応するコールバック関 数をこの順に呼ぶ。

戻り値:
入力コンテクストが生成された場合、minput_create_ic() はその入力コ ンテクストへのポインタを返す。失敗した場合は NULL を返す。

void minput_destroy_ic MInputContext ic  ) 
 

関数 minput_destroy_ic() は、入力コンテクスト ic を破壊する。こ の入力コンテクストは minput_create_ic() によって作られたものでな ければならない。この関数はMinput_preedit_done, Minput_status_done, Minput_candidates_done に対応するコールバック関数を この順に呼ぶ。

int minput_filter MInputContext ic,
MSymbol  key,
void *  arg
 

関数 minput_filter() は入力キー key を入力コンテクスト ic に応 じてフィルタし、preedit テキスト、ステータス、現時点での候補が変化 した際にはそれぞれMinput_preedit_draw, Minput_status_draw, Minput_candidates_draw に対応するコールバック関数を呼ぶ。

戻り値:
key がフィルタされれば、この関数は 1 を返す。この場合呼び 出し側はこのキーを捨てるべきである。そうでなければ 0 を返し、呼び 出し側は、たとえば同じキーで関数 minput_lookup() を呼ぶなどして、 このキーを処理する。

int minput_lookup MInputContext ic,
MSymbol  key,
void *  arg,
MText mt
 

関数 minput_lookup() は入力コンテクスト ic 中のテキストを検索す る。key は関数minput_filter() への直前の呼び出しに用いられたもの と同じでなくてはならない。

テキストが入力メソッドによって生成されていれば、テキストは M-text mt に連結される。

この関数は、MInputDriver::lookup を呼ぶ。

戻り値:
key が入力メソッドによって適切に処理できれば、この関数は 0 を返す。 そうでなければ -1 を返す。この場合でも mt に何らかのテキストが生 成されていることがある。

void minput_set_spot MInputContext ic,
int  x,
int  y,
int  ascent,
int  descent,
int  fontsize,
MText mt,
int  pos
 

関数 minput_set_spot() は、入力コンテクスト ic のスポットを、座 標 (x, y )に 、高さ ascent、 descent で設定する。 これらの値の 意味は入力メソッドドライバに依存する。fontsize はpreedit テキスト のフォントサイズを 1/10 ポイント単位で指定する。

たとえば CUI 環境で動作するドライバは xy をそれぞれ列と行の 番号として用い、ascentdescent を無視するかもしれない。 また ウィンドウシステム用のドライバは xy をクライアントウィンドウ の原点からのオフセットをピクセル単位で表したものとして扱い、 ascentdescent を (x . y ) の列のアセントとディセントをピク セル単位で表したものとして扱うかもしれない。

mtpos はそのスポットの M-text と文字位置である。mtNULL でもよく、その場合には入力メソッドはスポット周辺のテキストに 関する情報を得ることができない。

void minput_toggle MInputContext ic  ) 
 

関数 minput_toggle() は入力コンテクスト ic に対応付けられた入力 メソッドをトグルする。

void minput_reset_ic MInputContext ic  ) 
 

関数 minput_reset_ic()Minput_reset に対応するコールバック関数 を呼ぶことによって入力コンテクスト ic をリセットする。これは実際は 入力メソッドを初期状態にシフトさせる。したがって、もし現在入力中の テキストがあれば、それはコミットされる。必要ならアプリケーションプ ログラムは minput_lookup() を読んでそのテキストを取り出せる。その 際、minput_lookup() の引数 KEYARG は無視される。


変数

MInputDriver minput_default_driver
 

入力ドライバ minput_default_driver は内部入力メソッド用のデフォル トのドライバである。

メンバ MInputDriver::open_im() は m17n データベース中からタグ < #Minput_method, language, name> に合致する入力メソッドを探し、 それをロードする。

メンバ MInputDriver::callback_list()NULL なので、プログラ マ側で責任を持って, 適切なコールバック関数の plist に設定しなくて はならない。さもないと、preedit テキストなどのフィードバック情報が ユーザに表示されない。

マクロ M17N_INIT() は変数 minput_driver をこのドライバへのポイン タに設定し、全ての内部入力メソッドがこのドライバを使うようにする。

したがって、minput_driver がデフォルト値のままであれば、minput_ で始まる関数のドライバに依存する引数 arg はすべて無視される。

MSymbol Minput_driver
 

MInputDriver* minput_driver
 

変数 minput_driver は内部入力メソッドによって使用されている入力メ ソッドドライバへのポインタである。マクロ M17N_INIT() はこのポイン タを minput_default_driver (<m17n.h> が含まれる時) または minput_gui_driver ( <m17n-gui.h> が含まれる時) に初期化す る。

MSymbol Minput_preedit_start
 

MSymbol Minput_preedit_draw
 

MSymbol Minput_preedit_done
 

MSymbol Minput_status_start
 

MSymbol Minput_status_draw
 

MSymbol Minput_status_done
 

MSymbol Minput_candidates_start
 

MSymbol Minput_candidates_draw
 

MSymbol Minput_candidates_done
 

MSymbol Minput_set_spot
 

MSymbol Minput_toggle
 

MSymbol Minput_reset
 

MSymbol Minput_preedit_start
 

MSymbol Minput_preedit_done
 

MSymbol Minput_preedit_draw
 

MSymbol Minput_status_start
 

MSymbol Minput_status_done
 

MSymbol Minput_status_draw
 

MSymbol Minput_candidates_start
 

MSymbol Minput_candidates_done
 

MSymbol Minput_candidates_draw
 

MSymbol Minput_set_spot
 

MSymbol Minput_toggle
 

MSymbol Minput_reset
 

MInputDriver minput_default_driver
 

入力ドライバ minput_default_driver は内部入力メソッド用のデフォル トのドライバである。

メンバ MInputDriver::open_im() は m17n データベース中からタグ < #Minput_method, language, name> に合致する入力メソッドを探し、 それをロードする。

メンバ MInputDriver::callback_list()NULL なので、プログラ マ側で責任を持って, 適切なコールバック関数の plist に設定しなくて はならない。さもないと、preedit テキストなどのフィードバック情報が ユーザに表示されない。

マクロ M17N_INIT() は変数 minput_driver をこのドライバへのポイン タに設定し、全ての内部入力メソッドがこのドライバを使うようにする。

したがって、minput_driver がデフォルト値のままであれば、minput_ で始まる関数のドライバに依存する引数 arg はすべて無視される。

MInputDriver* minput_driver
 

変数 minput_driver は内部入力メソッドによって使用されている入力メ ソッドドライバへのポインタである。マクロ M17N_INIT() はこのポイン タを minput_default_driver (<m17n.h> が含まれる時) または minput_gui_driver ( <m17n-gui.h> が含まれる時) に初期化す る。

MSymbol Minput_driver
 


このページの先頭

Main Page   Modules   Data Structures   Globals   Appendix  

mulemark mule-aist@m17n.org