Ticket #263 (closed 不具合: fixed)

Opened 3 years ago

Last modified 3 years ago

r4002+ATOK2005でisearch時の日本語入力の不具合

Reported by: fujimoto Assigned to: horiguti
Priority: major Milestone:
Component: UI Version: 3.00 (開発中)
Keywords: Cc:

Description

r4002+ATOK2005(ローマ字入力)で、isearch時に日本語モードにして入力すると、一文字目が必ず半角になってしまいます。

例:「はんかく」と入力しようとすると、「hあんかく」となる。

IME2003に切り替えると、このような状況にはなりません。

Attachments

Change History

2005年12月15日 12時30分51秒 changed by anonymous

  • summary changed from r4002+ATOK2005でisearch時の日本語入力時の不具合 to r4002+ATOK2005でisearch時の日本語入力の不具合.

2005年12月21日 08時16分38秒 changed by fujimoto

  • priority changed from minor to major.

mini-bufferでのすべて日本語入力に影響するため、majorに変更

2005年12月28日 02時59分40秒 changed by horiguti

  • owner set to horiguti.
  • status changed from new to assigned.

MS-IMEとの動作の非互換ですね。 *scratch* バッファで

(concat (mw32-input-method ?h))<C-j>  ;; 'h'は半角

とすると同じような状況になると思います。 この'h'を全角文字にしたら正しく入力できるようになるか教えていただけますか? それでOKなら簡単に対処できると思います。

2005年12月28日 08時37分32秒 changed by fujimoto

r4007

(concat (mw32-input-method ?h))<C-j>  ;; 'h'は半角

場合は、IME onとなりhが入力されて次の入力待ちとなります。

(concat (mw32-input-method ?h))<C-j>  ;; 'h'は全角

の場合は、

"h"

となります。

2005年12月28日 11時42分22秒 changed by horiguti

すみません, 説明不足でしたね.

先にあげた式を評価するとIMEが起動するのでそのまま続きで"ankaku" と入力して確定した結果を教えてもらえますか?

2005年12月28日 12時17分50秒 changed by anonymous

先の、

12/28/05 08:37:32: fujimoto による修正

の全角の時は操作が間違えていました(IMEがonの状態のまま操作していた)ので、下記が正しい結果です。

hが半角の時

"hあんかく"

hが全角の時

"hあんかく"

となりました。

2006年01月11日 18時41分12秒 changed by horiguti

だめだこりゃ...
わかりました. composition string を設定するのをあきらめてキー入力を突っ込むことにします.
コンパイルできるなら下のパッチを mw32ime.c に当てて以下の式をもう一度試してもらえますか?

(concat (mw32-input-method ?h))<C-j>  ;; 'h'は半角

パッチは以下.

Index: mw32ime.c
===================================================================
--- mw32ime.c	(revision 4012)
+++ mw32ime.c	(working copy)
@@ -849,6 +849,8 @@
   waiting_on_main_thread = TRUE;
   ResetEvent (input_method_function_event);
 
+  Ffep_force_on (Qnil);
+
   result = Qnil;
   redisplay_preserve_echo_area (30);
 
@@ -866,20 +868,37 @@
 	  str = Fconcat (2, args);
 	}
     }
-  fflush (stdout);
-  if (STRINGP (str))
-    {
-      str = ENCODE_SYSTEM (str);
-      SendMessage (hwnd, WM_MULE_IMM_SET_COMPOSITION_STRING,
-		   (WPARAM)(SDATA (str)), 0);
-    }
-  Ffep_force_on (Qnil);
 
   mw32_set_ime_conv_window (hwnd,
 			    cursor_in_echo_area ?
 			    XWINDOW (f->minibuffer_window):
 			    XWINDOW (f->selected_window));
 
+  /* Put the initnal string into IME via message. */
+  if (STRINGP (str))
+    {
+      char *p;
+      int ctrlstate;
+
+      /* Cancel control key if pressed */
+      ctrlstate = GetKeyState (VK_CONTROL);
+      if (ctrlstate)
+	mw32_send_key_input (VK_CONTROL, 0, KEYEVENTF_KEYUP);
+
+      /* str assumed not to contain non-ascii characters. */
+      for (p = SDATA (str) ; *p ; p++)
+	{
+	  int c = toupper (*p);
+	  
+	  mw32_send_key_input (c, 0, 0);
+	  mw32_send_key_input (c, 0, KEYEVENTF_KEYUP);
+	}
+
+      /* Restore the state of control key */
+      if (ctrlstate)
+	mw32_send_key_input (VK_CONTROL, 0, 0);
+    }
+
   /* Rescue from dead block. This may not happen. */
   while (WaitForSingleObject (input_method_function_event, 500L)
 	 == WAIT_TIMEOUT)

2006年01月14日 16時22分58秒 changed by anonymous

返答が遅れまして申し訳ありません。

(concat (mw32-input-method ?h))
"はんかく"

となりました。

isearchでは一回目hを入力後次の文字が入力出来ず、c-gでkillした後再度isearchすると日本語が入力出来ます。以降、失敗→成功のくり返しとなります。

2006年02月01日 20時27分41秒 changed by fujimoto

  • status changed from assigned to closed.
  • resolution set to fixed.

r4026で問題なく入力出来ることを確認しました。

どうもありがとうございました。


Add/Change #263 (r4002+ATOK2005でisearch時の日本語入力の不具合)




Change Properties
Action