IM-JA v0.9

Botond Botyanszki

 <boti at rocketmail dot com> 

Copyright   2002 - 2003 Botond Botyanszki

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Table of Contents

Introduction
Getting and installing IM-JA

    Installing from source
    RPM
    Debian
    Gentoo
    FreeBSD
    CVS

Using IM-JA

    Invoking the IM-JA input module for GTK
    The XIM server
    Setting your preferences
    Keys and actions
    Using the GNOME panel applet

IM-JA and GTK/GNOME Applications

    Stock GTK input widgets
    Applications with custom widgets

Troubleshooting
Feedback

    Contact and support
    Bugreports

Credits

Introduction

IM-JA is a Japanese input module for GTK+2. As of v0.9 it also has a XIM
implementation.

It supports kanji conversion using either the Canna or the (Free)Wnn kanji
conversion engine. IM-JA can also do kanji character recognition, you can draw
kanji into a widget using the mouse. This feature is based on the KanjiPad
application which has been enhanced in IM-JA.

IM-JA can be easily configured using a GUI tool. Conversion hotkeys, status
window, preedit text colors, etc. can be all customized. An optional applet is
also included for the gnome-panel which can be used to display and change the
input method.

GTK+2 has the advantage that it doesn't require X, so it should be possible to
use IM-JA on PDAs and frame-buffer devices. Also, IM-JA provides the
look-and-feel of GTK (and thus GNOME) so it is visually consistent with the
client application unlike input methods (such as kinput2) which are based on
Xlib.

Getting and installing IM-JA

Source and binary packages of the latest release are available from the project
webpage at http://im-ja.sourceforge.net.

Installing from source

If you want to roll your own from a tarball, here is what you need to do. The
compile/install procedure is the same as with most GNU applications:

              % tar zxpvf im-ja-x.x.tar.gz
              %  cd im-ja-x.x
              % ./configure --prefix=/usr --mandir=/usr/share/man --sysconfdir=/etc
              % make
              % make install

Before you start, you probably need to install some other packages to satisfy
the dependencies. Requirements are: gconf2, libglade, gtk2 (2.2.0). Please note
the dependency on version 2.2 of the gtk2 library. Unfortunately only the
latest distro releases have this. It is recommended that you install at least
version 2.2.2, earlier versions have a few input method related bugs.

Canna support

For Canna support, you will need to install the canna conversion server, the
client libraries and development packages containing the header files. The
development package for canna is libcanna1g-dev (or canna-dev) under debian.

If you don't want Canna support, you should run configure with the
--disable-canna option. In this case you don't have to install the canna
packages.

Wnn support

For Wnn support, you will need to install the freewnn conversion server (the
commercial might work as well), the client libraries and development packages
containing the header files. The development package is freewnn-jserver-dev (or
libwnn-dev) under debian.

If you don't want Wnn support, you should run configure with the --disable-wnn
option. In this case you don't have to install the Wnn packages.

Gnome applet

The gnome applet depends on libpanel-applet2 (2.0.0) and is compiled by default
just like Wnn and Canna support.

If you are not running GNOME or simply don't want to compile and install the
applet then execute configure with the --disable-gnome option.

Configuring GTK

The gconf schema is installed into /etc/gconf. This directory can be
exclusively specified with configure's --sysconfdir option.

To enable the module in GTK so that it shows up in the Input Methods menu, you
need to add something similar (depends on your $prefix) to /etc/gtk-2.0/
gtk.immodules:

   "/usr/lib/gtk-2.0/2.2.0/immodules/im-ja.so"
   "im-ja" "Japanese" "gtk+" "/usr/share/locale" "ja"

If you installed the module into the same prefix as gtk is installed in, you
can update /etc/gtk-2.0/gtk.immodules by issuing the command

      % gtk-query-immodules-2.0 > /etc/gtk-2.0/gtk.immodules

If you installed it someplace else like /usr/local/lib/gtk-2.0/2.2.0/immodules
then you could do this:

      % gtk-query-immodules-2.0 /usr/local/lib/gtk-2.0/2.2.0/immodules/im-ja.so >> /etc/gtk-2.0/gtk.immodules

Some distributions have scripts to automate this procedure such as
update-gtk-immodules in Debian.

RPM

