Kenichi Handa
handa****@m17n*****
2005年 2月 23日 (水) 21:02:08 JST
In article <20050****@xem*****>, TOKUNAGA Hiroyuki <tkng****@xem*****> writes: >> > あと、latin-post/latin-preなどが使えない問題もr649で修正しておきまし >> > た。 >> >> こちらは私の環境では正常に動きません。 >> 割り付け表を見ながら試用しましたが、 >> http://www.m17n.org/m17n-lib/m17n-docs/latn-post.png >> http://www.m17n.org/m17n-lib/m17n-docs/latn-pre.png >> d/ (post) や /a (pre) と入力しても変換されません。 > すいません、実際に特殊な文字が入力できるかまでは確認してませんでした。 > チェックしてみたのですが、明らかにlibuimの仕様の問題ではありませんね。 > というわけで、m17nlib.scmのどこかがおかしいのだと思いますが、どこら辺 > が悪いのか、よくわかりませんでした。予想以上に難しそうなので、とりあえず > 修正は後回しにしてbeta1をリリースしたいと思います。 0.4.6beta2/uim//m17nlib.c をちらっと見てみたのですが、少なく とも以下の修正が必要です(Copyright AISTのコードを UIM に入 れられるのかどうか分からないので、あえてパッチは送りません が)。 (1) find_im_by_name は im_array[i].lang が NULL の時は sprintf (buf, "%s", im_array[i].name) をしないと、 get_input_method_name () の処理と整合性が取れません。この修 正で少なくとも latin-post/pre が使えるようになるようです。 (2) remap_lang_name () は自前でテーブルを持っていますが、 m17n-lib が新たな XX-kbd.mim とかを追加した場合、テーブルに "XX" が登録していないと NULL を返すので、 xx-kdb.mim とか yy-kbd.mim とかが全部 m17n-kbd という名前に縮退してしまいま す。 msymbol_get (im->language, Mlanguage) を使う方が良いと 思います。例えば msymbo_get (msymbol ("ja"), Mlanguage) は msymbol ("Japanese") を返します。 それから im->language が Mt の場合は最初から言語指定なしとし て処理して結構です。 以上の変更で latn-post/pre が起動できるようになります。ただ、 動作がどうもおかしく、たとえば "a'" と打つと a-grave が preedit として表示されますが、続いて "f" とうつと a-grave は commit されますが、 "f" が無視されるようです。これはまだ原因 がわかりません。 その他、気になるコードは、 (3) register_callbacks () がなんども呼ばれていますが、uim が 使っているのは m17n-lib の internal input method のみですの で、 minput_driver->callback_list に各 callback 関数を一度だ け mplist_put で設定すれば大丈夫です。 (4) commit () 中に /* To avoid a bug of m17n-lib */ ic->candidate_to = 0; というコードがあるのですが、これはどうゆうバグでしょうか? (5) ic_array[id].old/new_candidates があるんですが、 ic->candidat_list の plist をそのまま毎回使った方が速いと思 うのですが。 −− 半田@AIST handa****@m17n*****