From: Seiichi S. <ss...@sh...> - 2004-04-11 14:19:43
|
佐藤です。 mlterm を uim に対応させました。 xim ブリッジ経由ではなく libuim の API を直接叩いてます。 ./configure --enable-uim で make できます。デフォルトでは disable です。 追加したオプションは --uim(=bool) : use uim [false] --uimengine=value : uim conversion engine [none/anthy/py/hangul2/viqr/...] で、設定ファイル main では --uim が use_uim、--uimengine が uim_engine になります。xim との共存は考慮されてないので、uim を使 う時は --xim または --openxim オプションで xim を切ってください。 例えばコマンドオプションであれば $ mlterm --xim false --uim false --uimengine prime ~/.mlterm/main であれば use_xim = false use_uim = true uim_engine = anthy としてください。また、設定プロトコル 5379, 5380 にも "uim_engine" を加えたので echo -e "\033]5379;uim_engine=skk\007" などとすれば変換エンジンを動的に切替えられます。 ~/.mlterm/menu に "Uim" { "tcode" "uim_engine=tcode" "anthy" "uim_engine=anthy" "prime" "uim_engine=prime" "canna" "uim_engine=canna" "tutcode" "uim_engine=tutcode" "skk" "uim_engine=skk" "viqr" "uim_engine=viqr" "hangul2" "uim_engine=hangul2" "hangul3" "uim_engine=hangul3" "romaja" "uim_engine=romaja" "ipa" "uim_engine=ipa" "py" "uim_engine=py" } を追加すれば mlterm-menu で変換エンジンが 切替えられて幸せかも。 window がひとつの場合に、変換エンジンを切替ると落ちるので、エンジ ン切替えは window がふたつ以上の時だけにしてください。これは uim のバグによるものです。修正は http://lists.sourceforge.jp/mailman/archives/anthy-dev/2004-April/000738.html で投げて既に取り込んでもらえたので、uim の次のリリースでは解決し ていると思います。 既知の問題として uim のモードが直接入力に戻らない場合があります。 .xsession などで環境変数 LIBUIM_ENABLE_EMERGENCY_KEY を設定してお けば shift + backspace で逃げられますので、mlterm で uim を使う場 合は LIBUIM_ENABLE_EMERGENCY_KEY の設定を強くお薦めします。設定す る値はなんでもいいみたいなので yes とか enable とか適当に。別の回 避策として window を閉じてから pty を別の window に繋ぎ直せば uim の入力モードがクリアされて元に戻るかもしれませんがまだ試していま せん。 未確定文字列(preedit)描画は x_screen.c の draw_preedit_str() でやっ てます。一文字づつ draw_str() に渡すだけという酷い作りなので、将 来的には iiimf とかも視野に入れて書き直したいです。受け狙いで縦書 きにも対応してますのでよかったら試してみてください。結構笑えると 思います。 候補窓(candidate window)は uim 付属の uim-helper-candwin-gtk プロ グラムを使ってます。自前で候補窓を持てば gtk へ依存しなくて済むし、 mlterm のフォント設定がそのまま使えたりして嬉しいのですが、今回は 見送りました。 uim-helper-candwin-gtk は EUC-JP 決め打ちなので py (GB-18030) の候補が正しく表示されないのですが、直すのは簡単なので uim の開発元にお願いするつもりです。 開発者向けにもう少し中身の説明をしたかったのですが 眠いのでまた今度にします。 -- Seiichi |