An all-in-one binary package should be available from the project webpage.
Binary RPMs can be installed the following way:

 % rpm -i im-ja-x.xxx.rpm

Upgrading from rpm:

 % rpm --upgrade im-ja-x.xxx.rpm

If the provided RPM package does not install properly on your system, you can
build a binary rpm from the source tarball:

 % rpm -tb im-ja-x.x.tar.gz

The rpm package should be created under /usr/src/RPM/RPMS/`uname -m`/ See rpm
(8) for details.

Debian

Binary packages are available from the project webpage. IM-JA is split up into
different Debian packages. Depending on your kanji conversion engine you may
want to install either im-ja-all, im-ja-wnn or im-ja-canna. The optional GNOME
panel applet is in the im-ja-applet package.

IM-JA is also apt-get-able. Put this into your /etc/apt/sources.list:

   deb http://im-ja.sourceforge.net/ ./
   deb-src http://im-ja.sourceforge.net/ ./

After running apt-get update, you should be able to install the IM-JA packages
via apt-get.

Building debian packages from the tarball:

    $ tar zxpvf im-ja-x.x.tar.gz
    $ cd im-ja-x.x
    $ dpkg-buildpackage -rfakeroot    

You should install the created binary packages with dpkg -i. An alternative
would be to use apt-src to do the build if you have added have the deb-src line
to /etc/apt/sources.list.

Gentoo

IM-JA is already included in the Gentoo Linux distribution. Type emerge im-ja.
If the ebuild is outdated, you may want to update the version and try building
with the latest release.

FreeBSD

IM-JA has been recently added to the FreeBSD Ports Collection. See http://
www.freshports.org/japanese/im-ja

You can download, build, and install im-ja with FreeWnn and Canna support
(including all dependencies) using the Ports Collection:

    $ cd /usr/ports/japanese/im-ja
    $ make install    

The following command will download and install the latest binary package of
im-ja for your FreeBSD version and architecture:

    $ pkg_add -r im-ja    

Please see the FreeBSD Handbook http://www.freebsd.org/doc/en_US.ISO8859-1/
books/handbook/ports.html for complete details.

CVS

If you want the bleeding-edge, try the cvs version. It should work better but
might contain some incomplete and buggy code in addition to the fixes and
improvements to the last release. To get the cvs version, execute the
following:

    $ cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/im-ja checkout im-ja

Using IM-JA

Invoking the IM-JA input module for GTK

To be able to input Japanese with IM-JA, GTK needs to load the input module. To
invoke IM-JA, you should select "Japanese" from the Input Methods menu. The
following actions should bring up this menu if the input widget (such as a text
entry, text area, combo box, etc) has the focus:

  ● Right-click on the widget with the mouse.

  ● Press Shift-F10

  ● Press the Menu key.

If you want to have IM-JA automatically preloaded when you start your
application (I'll use gedit in the example) here is what you can do:

  ● Start your application like this:

             $ GTK_IM_MODULE="im-ja" gedit

    Or export this environment variable somewhere in your rc files.

  ● If the locale is set to Japanese, im-ja will be automatically used. So you
    can do this too:

             $ LC_ALL="ja_JP" gedit

  ● Edit the file /etc/gtk-2.0/gtk.immodules and change the "ja" field to "".
    This means that IM-JA will be used as the default input module.

The XIM server

As of v0.9, IM-JA comes with a XIM server (im-ja-xim-server). This should be a
drop-in replacement for other Japanese XIM servers such as kinput2. The XIM
server uses the same settings (from GConf) as the GTK2 input module does.

Clients should be able to connect to the xim server if they are started from
either the same locale as the server was started from, e.g.:

$ LC_ALL=en_US.UTF-8 im-ja-xim-server
$ XMODIFIERS=@im=im-ja-xim-server LC_ALL=en_US.UTF-8 your_app

or if they are started from a Japanese locale, e.g.:

$ LC_ALL=en_US.UTF-8 im-ja-xim-server
$ XMODIFIERS=@im=im-ja-xim-server LC_ALL=ja_JP your_app

It is better to have the XMODIFIERS environment variable exported somewhere,
for example in your .bashrc or globally in /etc/environment.

XIM is a complicated protocol defining multiple modes on how the client can
render the preedit text. The XIM implementation of IM-JA supports
XIMPreeditCallbacks or XIMPreeditPosition for rendering the preedit text.If the
preedit is not drawn properly in the client's window the built-in preedit
window can be used.

The following applications have been tested and are known to work with the
IM-JA XIM input:

  ● GTK2 applications via the XIM input module :-). It is still recommended to
    use the native GTK2 module.

  ● OpenOffice.org

  ● Emacs (preedit window) and XEmacs

  ● GTK1 applications

  ● mlterm

