Second Life Viewer の Linux 版は SDL (1.2) を使っています。SDL は、XIM に対応していることになっていますが、現在 (SDL 1.2.11) の SDL の実装は、XIM の使い方がメチャメチャで、ximcp ベースの入力は動作しません。つまり、SL Viewer の問題というよりは、SDL の問題のようです。
そこで、SDL の中にあるイベントハンドラ (というか、X Event を SDL Event にマップする一種のコンバータ) を書き直しており、なんとなく日本語入力ができるようになっているのですが、多数問題が残っています。
- 矢印キーがアプリに伝わらない。
- キーのオートリピートをまともに扱えていない。
- 長いテキスト (漢字かな交じりで100文字程度以上) を一気に確定すると文字が抜ける。
- フルスクリーンになったとき、(IMのon/offに係わらず) キー入力が一切できない。
最初の件は原因がわからず困っています。矢印キーを運ぶ KeyPressイベントが、XFilterEvent で消費されなかったときに、Xutf8LookupString に渡すと、なぜか Xutf8LookupString が status として XLookupNoneを返す (本来は XLookupKeySymが返るはずなのに) ところまでわかりましたが、なぜこうなるのかがわかりません。
あとの三つは、原因がわかっていて、だいたいどんな感じに直せばいいかの見当はついているのですが、既存の SDL のコードをできるだけ活かしながら修正しようとして、それなりに苦しんでいます。
最近のコメント