MiniGUI日本語IME
履歴閲覧: 最新 {2004/12/21[差分表示]} 2003/09/02 2003/09/02 2003/09/02 2002/11/07
IME全体の差し替え + 外部のskkserv / OpenPOBox serverの利用、という形で、MiniGUI用の日本語IMEを作りました。 会社業務でのプロジェクトなのですが、社内的に許可は取れているので公開します。 @patch [libminigui-1.2.2-imeujis.patch +This is patch to MiniGUI version 1.2.2 for add japanese input method. +It replaces imegb2313 to imeujis. This patch under Modified BSD license. + ファイル名を見ればわかるように、MiniGUI 1.2.2用のpatchです。 以降のバージョンへの追随は行っていません。あしからず。 ライセンスとかは考えるのが面倒で放置中です。まあ、BSDライセンス相当ということで扱ってください。 -@メンテナンス状況 +@メンテナンス状況 / status +Now, No maintenance about this patch. 放置のために公開中、と考えてください。 +If you want some support or service about this patch, please contact to [Time Intermedia Corp. こいつの再改造とかなんとかの仕事の依頼がある場合は[会社までどうぞ。 個人的にynakataにコンタクトしてもらっても構いませんが、ある程度以上のボリュームの話になるようでしたら(仁義の問題もありますし)会社仕事とさせてもらうことになると思います。 @作成時のメモ 方針案 * IME全体の差し替えによる日本語IME化 (IMEWinProc以下を派手に書き換えて、統一性を気にも留めない):結局この方法を取りました。 * IME自体のマルチリンガル化 + 既存IMEコアのパッケージ化 + 日本語コアの作成 (IMEWinProcごと書き換えて、全体をモジュール化?) * IMEへの日本語IME機能の追加 & 切り替え可能化 (hz_input_init/hz_filter/IME上位層の書き換え&日本語部分の追加) 推測してたよりはIMEがベタベタな作りをしている。とりあえずは上方層だけをどうにか分離して、強引に日本語IMEを突っ込んでいくのがよいか? IMEの切り替えはこの際無視。そのうち何とかなるだろー、ってなもんだ。 hzinput.cの各関数についての覚え書き * load_input_method hzinput専用? * free_input_method hzinput専用? * ClrIn 入力状態のクリア関数 * FindAssociateKey hzinput専用? * load_phrase hzinput専用? * putstr hzinputの部分確定関数? hzinput専用? * epunc2cpunc hzinput専用? * FindMatchKey hzinput専用? * FillAssociateChars hzinput専用? * FillMatchChars hzinput専用? * hz_filter Pinyinとの振り分けを兼ねる? * DispSelection IME上位層? * unload_input_table hzinput専用? * toggle_input_method IME上位層。 * toggle_half_full IME上位層。 * toggle_punc IME上位層。 * hz_input_init Pinyinとの振り分けを兼ねる? * hz_input_done hzinput専用? * set_active_input_method IME上位層。 * refresh_input_method_area IME上位層。 * IntCode_Init hzinput専用? * IntCode_FindMatchKey hzinput専用? * IntCode_FillMatchChars hzinput専用? * intcode_hz_filter hzinput専用? * imeSetStatus 内部状態変更用の高レベルAPI? Methodの変更部分あり。 * imeGetStatus iStatusCodeによる判定。ベタベタなIMEコア依存関数だが、書き換えは楽そう。 * imeIsSpecialChar chrの改行文字判定? ベタベタなIMEコア依存関数だが、書き換えは楽そう。 * imeIsSpecialKey scancodeの判定。ベタベタなIMEコア依存関数だが、書き換えは楽そう。 * imeIsEffectiveIME IMEの稼働判定。ベタベタなIMEコア依存関数だが、書き換えは楽そう。 * writemsg 単純なコールバックメッセージ関数。対象アプリに入力文字を送る。 * outchar 単純なコールバックメッセージ関数。対象アプリにキーイベント(MSG_KEYDOWN/MSG_KEYUPのペア)を送る。 * IMEWinProc IMEオブジェクトのコア。メッセージに対し対応プロシージャを呼び出す。 (hzinputに依存したコードが数箇所ある。) * InitIMEWinCreateInfo IMEオブジェクトの初期化前処理関数。そのまま流用可能。 * IMEWindowEx IME初期化関数。 * IMEWindow (* プリプロセッサで殺されている?)