Limitations of the XIM implementation

XIMPreeditCallbacks and XIMPreeditPosition modes are quite different. The
former is similar in concept to the GTK2 input modules, whre the client
application is responsible for drawing the preedit text. In this case the XIM
server tells the client how to draw the preedit but it has no information on
where it will be placed in the client window, thus positioning the candidate
window or the status window below the preedit string is not possible. In this
case IM-JA will automatically use the table-style for the candidate window and
the status window will be attached to the lower-left corner of the client
window if the status window style is set to “Below cursor”.

The XIM implementation doesn't support custom preedit colors for the Preedit
style, changing this setting will only have effect in your native GTK2 input
module.

DISCLAIMER: I know that XIM is outdated technology and it is supposed to be
replaced by IIIMF but in reality it is not. An IIIMF implementation is also
planned but until this framework is not accepted more widely I don't see any
merits. A XIM implementation was something that people can quickly switch to
and use.

Setting your preferences

IM-JA has a GUI tool to configure user preferences conveniently. To start it
you can

  ● type im-ja-conf at the command line

  ● right-click on the panel applet and select Preferences

  ● bind a hotkey to start im-ja-conf from any application. Refer to the
    Configurable keys section.

While most GNOME applications react instantly to any changes you make, please
note that the settings you change with im-ja-conf will not be reflected
instantly in already running applications, except for the GNOME panel applet.
You will have to restart already running applications. Also don't forget to
press Apply before closing im-ja-conf if you have changed any settings.

Hotkeys

Double-clicking on a key entry under the Hotkeys tab in im-ja-conf will bring
up a dialog box and wait for your keypress. Most of the action names are
self-explanatory. The behaviour of the action keys is described in the
Configurable keys section.

Preedit Style

The input that can be converted by the input module needs to be differentiated
from the rest of the text for obvious reasons. IM-JA uses underline for this
like most other Japanese input methods do. To indicate that the conversion will
only occur on a part of the preedit text, highlighting is used.

Both the background and foreground (font color) are configurable for the normal
and highlighted preedit text. Usually, the default should suffice unless you
want to make it a bit more fancy looking.

Status Window

People tend to prefer different positions for the status window. You can chose
between four different positions in IM-JA. Note that the preedit window will
always follow the cursor, so this setting only affects the status window.

Below cursor

    With this option the status window will follow the cursor as you type. This
    is the most convenient way for some people because it gives feedback about
    the current input mode without having to look away.

    Note: some applications don't pass a proper cursor position to IM-JA, so
    you it's impossible to display the status window below the cursor. "Bottom
    left" is used with such apps.

Window bottom left

    Another common position for the status window is to attach it to the bottom
    left corner of the window.

Fixed coordinates

    This is handy if you would like to have the status window displayed at a
    fixed position. For example if you don't use the GNOME panel (thus you
    cannot use the applet) you can use this option to make the status window
    appear as if it were on the panel.

Disabled

    Most probably you will use this option if you have the GNOME panel applet
    loaded.

The Status window label is also fully configurable. You can specify a custom
string that you want to have displayed in the status window for each input
mode. The panel applet and the preedit window will be displaying the same.

Conversion Engines

IM-JA can use both the Canna and (free)Wnn conversion engines in addition to
the KanjiPad character recognition interface to convert your input to kanji.
With the Default kanji conversion engine radio button you can select either Wnn
or Canna.

If you are not running the Wnn conversion server (jserver) on localhost, you
can specify the Server address. For Wnn, you will also need to specify the
Wnnenvrc file if it's located in an unusual place. In most cases it should work
fine if you leave it empty because IM-JA will look for it in the most commonly
installed places such as /usr/lib/wnn/ja_JP/wnnenvrc and /usr/share/wnn/ja_JP/
wnnenvrc. If you have trouble using Wnn, make sure you supply the full path to
your wnnenvrc file.

