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コア依存関数だが、書き換えは楽そう。 -
imeIsEffective?IME
IMEの稼働判定。ベタベタなIMEコア依存関数だが、書き換えは楽そう。 -
writemsg
単純なコールバックメッセージ関数。対象アプリに入力文字を送る。 -
outchar
単純なコールバックメッセージ関数。対象アプリにキーイベント(MSG_KEYDOWN/MSG_KEYUPのペア)を送る。 -
IMEWinProc?
IMEオブジェクトのコア。メッセージに対し対応プロシージャを呼び出す。
(hzinputに依存したコードが数箇所ある。) -
InitIMEWinCreateInfo?
IMEオブジェクトの初期化前処理関数。そのまま流用可能。 -
IMEWindowEx?
IME初期化関数。 -
IMEWindow
(* プリプロセッサで殺されている?)