[Scim-imengine-dev 1180] Re: oimとか制定しようと思います

Back to archive index

大力亮 ryo-d****@users*****
2006年 6月 24日 (土) 13:22:43 JST


Takuro Ashie wrote:
> 足永です。
>
> On Wed, 14 Jun 2006 00:15:33 +0900
> Yusuke TABATA <yusuk****@w5*****> wrote:
>
>   
>>> (あと、scim-bridgeの延命も...)
>>>       
>> scim-bridge内部のライブラリをscimのC言語APIに作り変えれば、
>> 使いたい人や使ってくれる人がそこそこいそうな気がしますが、
>> どうでしょうか?
>> (mltermのようにCで書かれたアプリにはCのAPIの方が良いような気がします)
>>     
>
> 確かに、次のステップとしてそこを目指すのは良いような気がします。
>
> SCIMのMLでは、最初のステップでの開発コストを絞りこんで確実に成果を出して
> もらうために「GtkIMContextのAPIをそのままWrapすれば良い」と言いました
> が、大力さんの予想以上の(失礼(^^;)頑張りのおかげで、そのレベルはどう
> やらクリアしつつあるように思います。
>
> 次なるステップとして、Jamesが言うようなClient用C APIをscim-bridgeで実装
> してしまうというのは良い題材かもしれません。すくなくとも数ヵ月前よりは現
> 実味を帯びてきているように思います。
>
> そこまでいかなくとも、単に今のscim-bridgeに候補文字列群を取得するプロト
> コル&C APIがあるだけでも、SCIMの適用可能範囲がぐっと広がると思うのです
> が、如何でしょう。

そこが、良く分からないのですが、SCIMに対応させたいがC++が不得手で
ソースを書くことができないという人が多数いるだろうということですか?
さらに押し進めていうと、Emacsクライアントを書く場合には
Elispのみで書きたいという人が多い、そういうことでしょうか?

実際、パネルの問題が解決できれば確かにこれは可能です。
UTF8の文字列通信が可能ならクライアントがCだろうがlispだろうが関係無い訳で、
やろうと思えば、現在のままでもlispでクライアントを組むことも可能です。

現在、scim-bridge-0.4に向けて考えているのは、preedit、lookup table、
panelのそれぞれを
クライアントからの要請により埋め込み式にか切り替えられるという仕組みです。
(現在は、preeditのみが切り替え可能で、いわゆるon the spot入力になるわけです)

パネル関連の通信プロトコルですが、考えているのはこんな感じのものです。

- update_panel_string パネルの文字列を設定する。

ここに表示文字列以上の情報も乗せる。
例えば、"[SCIM]/IMEngine/Anthy/InputModeanthy-henkan.png..."

- update_panel_attributes パネルの文字修飾を設定する。

修飾は元より、各部位の文字が何に対応するかも指定する。
例えば、
0 6 decorate bold -> "[SCIM]"の部分を太字にする。
13 17 property_tag 1 -> "/IMEngine/Anthy/InputMode"の部分はID 1のプロパ
ティーのタグに対応。
17 33 property_icon 1 -> "anthy-henkan.png"の部分はID 1のプロパティーの
アイコン。
...
という感じ。

ここで、パネルのプロパティーが選ばれると
イベントがエージェント通知され、パネルリスナーに転送される。
プロパティーIDからプロパティー名が検索され、
エージェントに通知という感じにすれば、どうにかなると思います。

ボタンやらラベルやらも必要なので、もうすこし色々考える必要が...
でもって、これに対応するscim-bridge-panel-moduleを新たに作る必要が...
...orz

とにかく、ここをどうにかできればパネルや候補選択はXと依存しなくなる訳です。
コンソール上でもパネルを表示でき、scim-emacs、scim-consoleも作れるように
なります。

そして、通信は先に述べたようにutf8の文字列通信でできるので、
相手がCだろうがlispだろうがschemeだろうが関係ありません。
(直接Cを使いたい場合はclient-commonを流用してくれという形にすればOKで
しょうか?)

で、ここまでくると、クライアントとエージェント間の依存関係も
ほとんどなくなるため、クライアントはscimと容易に分離できるようになります。
しまいには、uim-bridgeとかも...というのが私の企みの全容なのです。
oimは更にその先なので、火星移住計画レベルの話と思って頂ければ幸いです。

大力亮 <ryo-d****@users*****>



Scim-imengine-dev メーリングリストの案内
Back to archive index