IMM / IME work

Aric Stewart aric at
Tue Apr 15 07:24:57 CDT 2008

Hello all,

   I know this will only interest a small portion of you but thought i 
would give a quick update on the state of IMM32 since I have brought it 
to a major milestone.

   All the main patches are in which now separate IMM32 and IMEs. There 
is still more work to do but the major framework is in place. X11 XIM 
processing should be unchanged. However wine can now begin to  load 
native windows IMEs as well.

  I have tested with windows ATOK20 (a popular Japanese IME) and 
successfully had text processing in a fully IME aware application. There 
are still clear issues to resolve in many aspects of this processing but 
we have forward progress.

  ImmInstallIME does not work yet, nor does switching keyboards.  So to 
get the native IME to work you need to add this registry key.

[System\\CurrentControlSet\\Control\\Keyboard Layouts\\<keyboard layout>]
"Ime File"=<IME filename>

so for example for ATOK20 in Japanese i used.

[System\\CurrentControlSet\\Control\\Keyboard Layouts\\e0010411]
"Ime File"="ATOK20W.IME"

I would love to hear how well things work.  I am sure using native IMEs 
will quickly show us many places where IMM32 needs to be improved.

One issues I am going to investigate next is that sometimes non x11drv 
ime initialization, if occurring too early, causes x11drv to fail to 
create windows.  I have not investigated with the latest changes to 
xim.c  (which may already correct this problem) but if you see this 
problem this patch may help and i believe the 
IME_UpdateAssociation(NULL) is already unneeded.

diff --git a/dlls/winex11.drv/xim.c b/dlls/winex11.drv/xim.c
index d4df9f7..0c98136 100644
--- a/dlls/winex11.drv/xim.c
+++ b/dlls/winex11.drv/xim.c
@@ -475,7 +475,6 @@ static void X11DRV_OpenIM(Display *display, XPointer 
ptr, XP
      XUnregisterIMInstantiateCallback(display, NULL, NULL, NULL, 
-    IME_UpdateAssociation(NULL);


More information about the wine-devel mailing list