KanjiPad is enabled by default. If its default size is not adequate for you,
you can set a custom window size.

Other

Default startup mode

    Here you can set the Default startup mode. If you chose hiragana, then you
    can immediately enter Japanese without having to press Shift-Space (or the
    key you configured for hiragana mode).

Show preedit window by default

    By default, the preedit window is only shown if the application doesn't
    support preedit mode and requests IM-JA to do so. Here you can override
    this behaviour so that the preedit window will be always displayed.

Candidate window style

    You can select either a dropdown menu or a table to be used as the
    candidate window. The latter is similar to the candidate window in kinput2.

Keys and actions

Configurable Keys

Double-clicking on a key entry under the Hotkeys tab in im-ja-conf will bring
up a dialog box and wait for your keypress. The behaviour of the action keys
described here is for the Wnn conversion engine. Though our goal is to make
both conversion modes act exactly the same, Canna mode might be different in
some cases. If you have used a kana-kanji conversion program before, you should
have no problems with IM-JA. Most of the action names are self-explanatory, but
here is the full list of the description of actions you can bind key
combinations to:

Start the im-ja configurator

    Pressing the assigned key will start im-ja-conf from the application if
    IM-JA is active.

Switch to next input mode

    This will cycle through the next modes in the following order: Direct mode
    -> Hiragana -> Katakana -> Half-width katakana -> Zenkaku romaji ->
    Kanjipad

Switch to previous input mode

    This does the same as the above in reverse order.

Set direct input mode

    This key will put IM-JA into direct input mode. In this mode you can input
    romaji (hankaku) directly into the application without passing it to the
    kanji conversion server.

Toggle hiragana/direct mode

    The default, used by other input method programs such as kinput2, is Shift-
    Space. If IM-JA is in direct mode, pressing this key will change to
    conversion (hiragana) mode. A hiragana "a" on the status window will
    indicate this mode. Your input, in hiragana, will be sent to the conversion
    engine. You can convert your input in this mode by pressing the conversion
    key (space will convert, and another custom key can be assigned as well).
    Pressing this key once again (that is, in Hiragana mode) will switch back
    to direct input mode.

Toggle full/half-width katakana mode

    If in not in full-width katakana mode, pressing this key will put IM-JA
    into full-width katakana input mode. If in full-width katakana mode,
    pressing this key will put IM-JA into half-width katakana input mode.

Toggle half/full-width katakana mode

    If not in half-width katakana mode, pressing this key will put IM-JA into
    half-width katakana input mode. If in half-width katakana mode, pressing
    this key will put IM-JA into full-width katakana input mode.

Toggle Zenkaku/direct mode

    If not in zenkaku romaji (double-width alphanumeric) input mode, pressing
    this key will put IM-JA into Zenkaku romaji input mode. If in zenkaku
    romaji mode, pressing this key will put IM-JA into direct input mode. The
    default key for this action is Zenkaku, which is only found on Japanese
    keyboards.

Toggle kanjipad/direct input mode

    Pressing this key will put IM-JA into KanjiPad mode if it's no already in
    that mode. The KanjiPad widget will pop up into which you can draw kanji
    characters for recognition. If the KanjiPad window is already displayed,
    pressing this key will switch back to direct input mode.

Unconvert current bunsetsu

    Bunsetsu is a phrase (one or more kanji characters making up a word) in a
    sentence. The current bunsetsu is usually highlighted when made up of kanji
    characters. Pressing this key will unconvert it into hiragana. If the
    bunsetsu is already hiragana it will be converted to katakana. The default
    key for this action is Muhenkan, the unconvert key, which is only found on
    Japanese keyboards.

Convert current bunsetsu

    If the input has not been converted yet, IM-JA will convert the whole
    string. If the current bunsetsu is already converted, the next candidate
    will be presented.

Get previous candidate

    This key will present the previous (kanji) candidate for the currently
    converted bunsetsu. The default key for this action is the Up arrow key.

Get next candidate

    This key will present the previous (kanji) candidate for the currently
    converted bunsetsu. The default key for this action is the Down arrow key.

Show all candidates

    This key will present all the candidates in a popup menu for the currently
    converted or bunsetsu. If the string is not converted, it will be converted
    first. You can navigate with the arrow keys and press enter. Space will
    select the next candidate in the menu. You can also use the mouse to make
    your selection. The default key for this action is F9.

