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, X11DRV_OpenIM, wine_tsx11_unlock(); IME_XIMPresent(TRUE); - IME_UpdateAssociation(NULL); }
thanks, -aric