本を読む

読書やコンピュータなどに関するメモ

Linux版Second Lifeクライアントで日本語入力

 Linux版Second Life Viewerでは、チャットなどでSCIMからの日本語入力ができない。SCIMが立ち上がりもしない。そこで、ちょっと調べてみた。

追記(2007.8.5):バージョン1.18.1(2)からは日本入力に対応したライブラリが標準添付されたようです。

 以下、OSがUbuntu Linux 7.04、Second Life Viewerが1.17.0(12)、gccが4.12の環境で試した。

ソースを調べる

 Second Life Viewerはソースが公開されている。まずはダウンロードして中を見た。

 ソースの中で、Windows/Mac/Linuxのウィンドウやキーなどの環境依存の部分は、llwindowディレクトリの中にまとめられている。この中では、ベースになるLLWindowクラスやLLKeyboardクラスをまず定義し、それを各環境固有のクラスで継承することで、呼出し側に影響を与えないように設計されているようだ(Template Methodパターン)。

 Linuxでのキーまわり処理は、SDLを使ったLLKeyboardSDLクラスに書かれている。そこで、llkeyboardsdl.cppを見ると、SDLのキーイベントを直接処理して文字列を作り上げていることがわかる。SDLにはIM関連のイベント処理がないようで、それが原因でIMが使えないらしい。

SDL-IMを試す(失敗)

 IMに対応したSDLがないかと調べてみたところ、SDL-IMというパッチがあることがわかった。さっそくビルド。

$ wget http://sdl-im.csie.net/download/SDL_im-1.2.8-20070327.diff.gz
$ wget http://www.libsdl.org/release/SDL-1.2.8.tar.gz
$ tar zxvf SDL-1.2.8.tar.gz
$ cd SDL-1.2.8
$ zcat ../SDL_im-1.2.8-20070327.diff.gz | patch -p1
$ ./configure
$ make

 ちなみに私の環境では、automake1.8、x11proto-xext-dev、libxext-devを追加インストールする必要があった。

 Linux版Second Life Viewerでは、libディレクトリの下にlibSDL-1.2.so.0が含まれている。secondlifeスクリプトの中で、LD_LIBRARY_PATHを設定することで、含まれるほうのライブラリを優先的に使うという仕組みだ。そこで、できあがった.soをSeond Life Viewerのlibディレクトリの下にlibSDL-1.2.so.0という名前でシンボリックリンクしてやる。

 さて、Second Life Viewerを起動。

$ XIM=SCIM ./scondlife

 チャット入力で[半角/全角]キーを押すと、SCIMが立ち上がった。が、変換まではできるものの、そこからアプリ側に日本語テキストが渡らない。失敗のようだ。

別のパッチを試す(成功)

 さらに調べてみると、まさにSecond Life Viewer向けにを主なターゲットとしてSDLをハックしてIMを使えるようにした人がいた。SDL 1.2.11ベースだ。

 さっそくビルド。

$ wget http://alissa-sabre.cocolog-nifty.com/files/SDL-IM-20070525.zip
$ wget http://www.libsdl.org/release/SDL-1.2.11.tar.gz
$ unzip SDL-IM-20070525.zip
$ tar zxvf SDL-1.2.11.tar.gz
$ cd SDL-1.2.11
$ patch -p0 < ../IM-20070525.patch 
$ ./configure
$ make

 改めてlibSDL-1.2.so.0のシンボリックリンクを張りなおして、Second Life Viewerを起動。が、「window creation error」とエラーが表示されて、起動できない。

 そこで、Ubuntuのlibsdl1.2-debian-alsaのソースをapt-get sourceで取り寄せ、debian/controlファイルでBuild-Depends:に指定されているパッケージをすべてインストールした。そのうえで改めて、パッチのあたったSDLのソースで./configureしてmake。

 このバージョンでSecond Life Viewerを起動したら、今度は無事起動、SCIMも起動でき、そこから日本語を入力できた。

追記(2007.7.11):Alissa Sabreさんのパッチが本家SDLで取り込まれたようで、ご本人によるインストール方法の解説が書かれています。これは、Linux版Second Life Viewerユーザー必読ですね。

コメント

取り上げていただいたパッチですが

Alissaです。取り上げていただいたSDLへのパッチですが、これはSecond Life用に作ったものですが、「SL向けのハック」ではないつもりです。SDL汎用、というか、X11上でSDLアプリケーションを動かすと、普通は日本語入力できないはずなのですが、それが、どのアプリケーションであっても入力可能になるように作りました。

ただし、SDLアプリケーションで (アプリ側が) 非ASCIIテキストを扱えるようになっているものは少ないと思うので、絵に描いた餅かもしれませんね…。