Select previous bunsetsu

    This key will jump to the previous bunsetsu in an already converted string
    if there are more of them. The default key for this action is the Left
    arrow key.

Select next bunsetsu

    This key will jump to the next bunsetsu in an already converted string if
    there are more of them. The default key for this action is the Right arrow
    key.

Expand current bunsetsu

    This key will expand the current bunsetsu (highlighted), that is, the next
    character to the right will be added to the bunsetsu. It is used to correct
    the bunsetsu when the conversion engine incudes more/less characters to be
    converted and you don't get the right kanji. The default key combination
    for this action is Shift-Right.

Shrink current bunsetsu

    This key will shrink the current bunsetsu (highlighted), that is, throw the
    rightmost kana outside of the bunsetsu. It is used to correct the bunsetsu
    when the conversion engine incudes more/less characters to be converted and
    you don't get the right kanji. The default key combination for this action
    is Shift-Left.

Toggle preedit window

    The preedit is the underlined text that is converted by the conversion
    server. In the case of GTK input modules, the application is responsible
    for drawing the fonts and setting properties such as the highlight of the
    preedit text. Some applications/widgets are unable to display it properly,
    this is when you can use the preedit window in an over-the-spot fashion.
    Properly written applications (such as the gnome-terminal) will notify
    IM-JA if they cannot display the preedit, in this case the preedit window
    will pop up automatically. If this doesn't happen or just want to invoke
    the preedit window, press this key.

Commit preedit string

    Some applications grab the Enter key for their own use (e.g. Gaim) and
    don't pass it to the input method, thus it is impossible to commit (enter)
    the preedit string into the application. You can configure and additional
    key combination to commit the preedit string that will behave like the
    Enter key.

Symbol input

    As of version 0.8, IM-JA can do sophisticated symbol input such as arrows,
    greek letters and cjk punctuation marks. Since there are just too many
    characters in unicode, symbols are split into groups in IM-JA.

    Pressing this hotkey will pop up a table with the names of symbol groups.
    Clicking on the symbol group will bring up the list of symbols from that
    group. Press Esc if you want to cancel the input.

    Please note that most fonts only support a subset if the unicode character
    set, thus you will be likely to see squares, or even the wrong charaters,
    in place of some symbols. Another minor incovenience is that both WNN and
    CANNA don't support unicode, so it is not possible to pass the symbol input
    to the conversion server. As a result, your preedit will be committed and
    you won't be able to do any conversion on the text that you entered prior
    to the symbol input any more.

UniCode input

    Pressing this hotkey will pop up a simple entry where you can input the
    unicode character code. The code has to be a four digit hexadecimal number.
    IM-JA will notify you if the input was invalid. Press Esc if you want to
    cancel the input.

    Please note that, similarly to Symbol input, it is not possible to pass
    unicode characters to the conversion server. As a result, your preedit will
    be committed and you won't be able to do any conversion on the text that
    you entered prior to the unicode input any more.

JIS Code input

    Pressing this hotkey will pop up a simple entry where you can input a four
    digit JIS Code. IM-JA will notify you if the input was invalid. Press Esc
    if you want to cancel the input.

It is possible to bind keys to directly invoke the Canna and Wnn conversion
mode so you can switch beetween them on the fly. These two actions are not
listed in im-ja-conf, you will have to use the gconf-editor to configure these
under /system/im-ja/hotkeys.

Non-configurable keys

There are some keys with hardcoded behaviour in IM-JA. These are the following:

Enter

    Commit the preedit string.

Escape

    Depending on the (conversion) state in which IM-JA is in, pressing Escape
    will have the following effect:

      ● If the current bunsetsu is converted then unconvert it.

      ● If the current bunsetsu is already unconverted, drop the whole preedit
        text.

      ● If there is no preedit text then set the input to direct mode.

Space

    This is similar in behaviour to the configurable Convert key, except that
    the Convert key won't display the candidate list when you press it multiple
    times in a row. If you press space on an already converted bunsetsu, it
    will present the candidate list.

Backspace

    Backspace, as expected, will delete a character from the left of the cursor
    if it's not in a converted bunsetsu. If it's a converted bunsetsu,
    Backspace will unconvert it first.

