IME withTix on multilanguagesupported system ?

Martin v. Löwis martin at
Mon Mar 3 10:25:34 CET 2003

"vincent wehren" <v.wehren at> writes:

> I doubt that any IME will provide the right results in Tix as long as the
> default setting on his W2K machine is Russian (CP866/ACP1251). Doesn't Tk
> use the current encoding to internalize into unicode? 

I missed that point, and it has its merits. However, in Tk 8.4,
win/tkWinKey.c, I find

    } else if (eventPtr->xkey.send_event == -2) {
         * Special case for win2000 multi-lingal IME input. 
         * xkey.trans_chars[] already contains a UNICODE char.

        int unichar;
        char buf[TCL_UTF_MAX];
        int len;

        unichar = (eventPtr->xkey.trans_chars[1] & 0xff);
        unichar <<= 8;
        unichar |= (eventPtr->xkey.trans_chars[0] & 0xff);

        len = Tcl_UniCharToUtf((Tcl_UniChar) unichar, buf);

        Tcl_DStringAppend(dsPtr, buf, len);
    } else  {

So it *looks* like it could work "correctly" in some cases. It appears
that this processing occurs when WM_IME_COMPOSITION has been received
before (*). I don't know under what circumstances that would happen,
though. W2k seems to be a prerequisite, but there are probably more
prerequisites (like using an IME with composition, whatever that is).


(*) On W2k, Tk will invoke ImmGetCompositionStringW in this case; on
W98, it will invoke ImmGetCompositionStringA.

More information about the Python-list mailing list