September 13, 2008

XIMプロトコルの闇

XIMプロトコルにはトリガーキーをライブラリ側へあらかじめ通知することできる。最近の実装ではこれらのイベントフローを使わずに常にキーイベントをすべてXIMサーバ側にforwardさせ、然るべきキーを受け取ったらpreedit開始/終了などのようにやっているようだけれど。
このトリガーキーを通知するイベント、XIM_REGISTER_TRIGGERKEYSというイベントなのだけど、次のように解説される:

Using the Dynamic Event Flow model, an IM Server sends
XIM_REGISTER_TRIGGERKEYS message to the IM library before
sending XIM_OPEN_REPLY message. Or the IM library may sup-
pose that the IM Server uses the Static Event Flow model.
まあここまではへえそうなんだ、で済むのだけれど、問題はそのフォーマット:

    XIM_REGISTER_TRIGGERKEYS (IM Server -> IM library)
2 CARD16 input-method-ID
2 unused
4 n byte length of on-keys
n LISTofXIMTRIGGERKEY on-keys list
4 m byte length of off-keys
m LISTofXIMTRIGGERKEY off-keys list

input-method IDってXIM_OPEN_REPLYで初めて通知される。つまり先にこっちを送ると宛先が不明になる。実際このような挙動をする実装のパケットを除いてみるとinput-method IDは0となっている。まあ0以外送りようがないわな。
ちなみに、リファレンス実装に近いkinput2のソースコードには興味深いコメントがある:

/*
* Notify conversion trigger keys.
*
* Note:
* The spec says that XIM_REGISTER_TRIGGERKEYS message should
* be sent to the client bofore XIM_OPEN_REPLY message, in
* order to use dynamic event flow model. However, this
* does not work with current Xlib implementation. So we
* send XIM_REGISTER_TRIGGERKEYS just after XIM_OPEN_REPLY,
* which works fine.
*/
どの実装ならあの仕様は動くんだろう?

[Update: 2008-11-05] しばらく更新してないのでお茶濁しに。XIM_SET_EVENT_MASKの説明にこんな記述がある。


If input-context-ID
is set to zero, the default value of the input-method-ID
will be changed to the event masks specified in the request.

まあXIM_REGISTER_TRIGGERKEYSも同様に、ってことなんだろう。にしても0しか送りようがないんだからだったら初めからいらんだろう、ってのが正直な感想だけど。

August 23, 2008

libgxim

GObjectベースのXIMプロトコルライブラリです。

http://code.google.com/p/libgxim/

コアな部分はだいたいできていますが、これ使ってサーバないし、アプリケーション側で何かをするにはまだ実装が足りてません。当面の目的はimsettingsのXIM部分の切り替えに使うために書いてます。ただの垂れ流しだと切り替えた瞬間にアプリがフリーズとかあったんで。
Google Groupsにグループを作成したので、宣伝も兼ねてblogに書いてみました。

XIMプロトコルのproxy?部分のコードに興味のある人はこちらからどうぞ。

August 12, 2008

Re:「コミッタは安易に任命できない」が積極的に名乗り出るのは歓迎

亀田さんのblogところより。

記事読んでみたけど、ケースバイケースかなあ。まあ誰かに意見主張を押し付けるものでもないけれど、気になったのは、「なんでそんなにコミッタになりたいの?」ってことかな。コミッタにしかできないことなんて、直接コードをVCSにブチ込めるってだけのことで、他は誰にだってできること。他に違いなんてないよね、だってそれがOSSなんだから。
パッチ入れてもらうのにやりとりが面倒?パッチがrejectされた?開発者側になんら欠陥や落ち度がないとは言い切れないけれども、そういうのに煩わしさを感じるからコミッタになりたいって人は遅かれ早かれそのプロジェクトから去らざるを得なくなるんではないのかなあ。パッチが放置?…まあ時々あるよね。ともあれ、「コミッタになりたい理由」ってすごく興味深い。

どのタイミングでコミッタとしての権利を誰かに付与するのかは人それぞれだろうけど、先に与えようが、ちょっとした成果で与えようが、みっちりこき使ってから与えようが、結局はその人をどこで信頼するか、ってことなんじゃないのかねえ。プロジェクトが小さいうちは、「そこそこできる人なら誰でもいい、とりあえず軌道に載せるためには人手が必要」とか、大きくなってきたら、場合によっては技術力を優先するかもしれないし、協調性も兼ね備えてもらいたいと思うかもしれない。みたいな+αはあるだろうけど。あからさまにできない人をコミッタにするとか、破戒の限りを尽くすような人にはコミッタにしたりしないよね。

まあ、チラ裏だけど。

July 18, 2008

Google bookmark feature on Google Toolbar doesn't work

I'm facing this issue since Firefox 3 and Google Toolbar for that has been released. when logging in with my Google account or clicking a star on the toolbar, I see an error message on the error console. that says,

Cc['@google.com/toolbar/bookmark-wrapper;1'] is undefined
I don't know what happened, What I can tell is this feature worked on Firefox 2. so trying to google it and amazingly there are so many people who is facing the same problem and there are a lot of false alarm about its solution, at least with Firefox 3 or on Fedora 9.

  • installing libstdc++.so.5 would helps.
Apparently it's not. the latest Google Toolbar doesn't even require libstdc++.so.5. but surely libstdc++.so.6.

% readelf -d extensions/\{3112ca9c-de6d-4884-a869-9855de68056c\}/components/libgoogletoolbar.so | grep libstdc
0x00000001 (NEEDED) Shared library: [libstdc++.so.6]
So this wouldn't help at all.
  • that works fine after creating new profile.
That didn't even help me, unfortunately.

So I have given up to investigate this issue and just installed GBookmarks add-on. I'm happy with it now.

[Update: 2008-07-22] Google toolbar 3.1.20080605L works fine on Debian sid, but Iceweasel 3.0.1. I'm missing something or something went wrong. I'd believe Firefox and Iceweasel doesn't make so much difference. anyway Google toolbar doesn't work yet on Fedora 9.
[Update: 2009-09-24] I have to update to not let people get confused... Once updating to Google toolbar 5.0.20090823L (I'm not sure which version exactly fix this since but anyway), this feature works fine again on even Firefox 3.5.

July 2, 2008

Flash 9で日本語が表示されない件

しばし表示されなくて困ってた。今まではxfsの設定ファイルが必要でそこからフォントパスをたどってもげもげとかだったのが、fontconfigに移行した、ところまでは情報として入手できてたけど、Pangoもリンクしててなおさら不自然極まりない挙動に頭を抱えてたが、Pangoはあまり直接関係はないみたいだ。fontconfig単体だけ使った場合には非常にありがちな問題なのだけど、sans-serifから見つけたフォントをそのまま使いつづけるため、最初に掴んだフォントが欧文フォントだと日本語とかがでなくなってしまうということらしい。.fonts.confをいじって日本語フォントを最初につかませるように変えたら問題なくなった。

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
...
<alias>
<family>sans-serif</family>
<prefer>
<family>VL Gothic</family>
</prefer>
</alias>
...
</fontconfig>