XIM / GTK+2.0

From: Raphael Finkel (raphael@cs.uky.edu)
Date: Mon Jan 06 2003 - 09:41:23 EST

  • Next message: Dom Lachowicz: "Commit: 3229"

    I am trying to get AbiWord to work with my XIM (X-Windows Input Method) under
    Linux with Gtk-2.0. Documentation is unhelpful, both for Gtk and for AbiWord,
    but I have figured out I need to do the following (shown in csh syntax):

            setenv GTK_IM_MODULE xim
            setenv XMODIFIERS @im=keypress

    The first tells Gtk that it should use an external XIM. Gtk has some builtin
    XIM modules, such as im-cyrillic-translit, but I want to use my own, which
    registers itself to the X server as "keypress". Hence the second setenv.

    The good news: When I start AbiWord, my XIM module prints debugging output
    that shows that it is being contacted by AbiWord. In fact, AbiWord (or rather
    the Gtk component) makes 4 connections to it! This fact, and the Gtk
    documentation, imply that Gtk has been compiled with XIM support turned on.

    The bad news: I can't get my trigger key (which is the traditional
    shift-space) to trigger XIM mode. Similarly, I can't find a trigger key for
    cyrillic.

    I thought the problem might be in af/xap/unix/xap_UnixFrameImpl.cpp, in routine
    XAP_UnixFrameImpl::_fe::key_press_event(), which has comments about only
    handing certain keypresses to Gtk. I added a case to have this routine return 0
    for shift-space in addition to the few others it passes:

        if (e->state & GDK_SHIFT_MASK && (e->keyval == (guint) ' '))
                    return 0;

    I have verified with gdb that my code in fact returns 0 on shift-space
    and that it returns to Gtk code. But I don't get a trigger to my XIM, and
    in fact my XIM is not hearing any further communication from AbiWord until I
    close AbiWord, at which point it gets four XIM_DESTROY_IC messages.

    Another potential cause of problem is that the XIM might not be accepting the
    particular kind of connection that Gtk wants to make. But I get the same
    behavior even if I have my XIM accept all possibilities:

            XIMPreeditArea|XIMStatusArea,
                    XIMPreeditCallbacks|XIMStatusCallbacks,
                    XIMPreeditPosition|XIMStatusArea,
                    XIMPreeditPosition|XIMStatusNothing,
                    XIMPreeditNothing|XIMStatusNothing,

    What do I need to do to get Gtk to communicate with my XIM?

    Raphael



    This archive was generated by hypermail 2.1.4 : Mon Jan 06 2003 - 09:45:15 EST