あと、Ubuntuのパッケージで、SDLが依存するものを追加インストールする必要があった、とのことですが、日本語入力ができないとはいえ、もともとSL Viewerに添付されていたlibSDL-1.2.so.0で起動できていたんですよね? 何が不足していたのか、不思議、というか、興味あります。よろしければ具体的に何が不足だったのか教えていただけませんか。

修正とモジュール

Alissaさん、ご訪問いただき、また、すばらしいパッチを作っていただき、ありがとうございます。
返事が遅くなって失礼しました。

パッチの説明の部分、ちょっと修正しました。

追加したモジュールは、だいたいがlib*-devです。これでよくコンパイル通った(通ってなかった?)ものだ、という感じです。念のため、下に一覧をつけます。

libxext-dev
gawk
libice-dev
libsm-dev
x11proto-render-dev
libxrender-dev
x11proto-fixes-dev
libxfixes-dev
libxcursor-dev
libexpat1-dev
zlib1g-dev
libfreetype6-dev
libfontconfig1-dev
libxft-dev
libxi-dev
x11proto-xinerama-dev
libxinerama-dev
libxmu-headers
x11proto-randr-dev
libxrandr-dev
libxt-dev
x11proto-video-dev
libxv-dev
diffstat
libslang2-dev
libncurses5-dev
libaa1-dev
libartsc0
libqt3-mt
libarts1c2a
libglib2.0-dev
libartsc0-dev
libasound2-dev
libaudio-dev
libaudiofile-dev
libesd0-dev
libogg-dev
libxmu-dev
libjpeg62-dev
liblcms1-dev
libmng-dev
libpng12-dev
libgpg-error-dev
libgcrypt11-dev
libtasn1-3-dev
libpopt-dev
libopencdk8-dev
liblzo-dev
libgnutls-dev
libcupsys2-dev
libqt3-headers
qt3-dev-tools
libqt3-mt-dev
libvorbis-dev
libarts1-dev
libdirectfb-extra
libdirectfb-dev
nasm
quilt
x-dev

追加のモジュール

追加の depend 調べて下さってありがとうございます。

しかし … すごーく多いですね。不思議なのは、これを追加する以前には、コンパイルは完了するが起動すると動かないという状況だったんでしたよね? *-dev というのは、おそらく「開発に必要なファイル」を集めたものだと思うので、実行時のトラブルに繋がるとは考えにくいのですが。

他の方からも、同様の報告をいただいていまして、気になっているのですが、うーん、これだと相変わらずよくわかりません。どうしようかな…。

新しいLinux版のテストにおつきあいねがえませんか?

こんにちは。本日は宣伝に立ち寄らせていただきました。(^_^)

当時は、SDLを直して「とにかく日本語入力できる」ことを目指していたのですが、その後、もうちょっと「ちゃんと」日本語入力できるようにしようとソースをいじっていました。これが、そろそろ他人にお見せできるレベルになったので、テスタを募集しています。

http://alissa-sabre.cocolog-nifty.com/blog/2007/11/linux_onthespot_ca4d.html

にありますので、もしもお時間がありましたら試していただけませんか。(あまり反響がなくて困っています…。)

Re: 新しいLinux版のテストにおつきあいねがえませんか?

Alissa Sabreさんこんにちは。ご連絡ありがとうございます。

最近忙しかったりしてSecond Lifeを触ってなかったのですが、これを機に試してみますね。

最近のリリースでも

最近の1.20 RC版でも取り入れられていないですね。最近、家族の要望でSecond Lifeさわらせろということで入れていたのを使わせたのですが、環境がDebian sid+ATOKX3ということもあって、いろいろうまくいかないですね。

http://jira.secondlife.com/browse/VWR-2261
のパッチを RC-1.20.6へマージから始めようと思っていますが、どうだろう。

はじめまして。ubuntu 8.10でエメラルドを操る者です。
私の場合、混雑した場所に移動した際に、環境音だけに限って(タイプ音・歩行音・風の音・ジェスチャー音)途中で途切れて無音になってしまうという事象に悩まされています。VoiceInfoRequest errorというものでSNOW-250-aleric.diffとVoiceSPAM.patchというもののパッチを当てろと書いてあるのですが、方法がさっぱり分かりません。

コメントの投稿

管理者にだけ表示を許可する

トラックバック

http://emasaka.blog65.fc2.com/tb.php/242-afa5c8e0

 | HOME | 

Categories

Recent Entries

Recent Comments

Recent Trackbacks

Appendix

emasaka

emasaka

フリーター。
連絡先はこのへん

Monthly


FC2Ad