X環境の上で日本語を使っていてmono 2.0 previewを動かせるという方にお願いしたいのですが、もしwinformsアプリケーションで日本語入力が出来ないという現象に遭遇した方は、動作環境、XIMの日本語環境(XMODIFIERSとか、scim/kinputで使っている日本語モジュールとか)、コンソールのメッセージ出力などを教えていただけると助かります。
(コンソール出力を取得するために、-t:winexeではなく-t:exeでコンパイルしてもらえると助かります)
追記: id:Ozy:20080820:p1 で報告いただいたように(ありがとうございます)、微妙に違う問題が出てきたのでちょっと補足。
mono / winformsのXIMは、デフォルトでXNPreeditPosition | XNStatusNothingモードで動きますが、これがIMエンジンによっては有効でなかったりします。そういう場合は、XNPreeditNothing | XNStatusNothingモードにfallbackで再度XCreateIC()を呼び出すようになっているので、日本語入力そのものはまあ可能になっているかと思います。
一方、XOpenIM()に失敗するとそもそもキーボード入力そのものが出来なくなる、というレポートが1件寄せられていて、そういうのがインストレーションの問題以外であったら困るなあ、と思っています。
コメント
Ozy — 08/20/2008 17:16:36
winforms/textbox/swf-textboxes.cs
で試しました。マウス操作で各テキストボックスにフォーカスを移動すると、最初のフォーカス時のみ”failed to create XIC in over-the-spot mode.”とコンソールに表示されます。つまりフォームの起動時+テキストボックスの個数分だけ表示が出ますが、追記の部分によればそれほど問題ないのかな、と思います。
しかし、キーボードからの操作を行った瞬間固まってしまい、操作不能になります。busy状態と言うんでしょうか、ウィンドウを閉じることもできませんし、マウス操作によるフォーカスの移動も出来ません。ウィンドウの最大/最小化は出来ますがReDrawされません。
キーボード入力ができなくなるのはXOpenIM()の成否だけではないような気がしますが、そこまでは調べてません^^;
atsushieno — 08/21/2008 02:48:23
むむむ、情報ありがとうございます。何だろう、XCreateIC()で1回でも失敗したら問題が生じるということなのかしら。それともXIMがそもそもPreeditNothingでもまともに機能していないのか…。
もしよろしければ試しに 環境変数MONO_WINFORMS_XIM_STYLE を root として試してみて下さい。それで動くようなら、失敗するXCreateIC()の呼出しが良くないのだと思います。
Ozy — 08/21/2008 09:48:41
MONO_WINFORMS_XIM_STYLE=root
で試したところ、 ”failed to create XIC in over-the-spot mode.”という表示はでなくなりましたが、キーボードから操作を行った場合は↑*2で書いた状態から変わりありませんでした。ということはXCreateIC()はあまり関係ないということですかね?
なんか気になってしかたないので、もう少し調べてみます(´ω`)
atsushieno — 08/21/2008 10:33:07
むむむ、それは由々しい問題…けっこう細かいところまで調べないとなかなか分からないところが多いかと思いますが、もし何か分かったら教えて下さい。(__ うちのscim/anthyだと全く問題が生じないので…
とりあえず、XIMを一律に無効化するような設定は必須そうなので、後で追加しておきます。
netaの人 — 08/24/2008 11:45:20
ログイン面倒…。確定前の文字列が上半分ぐらい見えないのを除けば問題なく入力できました(uim-xim)。表示の問題は自分のフォント環境のせいという気もします。
atsushieno — 08/24/2008 14:49:41
どもです。むむ、上半分も見えないくらいフォントが大きかったですか。その辺は少し調整しているはずなのですが、何か手が打てないかもっかい見てみますね。