XIM

From: Raphael Finkel (raphael@cs.uky.edu)
Date: Thu Jan 09 2003 - 09:27:30 EST

  • Next message: Jordi Mas: "Re: Commits into Stable"

    > from Dom Lachowicz <domlachowicz@yahoo.com>, Jan 8, Re: XIM
    > > UT_NOT_REACHED at ev_UnixKeyboard.cpp:143
    >
    > This means that your XIM is sending a 0 length entry
    > or invalid UTF8 to the input module, AFAIK.
    >
    > Please Please Please Please someone find some
    > documentation on how the XIM stuff works on GTK+2

    Here is my best guess. Things I am particularly unsure about I have marked
    with (?).

            XIMs
            ----

    XIMs have several options that determine how they send stuff to the client
    application (in our case, AbiWord with Gtk+2). The XIM may send a character
    array, a KeySym, or both.

    If the XIM sends a character array, it is (?) encoded according to whatever
    locale the XIM is running in; during initial connection with the XIM, the
    application must (?) match the locale and ask for it specifically. In order
    for a locale to work at all, there must (?) be appropriate locale files on the
    computer; you can't just invent a reasonable locale like yi.UTF_8 and expact it
    to work.

    If the XIM sends a KeySym, it may either be one defined in <X11/keysymdef.h>,
    one that the application has introduced via XChangeKeyboardMapping(), or a
    UCS-2 code with the 0x1000000 bit asserted.

    If the XIM sends "both", the application is supposed to figure out what is
    meant; I can't.

            keypressIM.c
            ------------

    This is my own Yiddish XIM. Sorry for its terrible name; I will change that
    once things start to work. The source is at
    http://www.cs.uky.edu/~raphael/private/keypressIM.c; it uses the IMdkit
    library, which you can find as part of InterXim at
    http://www.oksid.ch/xd640/download.html.

    This XIM registers itself as "keypress" in locale "C". It uses the KeySym
    method for communicating with the application, sending only UCS-2 with the
    0x1000000 bit and the well-understood KeySym 0xff08 (XK_BackSpace).

    I have verified that this XIM works by using Yudit as an application; Yudit is
    a multilingual text editor written by Gaspar Sinai that you can get from
    www.yudit.org.

    I would be glad to switch to the character method of communicating with the
    application, if I could find a reliable way to communicate UTF-8 data. I have
    asked Gaspar Sinai (Yudit) and Hidetoshi Tajima (Gtk+2.0) for advice in this
    regard.

            Gtk+2.0
            -------

    The implementers of Gtk+2.0 have chosen only to deal with character arrays from
    XIMs. I have complained about this choice; see
    http://bugzilla.gnome.org/show_bug.cgi?id=102779 for some details.

    Because of this choice, Gtk+2.0 is getting the characters sent by keypress to
    AbiWord but it ignores their contents, just returning a 0-length string to
    AbiWord, which therefore hits the UT_NOT_REACHED bugtrap.

    Raphael



    This archive was generated by hypermail 2.1.4 : Thu Jan 09 2003 - 09:31:36 EST