[Squeak-ja: 3478] UNIX版 VMでの多言語入力

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

[Squeak-ja: 3478] UNIX版 VMでの多言語入力

Yoshiki Ohshima
  大島です。

  長い間出遅れていましたが、ギリシャ人から(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
Reply | Threaded
Open this post in threaded view
|

[Squeak-ja: 3479] Re: UNIX版 VMでの多言語入力

Takeshi MUTOH
むとう@おうちです。

すいません、元気無いモードに入ってしまって、停滞気味です。

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/
 ・水面の泡のように、フラフラ揺れたり、沈んだり浮かんだり
 ・「世の中に絶えて桜のなかりせば 春の心はのどけからまし」在原業平

Reply | Threaded
Open this post in threaded view
|

[Squeak-ja: 3480] Re: UNIX版 VMでの多言語入力

Tsutomu Hiroshima
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
Reply | Threaded
Open this post in threaded view
|

[Squeak-ja: 3485] Re: UNIX版 VMでの多言語入力

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 を使うのでしょうか?

  ギリシャ語を入力するには、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
Reply | Threaded
Open this post in threaded view
|

[Squeak-ja: 3486] Re: UNIX版 VMでの多言語入力

Tsutomu Hiroshima
廣島です.
別のメアドから大島さんにはお送りしましたが,
あらためて投稿させていただきます.

>> ギリシャ語(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