[openi18n-im:01441] key release issue with iiimxcf

Federic Zhang <[email protected]> Tue, 28 Jun 2005 22:01:54 +0800
Newsgroups gmane.comp.internationalization.input-methods
Message-ID <[email protected]>
Kasha,

It is caused by iiimxcf, if the attached patch is patched to
iiimxcf/xiiimp.so/iiimp/KeyMap.c, it should work.

Today i spent some time to look at the iiimxcf part, it seems the xim
server, iiimx, can't got key release event from its client, the
R6IMProtocol::xevent_loop can't receive any this kind of event.

Who can tell me the reason? Is the event prohibited in client side by
ximcp.so?

-federic

> Kasha,
> 
> Really? Look like the pkey is corrupted, the value of keyType should be
> either 1 (IM_KEY_PRESS) or 0 (IM_KEY_RELEASE). 
> 
> I just modified iiimgcf to send both key press and key release events
> from client to server, please note iiixcf isn't
> modified yet, is it caused by iiimxcf? please confirm whether the
> problem exist in GNOME app that use im-iiim.so to communicate to server?
> 
> Do you have info to reproduce it? I want to debug into to see what
> happens.
> 
> -federic
> 
> > Hi Federic,
> > 
> > JUSTSYSTEM says that your change for r2684 prevents LEs, that do
> > not set IF_SUPPORTED_KEYRELEASE to True, from receiving any key
> > press events.  I've traced the problem with dbx, and found that
> > pkey->keyType is 16, though IM_KEY_PRESS is 1.
> > 
> > # dbx -q /usr/bin/iiimd `pgrep -u root -x iiimd`
> > (dbx) stop at LE.cpp:469
> > (2) stop at "LE.cpp":469
> > (dbx) c
> > t@3 (l@3) stopped in LEContext::send_event at line 469 in file "LE.cpp"
> >   469       if ((pkey && pkey->keyType == IM_KEY_PRESS) || pbase->iml_if->need_keyrelease)
> > (dbx) p pkey
> > pkey = 0x4e4e18
> > (dbx) p pkey->keyType
> > pkey->keyType = 16
> > 
> > Would you fix the problem as soon as possible?  This problem
> > really impact on the development of ATOK for Solaris.  ATOK does
> > not work at all.  I suspects that any other LEs are also
> > affected.
> > 
> > And is it possible to disable the code until the right fix is
> > implemented?  If this line is disabled, ATOK seems working.
> > 
> > Thanks,
> > -- 
> > kasha
> > 
> 
>
iiim-iiimxcf.diff (text/x-patch, 345 B)
Index: KeyMap.c
===================================================================
--- KeyMap.c	(revision 2714)
+++ KeyMap.c	(working copy)
@@ -1140,6 +1140,7 @@
 
     pkev->keychar = 0;
     pkev->keycode = 0;
+    pkev->keytype = 1; /* IM_KEY_PRESS */
     pkev->time_stamp = ev->time;
 
     if (first_call && ev->display != (Display*)0) {