Hiroyuki Komatsu
komat****@taiya*****
2004年 1月 5日 (月) 08:06:56 JST
小松です。 At Sun, 4 Jan 2004 03:24:02 +0900, TOKUNAGA Hiroyuki wrote: > > ・候補ウインドウの位置 > > 現状では候補ウインドウの位置は、カーソルの下にウインドウの左上が > > 来るようになっています。そのため、文字入力のたびにウインドウの位置が > > 移動してしまいます。プリエディットの左端に候補ウインドウの左上が > > 来るようにできますでしょうか。 > > これは難しいです。私もそのようになっていた方が嬉しいのですが、めんどく > さいので目をつむっています。 > > そもそもuimのAPIはどこになにを表示するかなどといった事に無関心で、現在 > カーソルの下に候補ウィンドウが表示されているのはたまたまです。 > (screen-uimは第一候補しか表示しませんし。) > > というわけで、方法としては候補ウィンドウをpreeditの左端に表示するか、 > カーソルの位置に表示するかを設定で変更できるようにするあたりが落としどこ > ろかなと思うのですが、immodule側から現在の設定を参照できる様にするあたり > と、preeditの左端の座標の取得あたりの作業がめんどくさそうです。とりあえ > ず後回しということで…。 コードを見てないで言っていますが、プリエディットの左端座標は、 プリエディット開始時点でのカーソル座標と同じでしょうから、 その値を保持しておけばいいと思います。 後回しなのは了解しました。 > > ・プリエディットのローマ字変換 > > 現状では uim 側でローマ字変換したひらがなを、PRIME に渡していただいて > > います。これを、入力されたアルファベットをそのまま渡すようにして > > いただけないでしょうか。PRIME では設定によってローマ字入力の他、 > > かな入力や T-code 入力からの変換も行うからです。 > > > > PRIME では "get_label<tab>[文字列]" コマンドで、設定に応じた > > プリエディットの返すようになっていますので、こちらを活用して > > いただければ幸いです。また uim で必要な機能があれば、 PRIME に > > 追加いたします。 > > 現状のget_labelのままではpreeditの編集が難しいので、カーソルの左と右で > 文字列を分けて扱えるようにしてもらえると嬉しいです。get_label<tab>[左側 > 文字列]<tab>[右側文字列]みたいな感じで。 > と思ったのですが、これではやはり小松さんの要求である「アルファベットを > そのまま渡して欲しい」と私の望みである「preeditを編集したい」は満たせな > いような気がします。これについては後でもうちょっと考えてみます。(もし私 > が忘れているようなら催促してください。) > > ちなみに、私はこの2つが同時に満たせるような仕様を考え付くまでは作業す > る気はありませんが、小松さんの要求だけ満たすようなpatchが送られて来たら > それを適用するぐらいの事はしますので、一刻も早くPRIME側でプリエディット > のローマ字変換をするようになって欲しい、と思う方は是非コードを書いて送っ > てください。 "get_label<tab>[左側文字列]<tab>[右側文字列]" は "get_label<tab>[左側文字列]", "get_label<tab>[右側文字列]" と 2回実行 するだけで OK だと思います。"get_label" は単にいわゆるローマ字かな変換 しか行いません。 それはさておき、私の「アルファベットをそのまま渡して欲しい」という 要望には以下の 2つの意図があります。 ・英単語を予測したい ・かな入力や T-Code 入力をしたい 「英単語を予測したい」というのは、例えば "pred" という入力から "predictive" を予測するものです。現状では "pred" が uim 側で "れd" (p は無視される) に変換されたものが PRIME に渡されています。 「かな入力をしたい」というのは、例えば "a" という入力が、 "あ (ローマ字)" なのか "ち (かな)" なのかを PRIME 側で判断したい ということです。現状では "a" は uim 側のローマ字変換によって "あ" として渡されています。 PRIME は入力文字列を一度変換してから、単語検索を行っています。 つまり英数字が渡されると、設定に応じてローマ字変換やかな変換を 行ってから、単語検索を行います。 で、プリエディットとの兼ね合いですが、問題なのは「英単語の予測」の方 であり、「かな入力」の方は問題ないと考えています。現状の uim は 1. ユーザの入力 2. uim によるローマ字変換 3. PRIME に渡す だと想像しています。これを 1. ユーザの入力 2. uim から PRIME::get_label の実行による文字変換 3. PRIME に渡す に変更していただければ、かな入力は可能になると思います。 変換文字列をデリミタ入り (= リスト) で返す必要がありましたら、対応します。 > suikyoがrubyじゃなければ、uimでも使いたいんですけどねぇ…。 C or C++ で、でしょうか? それとも Scheme? -- 小松弘幸 ----------------------- http://taiyaki.org/