MiniGUI日本語IME
履歴閲覧: 最新 2004/12/21 2003/09/02 {2003/09/02[差分表示]} 2003/09/02 2002/11/07
IME全体の差し替え + 外部のskkserv / OpenPOBox serverの利用、という形で、MiniGUI用の日本語IMEを作りました。
会社業務でのプロジェクトなのですが、社内的に許可は取れているので公開します(libminigui-1.2.2-imeujis.patch)。
ライセンスとか考えるのが面倒で放置中です。まあ、BSDライセンス相当で。
方針案
-
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
(* プリプロセッサで殺されている?)