Delete

    Delete is similar to Backspace. It will delete a character from the right
    of the cursor if it's not in a converted bunsetsu. If it's a converted
    bunsetsu, it will be unconverted.

Left, Right arrows

    With the arrow keys, you can move the cursor in an unconverted preedit
    text.

Using the GNOME panel applet

To add the applet to your GNOME panel, right-click on the panel, then select
"Add to Panel" -> "Utility" -> "im-ja applet".

The IM-JA GNOME panel applet is used to display the status of the input mode of
the widget in focus. It can be also used to change the input mode without
having to press any hotkey by left-clicking on the applet. This will pop up a
menu from where you can select the desired input mode.

IM-JA and GTK/GNOME Applications

Unfortunately CJK input is far from perfect in GTK2 (and other Linux
applications in general), but it's getting there slowly. The biggest drawback
is that a lot of western developers are not aware of the complications of CJK
input and inadvertently write code that will not function properly with IM-JA
and other input modules.

The most common mistake is when they bind keys to some actions in their
applications and forget about the fact that the key event needs to be processed
by the input module first (e.g., gaim, evolution, gnumeric). Due to the input
method architecture in GTK2, input methods are not the first to recieve the key
events, thus the situation is different from XIM. See http://bugzilla.gnome.org
/show_bug.cgi?id=90082

This can create some additional work for the programmer. Unfortunately this
problem is not very easy to solve once you want to bind additional keys to a
widget. If you are a programmer and are wondering how to satisfy this, here are
some solutions:

  ● Unfortunately using g_signal_connect("key_press_event") seems to be the
    most trivial to most people when trying to bind additional keys to the
    widget. Though this is very simple, there is no real known solution to pass
    key events through the input modules with this approach.

    While it is certainly a lot more work, the only real solution seems to be
    to subclass the widget and use GtkBindingSet. See http://bugzilla.gnome.org
    /show_bug.cgi?id=119051

  ● It probably won't work in most situations but you could connect your
    keyevent handler with g_signal_connect_after to the input widget.

  ● This solution accesses an internal field (im_context) of the widget, it is
    not legal code. Also it will create problems (mostly with XIM modules) in
    case the module generates key events, thus it will end up in a loop. See
    http://bugzilla.gnome.org/show_bug.cgi?id=119075 You should not use this
    solution, but here it is:

    Filter the keyevent through the input method context and only use the
    keyevent if the input module did not handle it (returned FALSE), so you
    should have something like this at the beginning of your event handler:

          if (gtk_im_context_filter_keypress(GTK_TEXT_VIEW(text_view->entry)->im_context, event) == TRUE) return TRUE;
          else {
             /* process the GtkEventKey here */
          }


Stock GTK input widgets

Input widgets in GTK2 are close to perfect. GtkIMContext related bugs are
constantly being fixed, though GTK 2.2.2 still has a few bugs with GtkIMContext
and IM-JA

  ● The combo entry gets the arrow (up,down) keyevents before GtkIMContext does
    if there are entries already in the combo history. So if you wanted to get
    the next kanji candidate in a combo entry, it won't work: the combo entry
    will append its last stored string to the preedit text. There is a patch
    against gtk in IM-JA CVS that fixes this and is already fixed in GTK CVS,
    it will be in 2.2.3.

  ● Cursor is invisible inside a highlighted preedit string (preedit that has
    pango attribute for background set) in GtkEntry, GtkComboEntry,
    GtkAdjustment and possibly others. This bug doesn't affect GtkTextView
    (multiline text area). So if you have custom colors for the normal preedit
    enabled, you won't see your cursor inside the text in those widgets.

Applications with custom widgets

Unfortunately some applications with custom input widgets are far from usable
with IM-JA and some other GTK input modules. The following is a summary about
the (proper lack of) support for IM-JA by some of the latest and most widely
used GTK2 application.

gnome-terminal 2.2.2-1

    gnome-terminal (with libvte) doesn't support preedit (pango attributes).
    This is not a bug, but would be nice to have implemented. If you are using
    kinput2 you won't see the highlight. Luckily, gnome-terminal notifies the
    input method by calling gtk_im_context_set_use_preedit(), so IM-JA will
    show the preedit window and you will be able to properly see the text you
    want to enter.

    You need to start gnome-terminal from a Japanese locale to see the text,
    otherwise you will get mojibake:

     $ LC_ALL="ja_JP" gnome-terminal

    If you have other gnome-terminal instances running from a different locale,
    then you will need to start it with the --disable-factory option, otherwise
    gnome-terminal won't be using the ja_JP locale and you will still get
    mojibake.

