大島です。
長い間出遅れていましたが、ギリシャ人から(OLPCやLinux上で)Squeakにギ リシャ語が入力できないと言われたりしていた結果、自分で見てみようという 気になってきました。 基本的には、translateCode()やrecode()などを呼ぶことなく、Xから来たキャ ラクターをそのままキーコードとして返すVM の起動時オプションをつくるの が良いかなと思っているのですが、その際に日本語もばっちり動くようにした いと思っています。 というわけで今から皆さんの努力に追いつきたいと思うのですが、 http://opinion.nucba.ac.jp/~tsutomu/squeak/SqueakImmX11Plugin4d.tar.gz から追いかけていけばよいのでしょうか? 武藤さんの http://qml.610t.org/squeak/2.files/squeak-3.9-7-2006042801.tar.gz もみましたが、これはImmPluginとFreeBSD対応が主であるということですよね。 あいまいな質問で申し訳ありませんが、指示のほどよろしくお願いします。 -- Yoshiki |
むとう@おうちです。
すいません、元気無いモードに入ってしまって、停滞気味です。 At Fri, 20 Apr 2007 15:31:52 -0700, Yoshiki Ohshima <[hidden email]> wrote: > 長い間出遅れていましたが、ギリシャ人から(OLPCやLinux上で)Squeakにギ > リシャ語が入力できないと言われたりしていた結果、自分で見てみようという > 気になってきました。 > > 基本的には、translateCode()やrecode()などを呼ぶことなく、Xから来たキャ > ラクターをそのままキーコードとして返すVM の起動時オプションをつくるの > が良いかなと思っているのですが、その際に日本語もばっちり動くようにした > いと思っています。 (UNIXの)日本語のInput Methodの対応には、 - XIM経由のもの(廣島さんのSqueakImmX11Plugin) - anthy対応(川村さんのanthy-agent利用のもの) - SKKの実装(古いPDA用イメージに入っているもの) があるようです。 # MacとWindowsはよくわからないので、ごめんなさい(_O_) SCIM(http://www.scim-im.org)とか使えると、多言語対応は楽なのかなぁと思っ たりもします。 # でも、CJKが主なのかなぁ… > というわけで今から皆さんの努力に追いつきたいと思うのですが、 > > http://opinion.nucba.ac.jp/~tsutomu/squeak/SqueakImmX11Plugin4d.tar.gz > > から追いかけていけばよいのでしょうか? で、こちらはXIM経由でのIMなので、XIMを使う場合のスタートはこちらかと思 います。 > 武藤さんの > http://qml.610t.org/squeak/2.files/squeak-3.9-7-2006042801.tar.gz > もみましたが、これはImmPluginとFreeBSD対応が主であるということですよね。 これは、FreeBSDのportでして、基本的にFreeBSD用のpatchをあてて、廣島さ んのSqueakImmX11Pluginを追加して作成するだけなので、特にあんまり意味は 無いかと思います。 > あいまいな質問で申し訳ありませんが、指示のほどよろしくお願いします。 こんな情報で参考になればいいんですが… SqueakNOSの日本語化も作業したいなぁと思ってるんですが、やっぱり日本語 IMがどうしようかなと悩んでるので、私も情報いただけるとうれしいです。 では。 -- 武藤 武士@「あおによし」自宅より E-mail:[hidden email] URL:http://qml.610T.org/ ・水面の泡のように、フラフラ揺れたり、沈んだり浮かんだり ・「世の中に絶えて桜のなかりせば 春の心はのどけからまし」在原業平 |
In reply to this post by Yoshiki Ohshima
廣島です.
> 基本的には、translateCode()やrecode()などを呼ぶことなく、Xから来たキャ > ラクターをそのままキーコードとして返すVM の起動時オプションをつくるの > が良いかなと思っているのですが、その際に日本語もばっちり動くようにした > いと思っています。 > > というわけで今から皆さんの努力に追いつきたいと思うのですが、 > > http://opinion.nucba.ac.jp/~tsutomu/squeak/SqueakImmX11Plugin4d.tar.gz > > から追いかけていけばよいのでしょうか? パッチを当てた VM のマルチバイト入力では, 通常のキャラクタコードに関しては, recode を通すこと無く Image に送っています. translateCode には オリジナルどおり, カーソルキーなどの KeySym を Squeak のコードに変換させています. ギリシャ語(ISO Latin-7)の入力には XIM を使うのでしょうか? もしかして Latin-1 のような Compose を使うのでしょうか? ================= 廣島 勉 Tsutomu Hiroshima |
大島です。
> > 基本的には、translateCode()やrecode()などを呼ぶことなく、Xから来たキャ > > ラクターをそのままキーコードとして返すVM の起動時オプションをつくるの > > が良いかなと思っているのですが、その際に日本語もばっちり動くようにした > > いと思っています。 > > > > というわけで今から皆さんの努力に追いつきたいと思うのですが、 > > > > http://opinion.nucba.ac.jp/~tsutomu/squeak/SqueakImmX11Plugin4d.tar.gz > > > > から追いかけていけばよいのでしょうか? > > パッチを当てた VM のマルチバイト入力では, > 通常のキャラクタコードに関しては, > recode を通すこと無く Image に送っています. > > translateCode には オリジナルどおり, > カーソルキーなどの KeySym を Squeak のコードに変換させています. ありがとうございます。 > ギリシャ語(ISO Latin-7)の入力には XIM を使うのでしょうか? > もしかして Latin-1 のような Compose を使うのでしょうか? ギリシャ語を入力するには、Control-Shiftを押すとキーボードの モードが切り替わるという話のようでした。切り替 えると、xevで見たときワンストロークで("A"のキーを押すと)、 KeyPress event, serial 29, synthetic NO, window 0x1e00001, root 0x64, subw 0x0, time 3200328687, (155,64), root:(194,585), state 0x2010, keycode 38 (keysym 0x7e1, Greek_alpha), same_screen YES, XLookupString gives 0 bytes: XmbLookupString gives 0 bytes: XFilterEvent returns: False というコードがSqueak VMに届くようです。 -- Yoshiki |
廣島です.
別のメアドから大島さんにはお送りしましたが, あらためて投稿させていただきます. >> ギリシャ語(ISO Latin-7)の入力には XIM を使うのでしょうか? >> もしかして Latin-1 のような Compose を使うのでしょうか? > > ギリシャ語を入力するには、Control-Shiftを押すとキーボードの > モードが切り替わるという話のようでした。切り替 > えると、xevで見たときワンストロークで("A"のキーを押すと)、 > > KeyPress event, serial 29, synthetic NO, window 0x1e00001, > root 0x64, subw 0x0, time 3200328687, (155,64), root:(194,585), > state 0x2010, keycode 38 (keysym 0x7e1, Greek_alpha), same_screen YES, > XLookupString gives 0 bytes: > XmbLookupString gives 0 bytes: > XFilterEvent returns: False > > というコードがSqueak VMに届くようです。 > xev の結果から推察すると Greek_alpha は通常のキャラクタでなく, KeySym 扱いのようですね. そうだとすると translateCode を通されます. man XmbLookupString 抜粋:status_return の値 XLookupKeySym A KeySym has been returned instead of a string and is returned in keysym_return. The content of the buffer_return argument is not modified, and the function returns zero. sqUnixX11.c:static int x2sqKeyInput(XKeyEvent *xevt)の該当箇所 case XLookupKeySym: # if defined(DEBUG_CONV) fprintf(stderr, "x2sqKey XLookupKeySym\n"); # endif { int charCode= translateCode(symbolic); # if defined(DEBUG_CONV) printf("SYM %d -> %d\n", symbolic, charCode); # endif if (charCode < 0) return -1; /* unknown key */ if ((charCode == 127) && mapDelBs) charCode= 8; return lastKey= charCode; } sqUnixX11.c:static int x2sqKeyPlain(XKeyEvent *xevt)の該当箇所 if (nConv == 0 && (charCode= translateCode(symbolic)) < 0) return -1; /* unknown key */ translateCode では少数のコントロールキー以外は, 未知のキーとして -1 を返すことになってます. KeySym の定義を /usr/include/X11/keysymdef.h で調べると, 0xf??? はコントロールキー, 0x100?? はアクセントキー, 0x0??? は文字のキーのようです. これをふまえて, translateCode をしかるべく変更する必要があります. ただこのファイルをみる限り, KeySym と UNICODE との対応は単純ではなさそうです. (perl や awk で 対応表を抽出する?) ================= 廣島 勉 Tsutomu Hiroshima |
Free forum by Nabble | Edit this page |