KIHARA Hideto
deton****@m1*****
2007年 5月 10日 (木) 22:16:20 JST
uim-1.4.1のtutcode.scmに部首合成変換と交ぜ書き変換機能を追加しました。 http://www1.interq.or.jp/~deton/tutcode/uim-tutcode-20070510.tar.bz2 * 部首合成変換 ("シ"+"談"→"淡"のように漢字の部首を組み合わせる変換) 前置型のみ実装しています。 再帰的な部首合成変換も可能です。(例:▲▲七上→▲虍リ→劇) 部首合成のアルゴリズムはtc-2.1のものです。 * 交ぜ書き変換 ("か定"→"仮定"のように漢字交じりの読みからのかな漢字変換) 単純な前置型交ぜ書き変換ができます。 交ぜ書き変換辞書はtc2と同じ形式(SKK辞書と同様の形式)です。 skk.scmから、かな漢字変換に関係する部分を取り込んで実現しています。 ** 交ぜ書き変換辞書(例:/usr/local/share/tc/mazegaki.dic)へのアクセスは libuim-skk.soの機能を使っています。 そのため、学習機能もSKKと同様の動作になります: 確定した候補は次回の変換から先頭に来ます。 確定した候補は個人辞書(~/.mazegaki.dic)に保存されます。 ** 活用する語の変換は自動的には行いません。 読みに明示的に"―"を付加して変換してください。 ** 交ぜ書き変換関係の未実装の機能 - 後置型交ぜ書き変換 - 交ぜ書き変換辞書への登録・削除、 - 読みを伸ばしたり縮めたりする機能、読みの補完機能 - 候補選択ウィンドウの使用 * uim-tutcodeで、T-Code等のコード表も使えます。 uim-pref-gtk等で設定するか、~/.uimで以下のように設定してください。 (define tutcode-rule-filename "/usr/local/share/uim/tcode.scm") (define tutcode-mazegaki-start-sequence "fj") (define tutcode-bushu-start-sequence "jf") * vi使用時の利便性のため、ESCキーでTUT-Codeをオフにする設定を追加: tutcode-use-with-vi? # {anthy,canna,mana,skk}-use-with-vi?やbyeoru-esc-turns-off?と同様 * Dvorakキーボードを使うかどうかの設定を追加: tutcode-use-dvorak? (TUT-Code/T-Codeではキーの値ではなく、 キーボード上のキーの位置の情報(キー番号)を使います。 つまり、QwertyでもDvorakでも同じ指の動きで漢字が入力できます。) 現状のuim-tutcodeのコード表はQwertyで記述しており、 Dvorak使用設定時にはこの表をDvorak用に変換して登録するようにしました。 (例:Qwertyでのキーqの位置にはDvorakでは'があるので表中の"q"を"'"に変換) # tutcode.scmの前段階でキー番号への変換処理を入れる方が自然かもしれません。 * インストール・設定方法 1.以下の5ファイルを、uimの*.scmがある場所(例:/usr/local/share/uim)に 置いてください。 tutcode-bushudic.scm tutcode-key-custom.scm tutcode.scm tutcode-custom.scm tutcode-rule.scm 2.交ぜ書き変換辞書ファイルのパスをuim-pref-gtk等で設定するか、 ~/.uimで以下のように設定してください。 (define tutcode-dic-filename "/opt/sfw/share/tc/mazegaki.dic") デフォルトでは、/usr/local/share/tc/mazegaki.dic あたりになります。 交ぜ書き変換辞書はtc2<http://openlab.jp/tcode/tc2/>に含まれるものと 同じ形式の辞書を使ってください。 * 変更点や実装上考慮した点 ** TUT-Codeのコード表をtutcode.scmから分離してtutcode-rule.scmを作成。 他の漢字直接入力(T-Code,Try-Code,TT-Code,G-Code等)でも 交ぜ書き変換や部首合成変換を使えるようにするため。 ** 交ぜ書き変換はlibuim-skk.soを使用。 交ぜ書き変換辞書の形式がSKK辞書と同様の形式なので、流用が可能なため。 ただし、学習動作がSKKの動作になるが、あまり問題にならないはず。 ** 交ぜ書き辞書はSKKの共用辞書としてアクセスする設定をデフォルトにした。 交ぜ書き辞書はもともと個人ごとに作る辞書なので、 SKKの個人辞書として設定するのが自然だが、メモリ使用量が増えてしまうので。 ** 部首合成変換辞書をtutcode-bushudic.scmとして作成。 C言語で実装するよりもSchemeで実装する方が楽そうだったので。 ただし、変換が少し遅い印象も。 ** ~/.uimでのコード表の一部変更の方法を変更。 以下のようにtutcode-rule-set-sequences!を使ってください。 (tutcode-rule-set-sequences! '(((("w" " "))("〜")) ((("s" " "))("―")))) TUT-Codeでは記号部分の割り当ては変更するのが前提になっているので、 ~/.uimでの設定を容易にするためにこの手続きを用意しました。 * TODO ** 一覧表からの記号入力 ** 交ぜ書き変換候補選択の強化(候補選択ウィンドウを使うようにする) ちなみに、tc2に合わせるなら以下のようになりますが、優先度は低いです。 候補数2 △{勘定,鑑定} 候補数10以下 △[- 泡 阿波 粟] - - [- - - -] 候補数11以上 (仮想鍵盤ウィンドウで以下のように表示) - - - - - - - - - - [孔 幸 厚 黄 ] 逅 鈎 [ 肛 浩 袷 恰] [頁 煌 候 稿 ] 項 耕 [ 膠 淆 功 侯] [- - - - ] - - [ - - - -] (1/5) ** ヘルプ機能(仮想鍵盤表示/ストローク表表示/文字ヘルプ) (漢索窓相当の独立アプリ?) ** 後置型部首合成/交ぜ書き変換 ** その他tc2や漢直Win<http://www.sato.kuis.kyoto-u.ac.jp/~yuse/tcode/kw/> にある機能の実装 -- 木原 英人 / KIHARA, Hideto / deton****@m1***** http://www1.interq.or.jp/~deton/