evolution 1.4.0-3

    The GtkHTML widget still needs some coding:

       (evolution:21841): gtkhtml-WARNING **: preedit changed callback: implement me

    This only comes from the main edit widget (GtkHTML), other entries work ok.
    There is a patch I wrote available from CVS against gtkhtml that enables
    Japanese input. Also starting the preedit window manually should help to
    see the input.

    Also the Esc and possibly other keys are used in the evolution composer
    without taking the input module into account, so if you press Esc, evo will
    ask if you want to discard the message instead of unconverting the kanji.

abiword 1.9.0+cvs.2003.05.10-1

    The cursor coordinates aren't passed properly to IM-JA so the status widget
    appears in the upper left corner. The preedit doesn't get displayed
    properly either and I get mojibake so it's useless with Japanese.

mozilla 1.3.1-2 and other apps using gecko (galeon, moz-firebird, epiphany,
    etc)

    For some reason the mozilla developers ripped out the "Input Method" menu,
    if you right-click on an input widget, you won't find it there. You can use
    IM-JA by

      ● preloading IM-JA when starting mozilla:

         $ GTK_IM_MODULE="im-ja" mozilla

      ● or if you use galeon, you can right-click on the addressbar or some
        other stock GTK input widget and select Japanese there.

    Otherwise Japanese input works mostly. Coloring (Pango attributes) doesn't
    work though and the cursor position is not passed properly, so you won't
    have the status window below the cursor. As a result, the candidate
    selection window is not in place either.

gaim 0.64

    Enter key is stolen from the input module, so it's impossible to input
    Japanese with im-ja. Solutions: you can configure an additional "Commit
    preedit" key that will behave as Enter. I wrote a patch that fixes gaim
    with IM-JA and kinput2, it's available from CVS.

Troubleshooting

You can try recompiling IM-JA with debugging enabled:

./configure --enable-debug

This will make the GTK module and the xim server print lots of debugging
information which might help you understand what's going on.

If you have any trouble with IM-JA, please contact the mailing list.

Feedback

Contact and support

If you have any suggestions, wishes, comments or want to report a bug or send a
patch, please contact the mailing list. You can subscribe at http://
lists.sourceforge.net/lists/listinfo/im-ja-devel. If you want to contact me
personally, you can reach me at <boti at rocketmail dot com>

Bugreports

Before you report a bug, please make sure you are using the latest version.
Better yet, if you can, please install the CVS version.

If you send bugreports, please include the following information also:

  ● IM-JA version

  ● GTK2 version

  ● recompile IM-JA with the --enable-debug option, run your application from a
    terminal and send us the output. This option will also add debugging
    symbols, so you can run gdb on the applicaton IM-JA is running in.

  ● if relevant, use strace and send us the output.

  ● any other info you might think is important.

Credits

The following people have directly contributed to the development of IM-JA:

  ● Main developer and project lead: Botond Botyanszki <boti at rocketmail dot
    com>.

  ● Canna RK implementation, kanjipad improvements and various other fixes:
    Srin Tuar <srintuar26 at earthlink dot net>

  ● Useful patches and suggestions: Vadim Berezniker <vadim at berezniker dot
    com>

The following people have contributed indirectly to the development of IM-JA:

  ● Although im-ja has evolved a lot since, it is based on im-canna and
    im-nakai written by Yukihiro Nakai which in turn were based on code written
    by Yusuke Tabata. See http://bonobo.gnome.gr.jp/~nakai/immodule/

  ● The kanji recognition uses Owen Taylor's Kanjipad which in turn is based on
    code written by several people. See http://fishsoup.net/software/kanjipad/

  ● Wnnlib was written by Makoto Ishisone, Software Research Associates, Inc.
    and Moribe Hideyuki.

  ● The xim server is heavily based on nabi, a Korean XIM server written by
    Choe Hwanjin <krisna at kldp.org>

  ● The xim server uses IMdkit, a XIM library written by Hidetoshi Tajima.

