From: Mike F. <mf...@su...> - 2001-12-03 23:12:31
|
Araki Ken <j00...@ip...> writes: > 手元の環境には、ja_JP.UTF-8 locale がありませんので、ご報告いただいた > 問題を再現できていないのですが、これは、kinput2から入力した文字列が、変 > 換確定後、一切画面に表示されないということでしょうか? はい、そうです。 > もし、画面に入力文字列が一切表示されないということでしたら、OpenXIM()す > る際の locale と、XIM に bind されている parser object が噛み合っていな > いのかな、と思います。 > そのため、parser object が、XIM から受け取った文字列を、不正な文字コード > だよ、として無視しているような気がします。 > > ml_xim.c の、 open_xim()にて、OpenXIM()した直後、 > > if( ( xim->encoding = ml_get_encoding( ml_get_codeset())) == ML_UNKNOWN_ENCODING) > { > goto error ; > } > > if( ( xim->parser = ml_parser_new( xim->encoding)) == NULL) > { > goto error ; > } > > if( ( xim->xmod = strdup( xmod)) == NULL) > { > goto error ; > } > > if( ( xim->locale = strdup( ml_get_locale())) == NULL) > { > goto error ; > } > > このようなコードがあるかと思いますが、この、xim->encoding が 19 、xim->locale > が "ja_JP.UTF-8" になっているかどうか、もしくは、ml_xic.c の ml_xic_get_str() > にて、XmbLookupString() で取得している文字列 (seq,seq_len) が、正しい UTF-8 > 文字列になっているかどうかを調べていただけませんでしょうか? 調べるために、次のパッチを当てました: --- mlterm-2.0.0.orig/src/ml_xim.c Tue Dec 4 00:00:38 2001 +++ mlterm-2.0.0/src/ml_xim.c Mon Dec 3 23:55:40 2001 @@ -173,7 +173,9 @@ { goto error ; } - + printf("xim->encoding=%d xim->locale=%s xim->xmod=%s\n", + xim->encoding,xim->locale,xim->xmod); + XSetIMValues( im , XNDestroyCallback , &callback , NULL) ; num_of_xims ++ ; --- mlterm-2.0.0.orig/src/ml_xic.c Sat Nov 24 15:59:42 2001 +++ mlterm-2.0.0/src/ml_xic.c Tue Dec 4 00:07:59 2001 @@ -8,6 +8,7 @@ #include <X11/Xutil.h> /* XLookupString */ #include <kiklib/kik_debug.h> #include <kiklib/kik_str.h> /* kik_str_alloca_dup */ +#include <stdio.h> #include "ml_window_intern.h" #include "ml_xim.h" /* refering mutually */ @@ -560,8 +561,10 @@ if( ( len = XmbLookupString( win->xic->ic , event , seq , seq_len , keysym , &stat)) == 0) { + printf("0 == XmbLookupString()\n"); return 0 ; } + printf("XmbLookupString() returned %s\n",seq); if( IS_ENCODING_BASED_ON_ISO2022(win->xic->xim->encoding) && *seq < 0x20) { XmbLookupString() が何も取得しないようです: LC_ALL=ja_JP.UTF-8 XMODIFIERS=@im=kinput2 ./mlterm xim->encoding=19 xim->locale=ja_JP.UTF-8 xim->xmod=@im=kinput2 0 == XmbLookupString() <- これから日本語の入力やってみました[1]。 0 == XmbLookupString() 0 == XmbLookupString() XmbLookupString() returned e <- これから 「exit」を入力しました。 XmbLookupString() returned x XmbLookupString() returned i XmbLookupString() returned t XmbLookupString() returned a [1] 「Shift-Space 漢字 Return Shift-Space」 を入力しました。 -- Mike Fabian <mf...@su...> http://www.suse.de/~mfabian 睡眠不足はいい仕事の敵だ。 |