public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
From: Peng Huang <phuang@fedoraproject.org>
To: git-commits@fedoraproject.org
Subject: [rpms/ibus] autotool: Update to ibus-1.1.0.20090331
Date: Sun, 31 May 2026 02:04:14 GMT	[thread overview]
Message-ID: <178019305497.1.17498106723953927561.rpms-ibus-95e3c55ee4e8@fedoraproject.org> (raw)

A new commit has been pushed.

Repo   : rpms/ibus
Branch : autotool
Commit : 95e3c55ee4e8de3e088a6293352433a94fe73ad8
Author : Peng Huang <phuang@fedoraproject.org>
Date   : 2009-03-31T03:55:08+00:00
Stats  : +12/-5960 in 4 file(s)
URL    : https://src.fedoraproject.org/rpms/ibus/c/95e3c55ee4e8de3e088a6293352433a94fe73ad8?branch=autotool

Log:
Update to ibus-1.1.0.20090331

---
diff --git a/.cvsignore b/.cvsignore
index 2edcfb9..c7a6516 100644
--- a/.cvsignore
+++ b/.cvsignore
@@ -1 +1 @@
-ibus-1.1.0.20090311.tar.gz
+ibus-1.1.0.20090331.tar.gz

diff --git a/ibus-HEAD.patch b/ibus-HEAD.patch
index a8e5d3d..e69de29 100644
--- a/ibus-HEAD.patch
+++ b/ibus-HEAD.patch
@@ -1,5953 +0,0 @@
-diff --git a/autogen.sh b/autogen.sh
-index c34acab..addc0bd 100755
---- a/autogen.sh
-+++ b/autogen.sh
-@@ -2,13 +2,13 @@
- set -e
- set -x
- 
--autopoint  --force
--libtoolize --automake --copy --force
--gtkdocize  --copy #--flavour=no-tmpl
--aclocal -I m4 --force
--autoheader --force
--automake --add-missing --copy --force
--autoconf --force
-+autopoint  --force || exit 1
-+libtoolize --automake --copy --force || exit 1
-+gtkdocize  --copy || exit 1 #--flavour=no-tmpl
-+aclocal -I m4 --force || exit 1
-+autoheader --force || exit 1
-+automake --add-missing --copy --force || exit 1
-+autoconf --force || exit 1
- export CFLAGS="-Wall -g -O0 -Wl,--no-undefined"
- export CXXFLAGS="$CFLAGS"
--./configure --enable-maintainer-mode $*
-+./configure --enable-maintainer-mode $* || exit 1
-diff --git a/bus/engineproxy.c b/bus/engineproxy.c
-index 647845b..e78fbcf 100644
---- a/bus/engineproxy.c
-+++ b/bus/engineproxy.c
-@@ -541,7 +541,11 @@ bus_engine_proxy_process_key_event_reply_cb (IBusPendingCall *pending,
- 
-     reply_message = dbus_pending_call_steal_reply (pending);
- 
--    if ((error = ibus_error_new_from_message (reply_message)) != NULL) {
-+    if (reply_message == NULL) {
-+        call_data->func(FALSE, call_data->user_data);
-+        return;
-+    }
-+    else if ((error = ibus_error_new_from_message (reply_message)) != NULL) {
-         g_warning ("%s: %s", error->name, error->message);
-         ibus_message_unref (reply_message);
-         ibus_error_free (error);
-diff --git a/bus/inputcontext.c b/bus/inputcontext.c
-index 4d66232..723f3af 100644
---- a/bus/inputcontext.c
-+++ b/bus/inputcontext.c
-@@ -1472,7 +1472,7 @@ bus_input_context_update_lookup_table (BusInputContext *context,
-     if (priv->capabilities & IBUS_CAP_LOOKUP_TABLE) {
-         bus_input_context_send_signal (context,
-                                        "UpdateLookupTable",
--                                       IBUS_TYPE_TEXT, &(priv->lookup_table),
-+                                       IBUS_TYPE_LOOKUP_TABLE, &(priv->lookup_table),
-                                        G_TYPE_BOOLEAN, &(priv->lookup_table_visible),
-                                        G_TYPE_INVALID);
-     }
-diff --git a/client/gtk2/ibusimcontext.c b/client/gtk2/ibusimcontext.c
-index 29e7753..f99e60a 100644
---- a/client/gtk2/ibusimcontext.c
-+++ b/client/gtk2/ibusimcontext.c
-@@ -26,14 +26,17 @@
- #include <ibus.h>
- #include "ibusimcontext.h"
- 
--/* IBusIMContextPriv */
--struct _IBusIMContextPrivate {
-+struct _IBusIMContext {
-+    GtkIMContext parent;
-+
-+    /* instance members */
-     GtkIMContext *slave;
-     GdkWindow *client_window;
-+    GdkWindow *event_window;
- 
-     /* enabled */
-     gboolean        enable;
--    IBusInputContext *ibus_context;
-+    IBusInputContext *ibuscontext;
- 
-     /* preedit status */
-     gchar           *preedit_string;
-@@ -45,6 +48,12 @@ struct _IBusIMContextPrivate {
-     gboolean         has_focus;
- 
-     gint             caps;
-+
-+};
-+
-+struct _IBusIMContextClass {
-+GtkIMContextClass parent;
-+    /* class members */
- };
- 
- static guint    _signal_commit_id = 0;
-@@ -53,17 +62,19 @@ static guint    _signal_preedit_start_id = 0;
- static guint    _signal_preedit_end_id = 0;
- static guint    _signal_delete_surrounding_id = 0;
- static guint    _signal_retrieve_surrounding_id = 0;
-+static GQuark   _q_ibus_im_context = 0;
-+static gboolean _use_key_snooper = TRUE;
- 
- /* functions prototype */
--static void     ibus_im_context_class_init   (IBusIMContextClass    *klass);
--static void     ibus_im_context_init         (GObject               *obj);
--static void     ibus_im_context_finalize     (GObject               *obj);
--static void     ibus_im_context_reset        (GtkIMContext          *context);
-+static void     ibus_im_context_class_init  (IBusIMContextClass    *klass);
-+static void     ibus_im_context_init        (GObject               *obj);
-+static void     ibus_im_context_finalize    (GObject               *obj);
-+static void     ibus_im_context_reset       (GtkIMContext          *context);
- static gboolean ibus_im_context_filter_keypress
-                                             (GtkIMContext           *context,
-                                              GdkEventKey            *key);
--static void     ibus_im_context_focus_in     (GtkIMContext          *context);
--static void     ibus_im_context_focus_out    (GtkIMContext          *context);
-+static void     ibus_im_context_focus_in    (GtkIMContext          *context);
-+static void     ibus_im_context_focus_out   (GtkIMContext          *context);
- static void     ibus_im_context_get_preedit_string
-                                             (GtkIMContext           *context,
-                                              gchar                  **str,
-@@ -72,6 +83,10 @@ static void     ibus_im_context_get_preedit_string
- static void     ibus_im_context_set_client_window
-                                             (GtkIMContext           *context,
-                                              GdkWindow              *client);
-+
-+static void     ibus_im_context_set_event_window
-+                                            (IBusIMContext          *ibusimcontext,
-+                                             GdkWindow              *client);
- static void     ibus_im_context_set_cursor_location
-                                             (GtkIMContext           *context,
-                                              GdkRectangle           *area);
-@@ -166,6 +181,30 @@ ibus_im_context_new (void)
-     return obj;
- }
- 
-+static gint
-+_key_snooper_cb (GtkWidget   *widget,
-+                 GdkEventKey *event,
-+                 gpointer     user_data)
-+{
-+    GdkWindow *gdkwindow;
-+    GtkIMContext *imcontext;
-+
-+    if (!_use_key_snooper)
-+        return 0;
-+
-+    gdkwindow = gtk_widget_get_window (widget);
-+
-+    if (gdkwindow == NULL)
-+        return 0;
-+
-+    imcontext = (GtkIMContext *) g_object_get_qdata ((GObject *) gdkwindow, _q_ibus_im_context);
-+
-+    if (imcontext == NULL)
-+        return 0;
-+
-+    return gtk_im_context_filter_keypress (imcontext, event);
-+}
-+
- static void
- ibus_im_context_class_init     (IBusIMContextClass *klass)
- {
-@@ -174,8 +213,6 @@ ibus_im_context_class_init     (IBusIMContextClass *klass)
- 
-     parent_class = (GtkIMContextClass *) g_type_class_peek_parent (klass);
- 
--    g_type_class_add_private (klass, sizeof (IBusIMContextPrivate));
--
-     im_context_class->reset = ibus_im_context_reset;
-     im_context_class->focus_in = ibus_im_context_focus_in;
-     im_context_class->focus_out = ibus_im_context_focus_out;
-@@ -210,71 +247,75 @@ ibus_im_context_class_init     (IBusIMContextClass *klass)
-         g_signal_lookup ("retrieve-surrounding", G_TYPE_FROM_CLASS (klass));
-     g_assert (_signal_retrieve_surrounding_id != 0);
- 
-+    _q_ibus_im_context = g_quark_from_static_string ("IBusIMContext");
-+
-+    if (_use_key_snooper) {
-+        gtk_key_snooper_install (_key_snooper_cb, NULL);
-+    }
- }
- 
- static void
- ibus_im_context_init (GObject *obj)
- {
- 
--    IBusIMContext *ibuscontext = IBUS_IM_CONTEXT (obj);
--    IBusIMContextPrivate *priv = ibuscontext->priv =
--        G_TYPE_INSTANCE_GET_PRIVATE (ibuscontext, IBUS_TYPE_IM_CONTEXT, IBusIMContextPrivate);
-+    IBusIMContext *ibusimcontext = IBUS_IM_CONTEXT (obj);
- 
--    priv->client_window = NULL;
-+    ibusimcontext->client_window = NULL;
-+    ibusimcontext->event_window = NULL;
- 
-     // Init ibus status
--    priv->enable = FALSE;
-+    ibusimcontext->enable = FALSE;
- 
-     // Init preedit status
--    priv->preedit_string = NULL;
--    priv->preedit_attrs = NULL;
--    priv->preedit_cursor_pos = 0;
--    priv->preedit_visible = FALSE;
-+    ibusimcontext->preedit_string = NULL;
-+    ibusimcontext->preedit_attrs = NULL;
-+    ibusimcontext->preedit_cursor_pos = 0;
-+    ibusimcontext->preedit_visible = FALSE;
- 
-     // Init cursor area
--    priv->cursor_area.x = -1;
--    priv->cursor_area.y = -1;
--    priv->cursor_area.width = 0;
--    priv->cursor_area.height = 0;
-+    ibusimcontext->cursor_area.x = -1;
-+    ibusimcontext->cursor_area.y = -1;
-+    ibusimcontext->cursor_area.width = 0;
-+    ibusimcontext->cursor_area.height = 0;
- 
--    priv->ibus_context = NULL;
--    priv->has_focus = FALSE;
--    priv->caps = IBUS_CAP_PREEDIT_TEXT | IBUS_CAP_FOCUS;
-+    ibusimcontext->ibuscontext = NULL;
-+    ibusimcontext->has_focus = FALSE;
-+    ibusimcontext->caps = IBUS_CAP_PREEDIT_TEXT | IBUS_CAP_FOCUS;
- 
- 
-     // Create slave im context
--    priv->slave = gtk_im_context_simple_new ();
--    g_signal_connect (priv->slave,
-+    ibusimcontext->slave = gtk_im_context_simple_new ();
-+    g_signal_connect (ibusimcontext->slave,
-                       "commit",
-                       G_CALLBACK (_slave_commit_cb),
--                      ibuscontext);
--    g_signal_connect (priv->slave,
-+                      ibusimcontext);
-+    g_signal_connect (ibusimcontext->slave,
-                       "preedit-start",
-                       G_CALLBACK (_slave_preedit_start_cb),
--                      ibuscontext);
--    g_signal_connect (priv->slave,
-+                      ibusimcontext);
-+    g_signal_connect (ibusimcontext->slave,
-                       "preedit-end",
-                       G_CALLBACK (_slave_preedit_end_cb),
--                      ibuscontext);
--    g_signal_connect (priv->slave,
-+                      ibusimcontext);
-+    g_signal_connect (ibusimcontext->slave,
-                       "preedit-changed",
-                       G_CALLBACK (_slave_preedit_changed_cb),
--                      ibuscontext);
--    g_signal_connect (priv->slave,
-+                      ibusimcontext);
-+    g_signal_connect (ibusimcontext->slave,
-                       "retrieve-surrounding",
-                       G_CALLBACK (_slave_retrieve_surrounding_cb),
--                      ibuscontext);
--    g_signal_connect (priv->slave,
-+                      ibusimcontext);
-+    g_signal_connect (ibusimcontext->slave,
-                       "delete-surrounding",
-                       G_CALLBACK (_slave_delete_surrounding_cb),
--                      ibuscontext);
-+                      ibusimcontext);
- 
-     /* init bus object */
-     if (_bus == NULL)
-         _bus = ibus_bus_new();
- 
-     if (ibus_bus_is_connected (_bus)) {
--        _create_input_context (ibuscontext);
-+        _create_input_context (ibusimcontext);
-     }
- 
-     g_signal_connect (_bus, "connected", G_CALLBACK (_bus_connected_cb), obj);
-@@ -286,27 +327,28 @@ ibus_im_context_finalize (GObject *obj)
-     g_return_if_fail (obj != NULL);
-     g_return_if_fail (IBUS_IS_IM_CONTEXT (obj));
- 
--    IBusIMContext *ibus = IBUS_IM_CONTEXT (obj);
--    IBusIMContextPrivate *priv = ibus->priv;
-+    IBusIMContext *ibusimcontext = IBUS_IM_CONTEXT (obj);
- 
-     g_signal_handlers_disconnect_by_func (_bus, G_CALLBACK (_bus_connected_cb), obj);
- 
--    if (priv->ibus_context) {
--        ibus_object_destroy ((IBusObject *)priv->ibus_context);
-+    if (ibusimcontext->ibuscontext) {
-+        ibus_object_destroy ((IBusObject *)ibusimcontext->ibuscontext);
-     }
- 
--    g_object_unref (priv->slave);
-+    ibus_im_context_set_client_window ((GtkIMContext *)ibusimcontext, NULL);
-+    ibus_im_context_set_event_window (ibusimcontext, NULL);
- 
--    if (priv->client_window) {
--        g_object_unref (priv->client_window);
-+    if (ibusimcontext->slave) {
-+        g_object_unref (ibusimcontext->slave);
-+        ibusimcontext->slave = NULL;
-     }
- 
-     // release preedit
--    if (priv->preedit_string) {
--        g_free (priv->preedit_string);
-+    if (ibusimcontext->preedit_string) {
-+        g_free (ibusimcontext->preedit_string);
-     }
--    if (priv->preedit_attrs) {
--        pango_attr_list_unref (priv->preedit_attrs);
-+    if (ibusimcontext->preedit_attrs) {
-+        pango_attr_list_unref (ibusimcontext->preedit_attrs);
-     }
- 
-     G_OBJECT_CLASS(parent_class)->finalize (obj);
-@@ -314,27 +356,30 @@ ibus_im_context_finalize (GObject *obj)
- 
- static gboolean
- ibus_im_context_filter_keypress (GtkIMContext *context,
--                GdkEventKey  *event)
-+                                 GdkEventKey  *event)
- {
-     g_return_val_if_fail (context != NULL, FALSE);
-     g_return_val_if_fail (IBUS_IS_IM_CONTEXT (context), FALSE);
- 
--    IBusIMContext *ibus = IBUS_IM_CONTEXT (context);
--    IBusIMContextPrivate *priv = ibus->priv;
-+    IBusIMContext *ibusimcontext = IBUS_IM_CONTEXT (context);
-+
-+    if (event->window != ibusimcontext->client_window && event->window != ibusimcontext->event_window) {
-+        ibus_im_context_set_event_window (ibusimcontext, event->window);
-+    }
- 
--    if (priv->ibus_context && priv->has_focus) {
-+    if (ibusimcontext->ibuscontext && ibusimcontext->has_focus) {
-         /* If context does not have focus, ibus will process key event in sync mode.
-          * It is a workaround for increase search in treeview.
-          */
-         gboolean retval;
-         switch (event->type) {
-         case GDK_KEY_RELEASE:
--            retval = ibus_input_context_process_key_event (priv->ibus_context,
-+            retval = ibus_input_context_process_key_event (ibusimcontext->ibuscontext,
-                                                            event->keyval,
-                                                            event->state | IBUS_RELEASE_MASK);
-             break;
-         case GDK_KEY_PRESS:
--            retval = ibus_input_context_process_key_event (priv->ibus_context,
-+            retval = ibus_input_context_process_key_event (ibusimcontext->ibuscontext,
-                                                            event->keyval,
-                                                            event->state);
-             break;
-@@ -345,10 +390,10 @@ ibus_im_context_filter_keypress (GtkIMContext *context,
-         if (retval) {
-             return TRUE;
-         }
--        return gtk_im_context_filter_keypress (priv->slave, event);
-+        return gtk_im_context_filter_keypress (ibusimcontext->slave, event);
-     }
-     else {
--        return gtk_im_context_filter_keypress (priv->slave, event);
-+        return gtk_im_context_filter_keypress (ibusimcontext->slave, event);
-     }
- }
- 
-@@ -357,18 +402,15 @@ ibus_im_context_focus_in (GtkIMContext *context)
- {
-     g_assert (IBUS_IS_IM_CONTEXT (context));
- 
--    IBusIMContext *ibuscontext;
--    IBusIMContextPrivate *priv;
-+    IBusIMContext *ibusimcontext;
-+    ibusimcontext = IBUS_IM_CONTEXT (context);
- 
--    ibuscontext = IBUS_IM_CONTEXT (context);
--    priv = ibuscontext->priv;
--
--    priv->has_focus = TRUE;
--    if (priv->ibus_context) {
--        ibus_input_context_focus_in (priv->ibus_context);
-+    ibusimcontext->has_focus = TRUE;
-+    if (ibusimcontext->ibuscontext) {
-+        ibus_input_context_focus_in (ibusimcontext->ibuscontext);
-     }
- 
--    gtk_im_context_focus_in (priv->slave);
-+    gtk_im_context_focus_in (ibusimcontext->slave);
- 
-     _set_cursor_location_internal (context);
- }
-@@ -379,17 +421,14 @@ ibus_im_context_focus_out (GtkIMContext *context)
- 
-     g_assert (IBUS_IS_IM_CONTEXT (context));
- 
--    IBusIMContext *ibuscontext;
--    IBusIMContextPrivate *priv;
--
--    ibuscontext = IBUS_IM_CONTEXT (context);
--    priv = ibuscontext->priv;
-+    IBusIMContext *ibusimcontext;
-+    ibusimcontext = IBUS_IM_CONTEXT (context);
- 
--    priv->has_focus = FALSE;
--    if (priv->ibus_context) {
--        ibus_input_context_focus_out (priv->ibus_context);
-+    ibusimcontext->has_focus = FALSE;
-+    if (ibusimcontext->ibuscontext) {
-+        ibus_input_context_focus_out (ibusimcontext->ibuscontext);
-     }
--    gtk_im_context_focus_out (priv->slave);
-+    gtk_im_context_focus_out (ibusimcontext->slave);
- }
- 
- static void
-@@ -397,16 +436,13 @@ ibus_im_context_reset (GtkIMContext *context)
- {
-     g_assert (IBUS_IS_IM_CONTEXT (context));
- 
--    IBusIMContext *ibuscontext;
--    IBusIMContextPrivate *priv;
--
--    ibuscontext = IBUS_IM_CONTEXT (context);
--    priv = ibuscontext->priv;
-+    IBusIMContext *ibusimcontext;
-+    ibusimcontext = IBUS_IM_CONTEXT (context);
- 
--    if (priv->ibus_context) {
--        ibus_input_context_reset (priv->ibus_context);
-+    if (ibusimcontext->ibuscontext) {
-+        ibus_input_context_reset (ibusimcontext->ibuscontext);
-     }
--    gtk_im_context_reset (priv->slave);
-+    gtk_im_context_reset (ibusimcontext->slave);
- }
- 
- 
-@@ -418,26 +454,23 @@ ibus_im_context_get_preedit_string (GtkIMContext   *context,
- {
-     g_assert (IBUS_IS_IM_CONTEXT (context));
- 
--    IBusIMContext *ibuscontext;
--    IBusIMContextPrivate *priv;
-+    IBusIMContext *ibusimcontext;
-+    ibusimcontext = IBUS_IM_CONTEXT (context);
- 
--    ibuscontext = IBUS_IM_CONTEXT (context);
--    priv = ibuscontext->priv;
--
--    if (priv->enable) {
--        if (priv->preedit_visible) {
-+    if (ibusimcontext->enable) {
-+        if (ibusimcontext->preedit_visible) {
-             if (str) {
--                *str = g_strdup (priv->preedit_string ? priv->preedit_string: "");
-+                *str = g_strdup (ibusimcontext->preedit_string ? ibusimcontext->preedit_string: "");
-             }
- 
-             if (attrs) {
--                *attrs = priv->preedit_attrs ?
--                            pango_attr_list_ref (priv->preedit_attrs):
-+                *attrs = ibusimcontext->preedit_attrs ?
-+                            pango_attr_list_ref (ibusimcontext->preedit_attrs):
-                             pango_attr_list_new ();
-             }
- 
-             if (cursor_pos) {
--                *cursor_pos = priv->preedit_cursor_pos;
-+                *cursor_pos = ibusimcontext->preedit_cursor_pos;
-             }
-         }
-         else {
-@@ -453,56 +486,86 @@ ibus_im_context_get_preedit_string (GtkIMContext   *context,
-         }
-     }
-     else {
--        gtk_im_context_get_preedit_string (priv->slave, str, attrs, cursor_pos);
-+        gtk_im_context_get_preedit_string (ibusimcontext->slave, str, attrs, cursor_pos);
-     }
- }
- 
- 
- static void
--ibus_im_context_set_client_window  (GtkIMContext *context, GdkWindow *client)
-+ibus_im_context_set_client_window (GtkIMContext *context, GdkWindow *client)
- {
-     g_return_if_fail (context != NULL);
-     g_return_if_fail (IBUS_IS_IM_CONTEXT (context));
- 
--    IBusIMContext *ibus = IBUS_IM_CONTEXT (context);
--    IBusIMContextPrivate *priv = ibus->priv;
-+    IBusIMContext *ibusimcontext = IBUS_IM_CONTEXT (context);
- 
--    if (priv->client_window) {
--        g_object_unref (priv->client_window);
-+    if (ibusimcontext->client_window) {
-+        if (g_object_get_qdata ((GObject *) ibusimcontext->client_window, _q_ibus_im_context) == ibusimcontext) {
-+            g_object_set_qdata ((GObject *) ibusimcontext->client_window, _q_ibus_im_context, NULL);
-+        }
-+        g_object_unref (ibusimcontext->client_window);
-     }
- 
-+    ibus_im_context_set_event_window (ibusimcontext, NULL);
-+
-     if (client) {
-         g_object_ref (client);
-+        g_object_ref (ibusimcontext);
-+        g_object_set_qdata_full ((GObject *) client, _q_ibus_im_context, context, g_object_unref);
-     }
- 
--    priv->client_window = client;
--    gtk_im_context_set_client_window (priv->slave, client);
-+    ibusimcontext->client_window = client;
-+
-+    if (ibusimcontext->slave)
-+        gtk_im_context_set_client_window (ibusimcontext->slave, client);
-+}
-+
-+static void
-+ibus_im_context_set_event_window (IBusIMContext *ibusimcontext, GdkWindow *window)
-+{
-+    if (ibusimcontext->event_window) {
-+        if (g_object_get_qdata ((GObject *) ibusimcontext->event_window, _q_ibus_im_context) == ibusimcontext) {
-+            g_object_set_qdata ((GObject *) ibusimcontext->event_window, _q_ibus_im_context, NULL);
-+        }
-+        g_object_unref (ibusimcontext->event_window);
-+        ibusimcontext->event_window = NULL;
-+    }
-+
-+    if (window == ibusimcontext->client_window)
-+        window = NULL;
-+
-+    if (window != NULL) {
-+        g_object_ref (window);
-+        g_object_ref (ibusimcontext);
-+        g_object_set_qdata_full ((GObject *) window, _q_ibus_im_context, ibusimcontext, g_object_unref);
-+    }
-+
-+    ibusimcontext->event_window = window;
- }
- 
- static void
- _set_cursor_location_internal (GtkIMContext *context)
- {
--    IBusIMContext *ibus = IBUS_IM_CONTEXT (context);
--    IBusIMContextPrivate *priv = ibus->priv;
-+    IBusIMContext *ibusimcontext = IBUS_IM_CONTEXT (context);
-     GdkRectangle area;
-     gint x, y;
- 
--    if(priv->client_window == NULL || priv->ibus_context == NULL) {
-+    if(ibusimcontext->client_window == NULL || ibusimcontext->ibuscontext == NULL) {
-         return;
-     }
- 
--    area = priv->cursor_area;
-+    area = ibusimcontext->cursor_area;
-     if (area.x == -1 && area.y == -1 && area.width == 0 && area.height == 0) {
-         gint w, h;
--        gdk_drawable_get_size (priv->client_window, &w, &h);
-+        gdk_drawable_get_size (ibusimcontext->client_window, &w, &h);
-         area.y += h;
-         area.x = 0;
-     }
- 
--    gdk_window_get_origin (priv->client_window, &x, &y);
-+    gdk_window_get_origin (ibusimcontext->client_window, &x, &y);
-     area.x += x;
-     area.y += y;
--    ibus_input_context_set_cursor_location (priv->ibus_context,
-+    ibus_input_context_set_cursor_location (ibusimcontext->ibuscontext,
-                                             area.x,
-                                             area.y,
-                                             area.width,
-@@ -515,12 +578,11 @@ ibus_im_context_set_cursor_location (GtkIMContext *context, GdkRectangle *area)
-     g_return_if_fail (context != NULL);
-     g_return_if_fail (IBUS_IS_IM_CONTEXT (context));
- 
--    IBusIMContext *ibus = IBUS_IM_CONTEXT (context);
--    IBusIMContextPrivate *priv = ibus->priv;
-+    IBusIMContext *ibusimcontext = IBUS_IM_CONTEXT (context);
- 
--    priv->cursor_area = *area;
-+    ibusimcontext->cursor_area = *area;
-     _set_cursor_location_internal (context);
--    gtk_im_context_set_cursor_location (priv->slave, area);
-+    gtk_im_context_set_cursor_location (ibusimcontext->slave, area);
- }
- 
- static void
-@@ -529,60 +591,56 @@ ibus_im_context_set_use_preedit (GtkIMContext *context, gboolean use_preedit)
-     g_return_if_fail (context != NULL);
-     g_return_if_fail (IBUS_IS_IM_CONTEXT (context));
- 
--    IBusIMContext *ibus = IBUS_IM_CONTEXT (context);
--    IBusIMContextPrivate *priv = ibus->priv;
-+    IBusIMContext *ibusimcontext = IBUS_IM_CONTEXT (context);
- 
--    if(priv->ibus_context) {
-+    if(ibusimcontext->ibuscontext) {
-         if (use_preedit) {
--            priv->caps |= IBUS_CAP_PREEDIT_TEXT;
-+            ibusimcontext->caps |= IBUS_CAP_PREEDIT_TEXT;
-         }
-         else {
--            priv->caps &= ~IBUS_CAP_PREEDIT_TEXT;
-+            ibusimcontext->caps &= ~IBUS_CAP_PREEDIT_TEXT;
-         }
--        ibus_input_context_set_capabilities (priv->ibus_context, priv->caps);
-+        ibus_input_context_set_capabilities (ibusimcontext->ibuscontext, ibusimcontext->caps);
-     }
--    gtk_im_context_set_use_preedit (priv->slave, use_preedit);
-+    gtk_im_context_set_use_preedit (ibusimcontext->slave, use_preedit);
- }
- 
- static void
- _bus_connected_cb (IBusBus          *bus,
--                   IBusIMContext    *context)
-+                   IBusIMContext    *ibusimcontext)
- {
--    g_assert (IBUS_IS_IM_CONTEXT (context));
--    g_assert (context->priv->ibus_context == NULL);
-+    g_assert (IBUS_IS_IM_CONTEXT (ibusimcontext));
-+    g_assert (ibusimcontext->ibuscontext == NULL);
- 
--    _create_input_context (context);
-+    _create_input_context (ibusimcontext);
- }
- 
- static void
--_ibus_context_commit_text_cb (IBusInputContext *ibus_context,
-+_ibus_context_commit_text_cb (IBusInputContext *ibuscontext,
-                               IBusText         *text,
--                              IBusIMContext    *context)
-+                              IBusIMContext    *ibusimcontext)
- {
--    g_assert (IBUS_IS_INPUT_CONTEXT (ibus_context));
-+    g_assert (IBUS_IS_INPUT_CONTEXT (ibuscontext));
-     g_assert (IBUS_IS_TEXT (text));
--    g_assert (IBUS_IS_IM_CONTEXT (context));
-+    g_assert (IBUS_IS_IM_CONTEXT (ibusimcontext));
- 
--    g_signal_emit (context, _signal_commit_id, 0, text->text);
-+    g_signal_emit (ibusimcontext, _signal_commit_id, 0, text->text);
- }
- 
- static void
--_ibus_context_forward_key_event_cb (IBusInputContext  *ibus_context,
-+_ibus_context_forward_key_event_cb (IBusInputContext  *ibuscontext,
-                                     guint              keyval,
--                                    gboolean           is_press,
-                                     guint              state,
--                                    IBusIMContext     *context)
-+                                    IBusIMContext     *ibusimcontext)
- {
--    g_assert (IBUS_IS_IM_CONTEXT (context));
-+    g_assert (IBUS_IS_IM_CONTEXT (ibusimcontext));
- 
-     GdkEventKey *event;
--    IBusIMContextPrivate *priv;
- 
--    priv = context->priv;
--    event = (GdkEventKey *)gdk_event_new (is_press ? GDK_KEY_PRESS : GDK_KEY_RELEASE);
-+    event = (GdkEventKey *)gdk_event_new (state & IBUS_RELEASE_MASK ? GDK_KEY_RELEASE : GDK_KEY_PRESS);
- 
-     event->time = GDK_CURRENT_TIME;
--    event->window = g_object_ref (priv->client_window);
-+    event->window = g_object_ref (ibusimcontext->client_window);
-     event->send_event = FALSE;
-     event->state = state;
-     event->keyval = keyval;
-@@ -597,33 +655,31 @@ _ibus_context_forward_key_event_cb (IBusInputContext  *ibus_context,
- }
- 
- static void
--_ibus_context_update_preedit_text_cb (IBusInputContext  *ibus_context,
-+_ibus_context_update_preedit_text_cb (IBusInputContext  *ibuscontext,
-                                       IBusText          *text,
-                                       gint               cursor_pos,
-                                       gboolean           visible,
--                                      IBusIMContext     *context)
-+                                      IBusIMContext     *ibusimcontext)
- {
--    g_assert (IBUS_IS_INPUT_CONTEXT (ibus_context));
-+    g_assert (IBUS_IS_INPUT_CONTEXT (ibuscontext));
-     g_assert (IBUS_IS_TEXT (text));
--    g_assert (IBUS_IS_IM_CONTEXT (context));
-+    g_assert (IBUS_IS_IM_CONTEXT (ibusimcontext));
- 
--    IBusIMContextPrivate *priv;
--    priv = context->priv;
-     const gchar *str;
- 
--    if (priv->preedit_string) {
--        g_free (priv->preedit_string);
-+    if (ibusimcontext->preedit_string) {
-+        g_free (ibusimcontext->preedit_string);
-     }
--    if (priv->preedit_attrs) {
--        pango_attr_list_unref (priv->preedit_attrs);
--        priv->preedit_attrs = NULL;
-+    if (ibusimcontext->preedit_attrs) {
-+        pango_attr_list_unref (ibusimcontext->preedit_attrs);
-+        ibusimcontext->preedit_attrs = NULL;
-     }
- 
-     str = text->text;
--    priv->preedit_string = g_strdup (str);
-+    ibusimcontext->preedit_string = g_strdup (str);
-     if (text->attrs) {
-         guint i;
--        priv->preedit_attrs = pango_attr_list_new ();
-+        ibusimcontext->preedit_attrs = pango_attr_list_new ();
-         for (i = 0; ; i++) {
-             IBusAttribute *attr = ibus_attr_list_get (text->attrs, i);
-             if (attr == NULL) {
-@@ -652,249 +708,244 @@ _ibus_context_update_preedit_text_cb (IBusInputContext  *ibus_context,
-             }
-             pango_attr->start_index = g_utf8_offset_to_pointer (str, attr->start_index) - str;
-             pango_attr->end_index = g_utf8_offset_to_pointer (str, attr->end_index) - str;
--            pango_attr_list_insert (priv->preedit_attrs, pango_attr);
-+            pango_attr_list_insert (ibusimcontext->preedit_attrs, pango_attr);
-         }
-     }
--    priv->preedit_cursor_pos = cursor_pos;
--    priv->preedit_visible = visible;
--    g_signal_emit (context, _signal_preedit_changed_id, 0);
-+    ibusimcontext->preedit_cursor_pos = cursor_pos;
-+    ibusimcontext->preedit_visible = visible;
-+    if (ibusimcontext->preedit_visible) {
-+        g_signal_emit (ibusimcontext, _signal_preedit_start_id, 0);
-+        g_signal_emit (ibusimcontext, _signal_preedit_changed_id, 0);
-+    }
-+    else {
-+        g_signal_emit (ibusimcontext, _signal_preedit_changed_id, 0);
-+        g_signal_emit (ibusimcontext, _signal_preedit_end_id, 0);
-+    }
- }
- 
- static void
--_ibus_context_show_preedit_text_cb (IBusInputContext   *ibus_context,
--                                    IBusIMContext      *context)
-+_ibus_context_show_preedit_text_cb (IBusInputContext   *ibuscontext,
-+                                    IBusIMContext      *ibusimcontext)
- {
--    g_assert (IBUS_IS_IM_CONTEXT (context));
--    IBusIMContextPrivate *priv = context->priv;
-+    g_assert (IBUS_IS_IM_CONTEXT (ibusimcontext));
- 
--    if (priv->preedit_visible == FALSE) {
--        priv->preedit_visible = TRUE;
--        g_signal_emit (context, _signal_preedit_changed_id, 0);
-+    if (ibusimcontext->preedit_visible == FALSE) {
-+        ibusimcontext->preedit_visible = TRUE;
-+        g_signal_emit (ibusimcontext, _signal_preedit_changed_id, 0);
-     }
- }
- 
- static void
--_ibus_context_hide_preedit_text_cb (IBusInputContext   *ibus_context,
--                                    IBusIMContext      *context)
-+_ibus_context_hide_preedit_text_cb (IBusInputContext *ibuscontext,
-+                                    IBusIMContext    *ibusimcontext)
- {
--    g_assert (IBUS_IS_IM_CONTEXT (context));
--    IBusIMContextPrivate *priv = context->priv;
-+    g_assert (IBUS_IS_IM_CONTEXT (ibusimcontext));
- 
--    if (priv->preedit_visible == TRUE) {
--        priv->preedit_visible = FALSE;
--        g_signal_emit (context, _signal_preedit_changed_id, 0);
-+    if (ibusimcontext->preedit_visible == TRUE) {
-+        ibusimcontext->preedit_visible = FALSE;
-+        g_signal_emit (ibusimcontext, _signal_preedit_changed_id, 0);
-     }
- }
- 
- static void
--_ibus_context_enabled_cb (IBusInputContext    *ibus_context,
--                IBusIMContext       *context)
-+_ibus_context_enabled_cb (IBusInputContext *ibuscontext,
-+                          IBusIMContext    *ibusimcontext)
- {
--    g_assert (IBUS_IS_IM_CONTEXT (context));
--    IBusIMContextPrivate *priv = context->priv;
-+    g_assert (IBUS_IS_IM_CONTEXT (ibusimcontext));
- 
--    priv->enable = TRUE;
--    // g_signal_emit (context, _signal_preedit_changed_id, 0);
-+    ibusimcontext->enable = TRUE;
- }
- 
- static void
--_ibus_context_disabled_cb (IBusInputContext   *ibus_context,
--                 IBusIMContext      *context)
-+_ibus_context_disabled_cb (IBusInputContext *ibuscontext,
-+                           IBusIMContext    *ibusimcontext)
- {
--    g_assert (IBUS_IS_IM_CONTEXT (context));
--    IBusIMContextPrivate *priv = context->priv;
-+    ibusimcontext->enable = FALSE;
- 
--    priv->enable = FALSE;
--    
-     /* clear preedit */
--    priv->preedit_visible = FALSE;
--    priv->preedit_cursor_pos = 0;
--    g_free (priv->preedit_string);
--    priv->preedit_string = NULL;
--    
--    g_signal_emit (context, _signal_preedit_changed_id, 0);
-+    ibusimcontext->preedit_visible = FALSE;
-+    ibusimcontext->preedit_cursor_pos = 0;
-+    g_free (ibusimcontext->preedit_string);
-+    ibusimcontext->preedit_string = NULL;
-+
-+    g_signal_emit (ibusimcontext, _signal_preedit_changed_id, 0);
-+    g_signal_emit (ibusimcontext, _signal_preedit_end_id, 0);
- }
- 
- static void
--_ibus_context_destroy_cb (IBusInputContext    *ibus_context,
--                IBusIMContext       *context)
-+_ibus_context_destroy_cb (IBusInputContext *ibuscontext,
-+                          IBusIMContext    *ibusimcontext)
- {
--    g_assert (IBUS_IS_IM_CONTEXT (context));
-+    g_assert (IBUS_IS_IM_CONTEXT (ibusimcontext));
-+    g_assert (ibusimcontext->ibuscontext == ibuscontext);
-+
-+    g_object_unref (ibusimcontext->ibuscontext);
-+    ibusimcontext->ibuscontext = NULL;
- 
--    IBusIMContextPrivate *priv = context->priv;
-+    ibusimcontext->enable = FALSE;
- 
--    g_assert (priv->ibus_context == ibus_context);
-+    /* clear preedit */
-+    ibusimcontext->preedit_visible = FALSE;
-+    ibusimcontext->preedit_cursor_pos = 0;
-+    g_free (ibusimcontext->preedit_string);
-+    ibusimcontext->preedit_string = NULL;
- 
--    g_object_unref (priv->ibus_context);
--    priv->ibus_context = NULL;
--    priv->enable = FALSE;
-+    g_signal_emit (ibusimcontext, _signal_preedit_changed_id, 0);
-+    g_signal_emit (ibusimcontext, _signal_preedit_end_id, 0);
- }
- 
- static void
--_create_input_context (IBusIMContext *context)
-+_create_input_context (IBusIMContext *ibusimcontext)
- {
--    g_assert (IBUS_IS_IM_CONTEXT (context));
--    g_assert (context->priv->ibus_context == NULL);
--
--    IBusIMContextPrivate *priv;
--    priv = context->priv;
-+    g_assert (IBUS_IS_IM_CONTEXT (ibusimcontext));
-+    g_assert (ibusimcontext->ibuscontext == NULL);
- 
--    priv->ibus_context = ibus_bus_create_input_context (_bus, "test");
-+    ibusimcontext->ibuscontext = ibus_bus_create_input_context (_bus, "test");
- 
--    g_signal_connect (priv->ibus_context,
-+    g_signal_connect (ibusimcontext->ibuscontext,
-                       "commit-text",
-                       G_CALLBACK (_ibus_context_commit_text_cb),
--                      context);
--    g_signal_connect (priv->ibus_context,
-+                      ibusimcontext);
-+    g_signal_connect (ibusimcontext->ibuscontext,
-                       "forward-key-event",
-                       G_CALLBACK (_ibus_context_forward_key_event_cb),
--                      context);
--    g_signal_connect (priv->ibus_context,
-+                      ibusimcontext);
-+    g_signal_connect (ibusimcontext->ibuscontext,
-                       "update-preedit-text",
-                       G_CALLBACK (_ibus_context_update_preedit_text_cb),
--                      context);
--    g_signal_connect (priv->ibus_context,
-+                      ibusimcontext);
-+    g_signal_connect (ibusimcontext->ibuscontext,
-                       "show-preedit-text",
-                       G_CALLBACK (_ibus_context_show_preedit_text_cb),
--                      context);
--    g_signal_connect (priv->ibus_context,
-+                      ibusimcontext);
-+    g_signal_connect (ibusimcontext->ibuscontext,
-                       "hide-preedit-text",
-                       G_CALLBACK (_ibus_context_hide_preedit_text_cb),
--                      context);
--    g_signal_connect (priv->ibus_context,
-+                      ibusimcontext);
-+    g_signal_connect (ibusimcontext->ibuscontext,
-                       "enabled",
-                       G_CALLBACK (_ibus_context_enabled_cb),
--                      context);
--    g_signal_connect (priv->ibus_context,
-+                      ibusimcontext);
-+    g_signal_connect (ibusimcontext->ibuscontext,
-                       "disabled",
-                       G_CALLBACK (_ibus_context_disabled_cb),
--                      context);
--    g_signal_connect (priv->ibus_context, "destroy",
-+                      ibusimcontext);
-+    g_signal_connect (ibusimcontext->ibuscontext, "destroy",
-                       G_CALLBACK (_ibus_context_destroy_cb),
--                      context);
-+                      ibusimcontext);
- 
--    ibus_input_context_set_capabilities (priv->ibus_context, priv->caps);
-+    ibus_input_context_set_capabilities (ibusimcontext->ibuscontext, ibusimcontext->caps);
- 
--    if (priv->has_focus) {
--        ibus_input_context_focus_in (priv->ibus_context);
-+    if (ibusimcontext->has_focus) {
-+        ibus_input_context_focus_in (ibusimcontext->ibuscontext);
-     }
- }
- 
- /* Callback functions for slave context */
- static void
--_slave_commit_cb (GtkIMContext *slave, gchar *string, IBusIMContext *context)
-+_slave_commit_cb (GtkIMContext  *slave,
-+                  gchar         *string,
-+                  IBusIMContext *ibusimcontext)
- {
--    g_return_if_fail (context != NULL);
--    g_return_if_fail (IBUS_IS_IM_CONTEXT (context));
-+    g_return_if_fail (IBUS_IS_IM_CONTEXT (ibusimcontext));
- 
--    /* IBusIMContextPrivate *priv = context->priv; */
- #if 0
-     if ((GtkIMContext *)context == CURRENT_CONTEXT && ibus_im_client_is_enabled (_client))
-         return;
- #endif
--    g_signal_emit (context, _signal_commit_id, 0, string);
-+    g_signal_emit (ibusimcontext, _signal_commit_id, 0, string);
- }
- 
- static void
--_slave_preedit_changed_cb (GtkIMContext *slave, IBusIMContext *context)
-+_slave_preedit_changed_cb (GtkIMContext  *slave,
-+                           IBusIMContext *ibusimcontext)
- {
--    g_return_if_fail (context != NULL);
--    g_return_if_fail (IBUS_IS_IM_CONTEXT (context));
-+    g_return_if_fail (IBUS_IS_IM_CONTEXT (ibusimcontext));
- 
--    IBusIMContextPrivate *priv = context->priv;
--
--    if (priv->enable && priv->ibus_context) {
-+    if (ibusimcontext->enable && ibusimcontext->ibuscontext) {
-         return;
-     }
- 
--    g_signal_emit (context, _signal_preedit_changed_id, 0);
-+    g_signal_emit (ibusimcontext, _signal_preedit_changed_id, 0);
- }
- 
- static void
--_slave_preedit_start_cb (GtkIMContext *slave, IBusIMContext *context)
-+_slave_preedit_start_cb (GtkIMContext  *slave,
-+                         IBusIMContext *ibusimcontext)
- {
--    g_return_if_fail (context != NULL);
--    g_return_if_fail (IBUS_IS_IM_CONTEXT (context));
-+    g_return_if_fail (IBUS_IS_IM_CONTEXT (ibusimcontext));
- 
--    IBusIMContextPrivate *priv = context->priv;
--
--    if (priv->enable && priv->ibus_context) {
-+    if (ibusimcontext->enable && ibusimcontext->ibuscontext) {
-         return;
-     }
--    g_signal_emit (context, _signal_preedit_start_id, 0);
-+
-+    g_signal_emit (ibusimcontext, _signal_preedit_start_id, 0);
- }
- 
- static void
--_slave_preedit_end_cb (GtkIMContext *slave, IBusIMContext *context)
-+_slave_preedit_end_cb (GtkIMContext  *slave,
-+                       IBusIMContext *ibusimcontext)
- {
--    g_return_if_fail (context != NULL);
--    g_return_if_fail (IBUS_IS_IM_CONTEXT (context));
--
--    IBusIMContextPrivate *priv = context->priv;
-+    g_return_if_fail (IBUS_IS_IM_CONTEXT (ibusimcontext));
- 
--    if (priv->enable && priv->ibus_context) {
-+    if (ibusimcontext->enable && ibusimcontext->ibuscontext) {
-         return;
-     }
--    g_signal_emit (context, _signal_preedit_end_id, 0);
-+    g_signal_emit (ibusimcontext, _signal_preedit_end_id, 0);
- }
- 
- static void
--_slave_retrieve_surrounding_cb (GtkIMContext *slave, IBusIMContext *context)
-+_slave_retrieve_surrounding_cb (GtkIMContext  *slave,
-+                                IBusIMContext *ibusimcontext)
- {
--    g_return_if_fail (context != NULL);
--    g_return_if_fail (IBUS_IS_IM_CONTEXT (context));
-+    g_return_if_fail (IBUS_IS_IM_CONTEXT (ibusimcontext));
- 
--    IBusIMContextPrivate *priv = context->priv;
--
--    if (priv->enable && priv->ibus_context) {
-+    if (ibusimcontext->enable && ibusimcontext->ibuscontext) {
-         return;
-     }
--    g_signal_emit (context, _signal_retrieve_surrounding_id, 0);
-+    g_signal_emit (ibusimcontext, _signal_retrieve_surrounding_id, 0);
- }
- 
- static void
--_slave_delete_surrounding_cb (GtkIMContext *slave, gint a1, gint a2, IBusIMContext *context)
-+_slave_delete_surrounding_cb (GtkIMContext  *slave,
-+                              gint           a1,
-+                              gint           a2,
-+                              IBusIMContext *ibusimcontext)
- {
--    g_return_if_fail (context != NULL);
--    g_return_if_fail (IBUS_IS_IM_CONTEXT (context));
-+    g_return_if_fail (IBUS_IS_IM_CONTEXT (ibusimcontext));
- 
--    IBusIMContextPrivate *priv = context->priv;
--
--    if (priv->enable && priv->ibus_context) {
-+    if (ibusimcontext->enable && ibusimcontext->ibuscontext) {
-         return;
-     }
--    g_signal_emit (context, _signal_delete_surrounding_id, 0, a1, a2);
-+    g_signal_emit (ibusimcontext, _signal_delete_surrounding_id, 0, a1, a2);
- }
- 
- void
--ibus_im_context_show_preedit (IBusIMContext *context)
-+ibus_im_context_show_preedit (IBusIMContext *ibusimcontext)
- {
--    g_return_if_fail (context != NULL);
--    g_return_if_fail (IBUS_IS_IM_CONTEXT (context));
-+    g_return_if_fail (IBUS_IS_IM_CONTEXT (ibusimcontext));
- 
--    IBusIMContextPrivate *priv = context->priv;
--    if (priv->preedit_visible) {
-+    if (ibusimcontext->preedit_visible) {
-         return;
-     }
- 
--    priv->preedit_visible = TRUE;
-+    ibusimcontext->preedit_visible = TRUE;
- 
--    g_signal_emit (context, _signal_preedit_changed_id, 0);
-+    g_signal_emit (ibusimcontext, _signal_preedit_start_id, 0);
-+    g_signal_emit (ibusimcontext, _signal_preedit_changed_id, 0);
- }
- 
- void
--ibus_im_context_hide_preedit (IBusIMContext *context)
-+ibus_im_context_hide_preedit (IBusIMContext *ibusimcontext)
- {
--    g_return_if_fail (context != NULL);
--    g_return_if_fail (IBUS_IS_IM_CONTEXT (context));
--
--    IBusIMContextPrivate *priv = context->priv;
-+    g_return_if_fail (IBUS_IS_IM_CONTEXT (ibusimcontext));
- 
--    if (!priv->preedit_visible) {
-+    if (!ibusimcontext->preedit_visible) {
-         return;
-     }
- 
--    priv->preedit_visible = FALSE;
-+    ibusimcontext->preedit_visible = FALSE;
- 
--    g_signal_emit (context, _signal_preedit_changed_id, 0);
-+    g_signal_emit (ibusimcontext, _signal_preedit_changed_id, 0);
-+    g_signal_emit (ibusimcontext, _signal_preedit_end_id, 0);
- }
-diff --git a/client/gtk2/ibusimcontext.h b/client/gtk2/ibusimcontext.h
-index 69d382d..eb8895b 100644
---- a/client/gtk2/ibusimcontext.h
-+++ b/client/gtk2/ibusimcontext.h
-@@ -43,16 +43,6 @@ typedef struct _IBusIMContext IBusIMContext;
- typedef struct _IBusIMContextClass IBusIMContextClass;
- typedef struct _IBusIMContextPrivate IBusIMContextPrivate;
- 
--struct _IBusIMContext {
--    GtkIMContext parent;
--    /* instance members */
--    IBusIMContextPrivate *priv;
--};
--
--struct _IBusIMContextClass {
--GtkIMContextClass parent;
--    /* class members */
--};
- 
- GType    ibus_im_context_get_type (void);
- IBusIMContext
-diff --git a/configure.ac b/configure.ac
-index 2b6f0d8..263b83f 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -49,6 +49,13 @@ AC_ISC_POSIX
- AC_HEADER_STDC
- AM_PROG_LIBTOOL
- 
-+# For dislpay Date
-+m4_define(ibus_maybe_datedisplay,
-+    m4_esyscmd([if test x]ibus_released[ != x1; then date '+%a %b %d %Y' | tr -d '\n\r'; fi]))
-+m4_define([ibus_datedisplay], ibus_maybe_datedisplay)
-+DATE_DISPLAY="ibus_datedisplay"
-+AC_SUBST(DATE_DISPLAY)
-+
- # If only source code changed, lt_revision + 1
- # If any interface added, lt_age + 1
- # If any interfaces changed or removed, lt_current + 1
-diff --git a/docs/reference/ibus/Makefile.am b/docs/reference/ibus/Makefile.am
-index c1991f1..310bdef 100644
---- a/docs/reference/ibus/Makefile.am
-+++ b/docs/reference/ibus/Makefile.am
-@@ -25,7 +25,8 @@ SCANGOBJ_OPTIONS=
- 
- # Extra options to supply to gtkdoc-scan.
- # e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED"
--SCAN_OPTIONS=--rebuild-sections
-+# SCAN_OPTIONS=--rebuild-sections
-+SCAN_OPTIONS=
- 
- # Extra options to supply to gtkdoc-mkdb.
- # e.g. MKDB_OPTIONS=--sgml-mode --output-format=xml
-@@ -42,7 +43,7 @@ FIXXREF_OPTIONS=
- # Used for dependencies. The docs will be rebuilt if any of these change.
- # e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h
- # e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c
--HFILE_GLOB=
-+HFILE_GLOB=$(top_srcdir)/src/*.h
- CFILE_GLOB=
- 
- # Header files to ignore when scanning.
-@@ -97,4 +98,10 @@ EXTRA_DIST +=
- 
- # Comment this out if you want your docs-status tested during 'make check'
- #TESTS = $(GTKDOC_CHECK)
--# CLEANFILES += ibus*
-+
-+clean-local:
-+	rm -rf tmpl
-+
-+CLEANFILES+= *.stamp
-+
-+
-diff --git a/docs/reference/ibus/ibus-docs.sgml b/docs/reference/ibus/ibus-docs.sgml
-index 35d0bea..043890c 100644
---- a/docs/reference/ibus/ibus-docs.sgml
-+++ b/docs/reference/ibus/ibus-docs.sgml
-@@ -3,46 +3,76 @@
-                "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
- <book id="index" xmlns:xi="http://www.w3.org/2003/XInclude">
-   <bookinfo>
--    <title>IBus Reference Manual</title>
-+    <title>iBus Reference Manual</title>
-     <releaseinfo>
--      for ibus 1.1.0
-+      iBus 1.1.0 reference manual.
-       The latest version of this documentation can be found on-line at
-       <ulink role="online-location" url="http://code.google.com/p/ibus">http://code.google.com/p/ibus</ulink>.
-     </releaseinfo>
-   </bookinfo>
- 
-   <chapter>
--    <title>API Reference</title>
--    <xi:include href="xml/ibusfactory.xml"/>
--    <xi:include href="xml/ibusattribute.xml"/>
--    <xi:include href="xml/ibusinputcontext.xml"/>
--    <xi:include href="xml/ibusobservedpath.xml"/>
--    <xi:include href="xml/ibusengine.xml"/>
--    <xi:include href="xml/ibusservice.xml"/>
--    <xi:include href="xml/ibuslookuptable.xml"/>
--    <xi:include href="xml/ibusproxy.xml"/>
--    <xi:include href="xml/ibusserver.xml"/>
--    <xi:include href="xml/ibuscomponent.xml"/>
--    <xi:include href="xml/ibusconnection.xml"/>
--    <xi:include href="xml/ibusproperty.xml"/>
--    <xi:include href="xml/ibustext.xml"/>
--    <xi:include href="xml/ibusserializable.xml"/>
--    <xi:include href="xml/ibushotkey.xml"/>
--    <xi:include href="xml/ibusbus.xml"/>
--    <xi:include href="xml/ibusenginedesc.xml"/>
--    <xi:include href="xml/ibusobject.xml"/>
--    <xi:include href="xml/ibusconfig.xml"/>
--    <xi:include href="xml/ibusmessage.xml"/>
--    <xi:include href="xml/ibusdebug.xml"/>
--    <xi:include href="xml/ibusmarshalers.xml"/>
--    <xi:include href="xml/keyname-table.xml"/>
--    <xi:include href="xml/ibustypes.xml"/>
--    <xi:include href="xml/ibuserror.xml"/>
--    <xi:include href="xml/ibuspendingcall.xml"/>
--    <xi:include href="xml/ibuskeysyms.xml"/>
--    <xi:include href="xml/ibusenumtypes.xml"/>
--    <xi:include href="xml/ibusxml.xml"/>
--    <xi:include href="xml/ibusshare.xml"/>
--    <xi:include href="xml/ibusinternal.xml"/>
-+      <title>API Overviews</title>
-+      <para>The iBus API consists 3 parts:
-+	  <emphasis>User interfaces</emphasis> for objects and services which
-+	  are relateed to iBus UI such as language bar;
-+          <emphasis>Input method engine</emphasis> for input method main logic and input/output handling;
-+	  <emphasis>Configure</emphasis> for services for save, load and listening configures.
-+      </para>
-+  </chapter>
-+  <chapter>
-+      <title>User Interfaces</title>
-+      <para>These APIs directly related to User interfaces, such as
-+	  pre-edit buffer, auxiliary text, language bar, button,
-+	  radio boxes, and so on.
-+      </para>
-+      <xi:include href="xml/ibusattribute.xml"/>
-+      <xi:include href="xml/ibuslookuptable.xml"/>
-+      <xi:include href="xml/ibusproperty.xml"/>
-+      <xi:include href="xml/ibustext.xml"/>
-+  </chapter>
-+  <chapter>
-+      <title>Input method engine</title>
-+      <para>
-+      </para>
-+      <xi:include href="xml/ibusbus.xml"/>
-+      <xi:include href="xml/ibuscomponent.xml"/>
-+      <xi:include href="xml/ibusconnection.xml"/>
-+      <xi:include href="xml/ibusengine.xml"/>
-+      <xi:include href="xml/ibusenginedesc.xml"/>
-+      <xi:include href="xml/ibusfactory.xml"/>
-+      <xi:include href="xml/ibushotkey.xml"/>
-+      <xi:include href="xml/ibuskeysyms.xml"/>
-+  </chapter>
-+  <chapter>
-+      <title>Configure</title>
-+      <para>
-+      </para>
-+      <xi:include href="xml/ibusconfig.xml"/>
-+      <xi:include href="xml/ibusconfigservice.xml"/>
-+      <xi:include href="xml/ibusxml.xml"/>
-+  </chapter>
-+  <chapter>
-+      <title>Others</title>
-+      <para>
-+      </para>
-+      <xi:include href="xml/ibusdebug.xml"/>
-+      <xi:include href="xml/ibusenumtypes.xml"/>
-+      <xi:include href="xml/ibuserror.xml"/>
-+      <xi:include href="xml/ibusinputcontext.xml"/>
-+      <xi:include href="xml/ibusinternal.xml"/>
-+      <xi:include href="xml/ibusmarshalers.xml"/>
-+      <xi:include href="xml/ibusmessage.xml"/>
-+      <xi:include href="xml/ibusobject.xml"/>
-+      <xi:include href="xml/ibusobservedpath.xml"/>
-+      <xi:include href="xml/ibuspendingcall.xml"/>
-+      <xi:include href="xml/ibusproxy.xml"/>
-+      <xi:include href="xml/ibusserver.xml"/>
-+      <xi:include href="xml/ibusservice.xml"/>
-+      <xi:include href="xml/ibusserializable.xml"/>
-+      <xi:include href="xml/ibusshare.xml"/>
-+      <xi:include href="xml/ibustypes.xml"/>
-+      <xi:include href="xml/keyname-table.xml"/>
-   </chapter>
- </book>
-+
-diff --git a/docs/reference/ibus/ibus-sections.txt b/docs/reference/ibus/ibus-sections.txt
-new file mode 100644
-index 0000000..201a536
---- /dev/null
-+++ b/docs/reference/ibus/ibus-sections.txt
-@@ -0,0 +1,2710 @@
-+<SECTION>
-+<FILE>ibusproperty</FILE>
-+IBUS_TYPE_PROP_LIST
-+IBUS_PROP_LIST
-+IBUS_PROP_LIST_CLASS
-+IBUS_IS_PROP_LIST
-+IBUS_IS_PROP_LIST_CLASS
-+IBUS_PROP_LIST_GET_CLASS
-+IBusPropType
-+IBusPropState
-+<TITLE>IBusProperty</TITLE>
-+IBusProperty
-+<TITLE>IBusPropList</TITLE>
-+IBusPropList
-+ibus_property_new
-+ibus_property_set_label
-+ibus_property_set_visible
-+ibus_property_set_sub_props
-+ibus_property_update
-+ibus_prop_list_get_type
-+ibus_prop_list_new
-+ibus_prop_list_append
-+ibus_prop_list_get
-+ibus_prop_list_update_property
-+<SUBSECTION Standard>
-+IBUS_PROPERTY
-+IBUS_IS_PROPERTY
-+IBUS_TYPE_PROPERTY
-+ibus_property_get_type
-+IBUS_PROPERTY_CLASS
-+IBUS_IS_PROPERTY_CLASS
-+IBUS_PROPERTY_GET_CLASS
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibusproxy</FILE>
-+<TITLE>IBusProxy</TITLE>
-+IBusProxy
-+ibus_proxy_new
-+ibus_proxy_send
-+ibus_proxy_call
-+ibus_proxy_call_with_reply
-+ibus_proxy_call_with_reply_and_block
-+ibus_proxy_send_with_reply
-+ibus_proxy_send_with_reply_and_block
-+ibus_proxy_handle_signal
-+ibus_proxy_get_name
-+ibus_proxy_get_unique_name
-+ibus_proxy_get_path
-+ibus_proxy_get_interface
-+ibus_proxy_get_connection
-+<SUBSECTION Standard>
-+IBUS_PROXY
-+IBUS_IS_PROXY
-+IBUS_TYPE_PROXY
-+ibus_proxy_get_type
-+IBUS_PROXY_CLASS
-+IBUS_IS_PROXY_CLASS
-+IBUS_PROXY_GET_CLASS
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibusconfig</FILE>
-+<TITLE>IBusConfig</TITLE>
-+IBusConfig
-+ibus_config_new
-+ibus_config_get_value
-+ibus_config_set_value
-+<SUBSECTION Standard>
-+IBUS_CONFIG
-+IBUS_IS_CONFIG
-+IBUS_TYPE_CONFIG
-+ibus_config_get_type
-+IBUS_CONFIG_CLASS
-+IBUS_IS_CONFIG_CLASS
-+IBUS_CONFIG_GET_CLASS
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibushotkey</FILE>
-+<TITLE>IBusHotkeyProfile</TITLE>
-+IBusHotkeyProfile
-+ibus_hotkey_profile_add_hotkey
-+ibus_hotkey_profile_add_hotkey_from_string
-+ibus_hotkey_profile_remove_hotkey
-+ibus_hotkey_profile_remove_hotkey_by_event
-+ibus_hotkey_profile_filter_key_event
-+<SUBSECTION Standard>
-+IBUS_HOTKEY_PROFILE
-+IBUS_IS_HOTKEY_PROFILE
-+IBUS_TYPE_HOTKEY_PROFILE
-+ibus_hotkey_profile_get_type
-+IBUS_HOTKEY_PROFILE_CLASS
-+IBUS_IS_HOTKEY_PROFILE_CLASS
-+IBUS_HOTKEY_PROFILE_GET_CLASS
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibusenginedesc</FILE>
-+BusComponent
-+<TITLE>IBusEngineDesc</TITLE>
-+IBusEngineDesc
-+ibus_engine_desc_new
-+ibus_engine_desc_new_from_xml_node
-+ibus_engine_desc_output
-+<SUBSECTION Standard>
-+IBUS_ENGINE_DESC
-+IBUS_IS_ENGINE_DESC
-+IBUS_TYPE_ENGINE_DESC
-+ibus_engine_desc_get_type
-+IBUS_ENGINE_DESC_CLASS
-+IBUS_IS_ENGINE_DESC_CLASS
-+IBUS_ENGINE_DESC_GET_CLASS
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibusfactory</FILE>
-+IBUS_TYPE_FACTORY_INFO
-+IBUS_FACTORY_INFO
-+IBUS_FACTORY_INFO_CLASS
-+IBUS_IS_FACTORY_INFO
-+IBUS_IS_FACTORY_INFO_CLASS
-+IBUS_FACTORY_INFO_GET_CLASS
-+<TITLE>IBusFactory</TITLE>
-+IBusFactory
-+<TITLE>IBusFactoryInfo</TITLE>
-+IBusFactoryInfo
-+ibus_factory_new
-+ibus_factory_add_engine
-+ibus_factory_get_info
-+ibus_factory_info_get_type
-+ibus_factory_info_new
-+<SUBSECTION Standard>
-+IBUS_FACTORY
-+IBUS_IS_FACTORY
-+IBUS_TYPE_FACTORY
-+ibus_factory_get_type
-+IBUS_FACTORY_CLASS
-+IBUS_IS_FACTORY_CLASS
-+IBUS_FACTORY_GET_CLASS
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibusobject</FILE>
-+IBusObjectFlags
-+IBUS_OBJECT_FLAGS
-+IBUS_OBJECT_SET_FLAGS
-+IBUS_OBJECT_UNSET_FLAGS
-+IBUS_OBJECT_DESTROYED
-+<TITLE>IBusObject</TITLE>
-+IBusObject
-+ibus_object_new
-+ibus_object_destroy
-+<SUBSECTION Standard>
-+IBUS_OBJECT
-+IBUS_IS_OBJECT
-+IBUS_TYPE_OBJECT
-+ibus_object_get_type
-+IBUS_OBJECT_CLASS
-+IBUS_IS_OBJECT_CLASS
-+IBUS_OBJECT_GET_CLASS
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibusbus</FILE>
-+<TITLE>IBusBus</TITLE>
-+IBusBus
-+ibus_bus_new
-+ibus_bus_is_connected
-+ibus_bus_hello
-+ibus_bus_request_name
-+ibus_bus_release_name
-+ibus_bus_name_has_owner
-+ibus_bus_list_names
-+ibus_bus_add_match
-+ibus_bus_remove_match
-+ibus_bus_get_name_owner
-+ibus_bus_exit
-+ibus_bus_register_component
-+ibus_bus_list_engines
-+ibus_bus_list_active_engines
-+ibus_bus_get_config
-+<SUBSECTION Standard>
-+IBUS_BUS
-+IBUS_IS_BUS
-+IBUS_TYPE_BUS
-+ibus_bus_get_type
-+IBUS_BUS_CLASS
-+IBUS_IS_BUS_CLASS
-+IBUS_BUS_GET_CLASS
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibusattribute</FILE>
-+IBUS_TYPE_ATTR_LIST
-+IBUS_ATTR_LIST
-+IBUS_ATTR_LIST_CLASS
-+IBUS_IS_ATTR_LIST
-+IBUS_IS_ATTR_LIST_CLASS
-+IBUS_ATTR_LIST_GET_CLASS
-+IBusAttrType
-+IBusAttrUnderline
-+<TITLE>IBusAttribute</TITLE>
-+IBusAttribute
-+<TITLE>IBusAttrList</TITLE>
-+IBusAttrList
-+ibus_attribute_new
-+ibus_attr_underline_new
-+ibus_attr_foreground_new
-+ibus_attr_background_new
-+ibus_attr_list_get_type
-+ibus_attr_list_new
-+ibus_attr_list_append
-+ibus_attr_list_get
-+<SUBSECTION Standard>
-+IBUS_ATTRIBUTE
-+IBUS_IS_ATTRIBUTE
-+IBUS_TYPE_ATTRIBUTE
-+ibus_attribute_get_type
-+IBUS_ATTRIBUTE_CLASS
-+IBUS_IS_ATTRIBUTE_CLASS
-+IBUS_ATTRIBUTE_GET_CLASS
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibusservice</FILE>
-+ServiceIBusMessageFunc
-+ServiceIBusSignalFunc
-+<TITLE>IBusService</TITLE>
-+IBusService
-+ibus_service_new
-+ibus_service_get_path
-+ibus_service_handle_message
-+ibus_service_add_to_connection
-+ibus_service_get_connections
-+ibus_service_remove_from_connection
-+ibus_service_remove_from_all_connections
-+ibus_service_send_signal
-+<SUBSECTION Standard>
-+IBUS_SERVICE
-+IBUS_IS_SERVICE
-+IBUS_TYPE_SERVICE
-+ibus_service_get_type
-+IBUS_SERVICE_CLASS
-+IBUS_IS_SERVICE_CLASS
-+IBUS_SERVICE_GET_CLASS
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibusserializable</FILE>
-+ibus_serializable_set_attachment
-+ibus_serializable_get_attachment
-+ibus_serializable_remove_attachment
-+IBusSerializableSerializeFunc
-+IBusSerializableDeserializeFunc
-+IBusSerializableCopyFunc
-+<TITLE>IBusSerializable</TITLE>
-+IBusSerializable
-+ibus_serializable_new
-+ibus_serializable_set_qattachment
-+ibus_serializable_get_qattachment
-+ibus_serializable_remove_qattachment
-+ibus_serializable_copy
-+ibus_serializable_serialize
-+ibus_serializable_deserialize
-+<SUBSECTION Standard>
-+IBUS_SERIALIZABLE
-+IBUS_IS_SERIALIZABLE
-+IBUS_TYPE_SERIALIZABLE
-+ibus_serializable_get_type
-+IBUS_SERIALIZABLE_CLASS
-+IBUS_IS_SERIALIZABLE_CLASS
-+IBUS_SERIALIZABLE_GET_CLASS
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibuslookuptable</FILE>
-+<TITLE>IBusLookupTable</TITLE>
-+IBusLookupTable
-+ibus_lookup_table_new
-+ibus_lookup_table_append_candidate
-+ibus_lookup_table_get_candidate
-+ibus_lookup_table_set_cursor_pos
-+ibus_lookup_table_get_cursor_pos
-+ibus_lookup_table_set_cursor_visible
-+ibus_lookup_table_is_cursor_visible
-+ibus_lookup_table_get_cursor_in_page
-+ibus_lookup_table_set_page_size
-+ibus_lookup_table_get_page_size
-+ibus_lookup_table_clear
-+ibus_lookup_table_page_up
-+ibus_lookup_table_page_down
-+ibus_lookup_table_cursor_up
-+ibus_lookup_table_cursor_down
-+<SUBSECTION Standard>
-+IBUS_LOOKUP_TABLE
-+IBUS_IS_LOOKUP_TABLE
-+IBUS_TYPE_LOOKUP_TABLE
-+ibus_lookup_table_get_type
-+IBUS_LOOKUP_TABLE_CLASS
-+IBUS_IS_LOOKUP_TABLE_CLASS
-+IBUS_LOOKUP_TABLE_GET_CLASS
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibustext</FILE>
-+<TITLE>IBusText</TITLE>
-+IBusText
-+ibus_text_new_from_string
-+ibus_text_new_from_ucs4
-+ibus_text_new_from_static_string
-+ibus_text_new_from_printf
-+ibus_text_new_from_unichar
-+ibus_text_append_attribute
-+ibus_text_get_length
-+<SUBSECTION Standard>
-+IBUS_TEXT
-+IBUS_IS_TEXT
-+IBUS_TYPE_TEXT
-+ibus_text_get_type
-+IBUS_TEXT_CLASS
-+IBUS_IS_TEXT_CLASS
-+IBUS_TEXT_GET_CLASS
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibusconnection</FILE>
-+IBusIBusMessageFunc
-+IBusIBusSignalFunc
-+IBusMessageFunc
-+<TITLE>IBusConnection</TITLE>
-+IBusConnection
-+ibus_connection_new
-+ibus_connection_set_connection
-+ibus_connection_open
-+ibus_connection_open_private
-+ibus_connection_close
-+ibus_connection_is_connected
-+ibus_connection_get_connection
-+ibus_connection_read_write_dispatch
-+ibus_connection_send
-+ibus_connection_send_signal
-+ibus_connection_send_signal_valist
-+ibus_connection_send_valist
-+ibus_connection_send_with_reply
-+ibus_connection_send_with_reply_and_block
-+ibus_connection_call
-+ibus_connection_flush
-+ibus_connection_register_object_path
-+ibus_connection_unregister_object_path
-+<SUBSECTION Standard>
-+IBUS_CONNECTION
-+IBUS_IS_CONNECTION
-+IBUS_TYPE_CONNECTION
-+ibus_connection_get_type
-+IBUS_CONNECTION_CLASS
-+IBUS_IS_CONNECTION_CLASS
-+IBUS_CONNECTION_GET_CLASS
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibuscomponent</FILE>
-+<TITLE>IBusComponent</TITLE>
-+IBusComponent
-+ibus_component_new
-+ibus_component_new_from_xml_node
-+ibus_component_new_from_file
-+ibus_component_add_observed_path
-+ibus_component_add_engine
-+ibus_component_get_engines
-+ibus_component_output
-+ibus_component_output_engines
-+ibus_component_check_modification
-+ibus_component_start
-+ibus_component_stop
-+ibus_component_is_running
-+ibus_component_get_from_engine
-+<SUBSECTION Standard>
-+IBUS_COMPONENT
-+IBUS_IS_COMPONENT
-+IBUS_TYPE_COMPONENT
-+ibus_component_get_type
-+IBUS_COMPONENT_CLASS
-+IBUS_IS_COMPONENT_CLASS
-+IBUS_COMPONENT_GET_CLASS
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibusobservedpath</FILE>
-+<TITLE>IBusObservedPath</TITLE>
-+IBusObservedPath
-+ibus_observed_path_new_from_xml_node
-+ibus_observed_path_new
-+ibus_observed_path_traverse
-+ibus_observed_path_check_modification
-+ibus_observed_path_output
-+<SUBSECTION Standard>
-+IBUS_OBSERVED_PATH
-+IBUS_IS_OBSERVED_PATH
-+IBUS_TYPE_OBSERVED_PATH
-+ibus_observed_path_get_type
-+IBUS_OBSERVED_PATH_CLASS
-+IBUS_IS_OBSERVED_PATH_CLASS
-+IBUS_OBSERVED_PATH_GET_CLASS
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibusserver</FILE>
-+IBusNewConnectionFunc
-+<TITLE>IBusServer</TITLE>
-+IBusServer
-+ibus_server_new
-+ibus_server_listen
-+ibus_server_disconnect
-+ibus_server_get_address
-+ibus_server_get_id
-+ibus_server_is_connected
-+<SUBSECTION Standard>
-+IBUS_SERVER
-+IBUS_IS_SERVER
-+IBUS_TYPE_SERVER
-+ibus_server_get_type
-+IBUS_SERVER_CLASS
-+IBUS_IS_SERVER_CLASS
-+IBUS_SERVER_GET_CLASS
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibusengine</FILE>
-+<TITLE>IBusEngine</TITLE>
-+IBusEngine
-+ibus_engine_new
-+ibus_engine_commit_text
-+ibus_engine_update_preedit_text
-+ibus_engine_show_preedit_text
-+ibus_engine_hide_preedit_text
-+ibus_engine_update_auxiliary_text
-+ibus_engine_show_auxiliary_text
-+ibus_engine_hide_auxiliary_text
-+ibus_engine_update_lookup_table
-+ibus_engine_update_lookup_table_fast
-+ibus_engine_show_lookup_table
-+ibus_engine_hide_lookup_table
-+ibus_engine_forward_key_event
-+ibus_engine_register_properties
-+ibus_engine_update_property
-+ibus_engine_get_name
-+<SUBSECTION Standard>
-+IBUS_ENGINE
-+IBUS_IS_ENGINE
-+IBUS_TYPE_ENGINE
-+ibus_engine_get_type
-+IBUS_ENGINE_CLASS
-+IBUS_IS_ENGINE_CLASS
-+IBUS_ENGINE_GET_CLASS
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibusconfigservice</FILE>
-+<TITLE>IBusConfigService</TITLE>
-+IBusConfigService
-+ibus_config_service_new
-+ibus_config_service_value_changed
-+<SUBSECTION Standard>
-+IBUS_CONFIG_SERVICE
-+IBUS_IS_CONFIG_SERVICE
-+IBUS_TYPE_CONFIG_SERVICE
-+ibus_config_service_get_type
-+IBUS_CONFIG_SERVICE_CLASS
-+IBUS_IS_CONFIG_SERVICE_CLASS
-+IBUS_CONFIG_SERVICE_GET_CLASS
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibusinputcontext</FILE>
-+<TITLE>IBusInputContext</TITLE>
-+IBusInputContext
-+ibus_input_context_process_key_event
-+ibus_input_context_set_cursor_location
-+ibus_input_context_set_capabilities
-+ibus_input_context_focus_in
-+ibus_input_context_focus_out
-+ibus_input_context_reset
-+ibus_input_context_enable
-+ibus_input_context_disable
-+<SUBSECTION Standard>
-+IBUS_INPUT_CONTEXT
-+IBUS_IS_INPUT_CONTEXT
-+IBUS_TYPE_INPUT_CONTEXT
-+ibus_input_context_get_type
-+IBUS_INPUT_CONTEXT_CLASS
-+IBUS_IS_INPUT_CONTEXT_CLASS
-+IBUS_INPUT_CONTEXT_GET_CLASS
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibuspendingcall</FILE>
-+IBusPendingCall
-+IBusPendingCallNotifyFunction
-+ibus_pending_call_ref
-+ibus_pending_call_unref
-+ibus_pending_call_set_notify
-+ibus_pending_call_cancel
-+ibus_pending_call_get_completed
-+ibus_pending_call_steal_reply
-+ibus_pending_call_block
-+ibus_pending_call_wait
-+ibus_pending_call_allocate_data_slot
-+ibus_pending_call_free_data_slot
-+ibus_pending_call_set_data
-+ibus_pending_call_get_data
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibusxml</FILE>
-+XMLNode
-+ibus_xml_parse_file
-+ibus_xml_parse_buffer
-+ibus_xml_free
-+ibus_xml_output
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibustypes</FILE>
-+IBusModifierType
-+IBusCapabilite
-+IBusRectangle
-+IBusFreeFunc
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibusmessage</FILE>
-+IBUS_TYPE_OBJECT_PATH
-+IBUS_TYPE_ARRAY
-+IBUS_TYPE_STRUCT
-+IBUS_TYPE_DICT_ENTRY
-+IBUS_TYPE_VARIANT
-+IBusMessage
-+IBusMessageIter
-+ibus_type_get_object_path
-+ibus_type_get_array
-+ibus_type_get_struct
-+ibus_type_get_dict_entry
-+ibus_type_get_variant
-+ibus_message_new
-+ibus_message_ref
-+ibus_message_unref
-+ibus_message_new_method_call
-+ibus_message_new_method_return
-+ibus_message_new_error
-+ibus_message_new_error_printf
-+ibus_message_new_signal
-+ibus_message_is_method_call
-+ibus_message_is_error
-+ibus_message_is_signal
-+ibus_message_set_destination
-+ibus_message_set_sender
-+ibus_message_set_error_name
-+ibus_message_set_interface
-+ibus_message_set_member
-+ibus_message_set_path
-+ibus_message_set_no_reply
-+ibus_message_set_reply_serial
-+ibus_message_get_type
-+ibus_message_get_destination
-+ibus_message_get_sender
-+ibus_message_get_error_name
-+ibus_message_get_error_message
-+ibus_message_get_interface
-+ibus_message_get_member
-+ibus_message_get_path
-+ibus_message_get_no_reply
-+ibus_message_get_reply_serial
-+ibus_message_get_serial
-+ibus_message_append_args
-+ibus_message_append_args_valist
-+ibus_message_get_args
-+ibus_message_get_args_valist
-+ibus_message_iter_init_append
-+ibus_message_iter_append
-+ibus_message_iter_init
-+ibus_message_iter_peek
-+ibus_message_iter_get_basic
-+ibus_message_iter_get
-+ibus_message_iter_next
-+ibus_message_iter_has_next
-+ibus_message_iter_open_container
-+ibus_message_iter_close_container
-+ibus_message_iter_recurse
-+ibus_message_iter_get_arg_type
-+ibus_message_iter_get_element_type
-+ibus_message_to_string
-+</SECTION>
-+
-+<SECTION>
-+<FILE>stamp-ibusenumtypes</FILE>
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibuserror</FILE>
-+IBusError
-+ibus_error_new
-+ibus_error_new_from_text
-+ibus_error_new_from_printf
-+ibus_error_new_from_message
-+ibus_error_free
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibusenumtypes</FILE>
-+ibus_object_flags_get_type
-+IBUS_TYPE_OBJECT_FLAGS
-+ibus_attr_type_get_type
-+IBUS_TYPE_ATTR_TYPE
-+ibus_attr_underline_get_type
-+IBUS_TYPE_ATTR_UNDERLINE
-+ibus_prop_type_get_type
-+IBUS_TYPE_PROP_TYPE
-+ibus_prop_state_get_type
-+IBUS_TYPE_PROP_STATE
-+ibus_modifier_type_get_type
-+IBUS_TYPE_MODIFIER_TYPE
-+ibus_capabilite_get_type
-+IBUS_TYPE_CAPABILITE
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibusshare</FILE>
-+IBUS_SERVICE_IBUS
-+IBUS_SERVICE_PANEL
-+IBUS_SERVICE_CONFIG
-+IBUS_SERVICE_NOTIFICATIONS
-+IBUS_PATH_IBUS
-+IBUS_PATH_FACTORY
-+IBUS_PATH_PANEL
-+IBUS_PATH_CONFIG
-+IBUS_PATH_NOTIFICATIONS
-+IBUS_PATH_INPUT_CONTEXT
-+IBUS_INTERFACE_IBUS
-+IBUS_INTERFACE_INPUT_CONTEXT
-+IBUS_INTERFACE_FACTORY
-+IBUS_INTERFACE_ENGINE
-+IBUS_INTERFACE_PANEL
-+IBUS_INTERFACE_CONFIG
-+IBUS_INTERFACE_NOTIFICATIONS
-+ibus_get_address
-+ibus_get_user_name
-+ibus_get_socket_path
-+ibus_keyval_name
-+ibus_keyval_from_name
-+ibus_free_strv
-+ibus_key_event_to_string
-+ibus_key_event_from_string
-+ibus_init
-+ibus_main
-+ibus_quit
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibusconfigprivate</FILE>
-+</SECTION>
-+
-+<SECTION>
-+<FILE>stamp-ibusmarshalers</FILE>
-+</SECTION>
-+
-+<SECTION>
-+<FILE>keyname-table</FILE>
-+gdk_key
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibusmarshalers</FILE>
-+ibus_marshal_VOID__VOID
-+ibus_marshal_VOID__NONE
-+ibus_marshal_VOID__OBJECT
-+ibus_marshal_VOID__POINTER
-+ibus_marshal_VOID__STRING
-+ibus_marshal_VOID__STRING_INT
-+ibus_marshal_VOID__STRING_UINT
-+ibus_marshal_BOOLEAN__POINTER
-+ibus_marshal_BOOL__POINTER
-+ibus_marshal_BOOLEAN__POINTER_POINTER
-+ibus_marshal_BOOL__POINTER_POINTER
-+ibus_marshal_BOOLEAN__UINT_UINT
-+ibus_marshal_BOOL__UINT_UINT
-+ibus_marshal_VOID__INT_INT_INT_INT
-+ibus_marshal_VOID__UINT_UINT
-+ibus_marshal_VOID__OBJECT_UINT_BOOLEAN
-+ibus_marshal_VOID__OBJECT_UINT_BOOL
-+ibus_marshal_VOID__OBJECT_BOOLEAN
-+ibus_marshal_VOID__OBJECT_BOOL
-+ibus_marshal_VOID__BOXED_BOOLEAN
-+ibus_marshal_VOID__BOXED_BOOL
-+ibus_marshal_VOID__BOXED
-+ibus_marshal_VOID__STRING_STRING_BOXED
-+ibus_marshal_VOID__STRING_STRING_STRING
-+ibus_marshal_VOID__UINT
-+ibus_marshal_VOID__UINT_POINTER
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibus</FILE>
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibuskeysyms</FILE>
-+IBUS_VoidSymbol
-+IBUS_BackSpace
-+IBUS_Tab
-+IBUS_Linefeed
-+IBUS_Clear
-+IBUS_Return
-+IBUS_Pause
-+IBUS_Scroll_Lock
-+IBUS_Sys_Req
-+IBUS_Escape
-+IBUS_Delete
-+IBUS_Multi_key
-+IBUS_Codeinput
-+IBUS_SingleCandidate
-+IBUS_MultipleCandidate
-+IBUS_PreviousCandidate
-+IBUS_Kanji
-+IBUS_Muhenkan
-+IBUS_Henkan_Mode
-+IBUS_Henkan
-+IBUS_Romaji
-+IBUS_Hiragana
-+IBUS_Katakana
-+IBUS_Hiragana_Katakana
-+IBUS_Zenkaku
-+IBUS_Hankaku
-+IBUS_Zenkaku_Hankaku
-+IBUS_Touroku
-+IBUS_Massyo
-+IBUS_Kana_Lock
-+IBUS_Kana_Shift
-+IBUS_Eisu_Shift
-+IBUS_Eisu_toggle
-+IBUS_Kanji_Bangou
-+IBUS_Zen_Koho
-+IBUS_Mae_Koho
-+IBUS_Home
-+IBUS_Left
-+IBUS_Up
-+IBUS_Right
-+IBUS_Down
-+IBUS_Prior
-+IBUS_Page_Up
-+IBUS_Next
-+IBUS_Page_Down
-+IBUS_End
-+IBUS_Begin
-+IBUS_Select
-+IBUS_Print
-+IBUS_Execute
-+IBUS_Insert
-+IBUS_Undo
-+IBUS_Redo
-+IBUS_Menu
-+IBUS_Find
-+IBUS_Cancel
-+IBUS_Help
-+IBUS_Break
-+IBUS_Mode_switch
-+IBUS_script_switch
-+IBUS_Num_Lock
-+IBUS_KP_Space
-+IBUS_KP_Tab
-+IBUS_KP_Enter
-+IBUS_KP_F1
-+IBUS_KP_F2
-+IBUS_KP_F3
-+IBUS_KP_F4
-+IBUS_KP_Home
-+IBUS_KP_Left
-+IBUS_KP_Up
-+IBUS_KP_Right
-+IBUS_KP_Down
-+IBUS_KP_Prior
-+IBUS_KP_Page_Up
-+IBUS_KP_Next
-+IBUS_KP_Page_Down
-+IBUS_KP_End
-+IBUS_KP_Begin
-+IBUS_KP_Insert
-+IBUS_KP_Delete
-+IBUS_KP_Equal
-+IBUS_KP_Multiply
-+IBUS_KP_Add
-+IBUS_KP_Separator
-+IBUS_KP_Subtract
-+IBUS_KP_Decimal
-+IBUS_KP_Divide
-+IBUS_KP_0
-+IBUS_KP_1
-+IBUS_KP_2
-+IBUS_KP_3
-+IBUS_KP_4
-+IBUS_KP_5
-+IBUS_KP_6
-+IBUS_KP_7
-+IBUS_KP_8
-+IBUS_KP_9
-+IBUS_F1
-+IBUS_F2
-+IBUS_F3
-+IBUS_F4
-+IBUS_F5
-+IBUS_F6
-+IBUS_F7
-+IBUS_F8
-+IBUS_F9
-+IBUS_F10
-+IBUS_F11
-+IBUS_L1
-+IBUS_F12
-+IBUS_L2
-+IBUS_F13
-+IBUS_L3
-+IBUS_F14
-+IBUS_L4
-+IBUS_F15
-+IBUS_L5
-+IBUS_F16
-+IBUS_L6
-+IBUS_F17
-+IBUS_L7
-+IBUS_F18
-+IBUS_L8
-+IBUS_F19
-+IBUS_L9
-+IBUS_F20
-+IBUS_L10
-+IBUS_F21
-+IBUS_R1
-+IBUS_F22
-+IBUS_R2
-+IBUS_F23
-+IBUS_R3
-+IBUS_F24
-+IBUS_R4
-+IBUS_F25
-+IBUS_R5
-+IBUS_F26
-+IBUS_R6
-+IBUS_F27
-+IBUS_R7
-+IBUS_F28
-+IBUS_R8
-+IBUS_F29
-+IBUS_R9
-+IBUS_F30
-+IBUS_R10
-+IBUS_F31
-+IBUS_R11
-+IBUS_F32
-+IBUS_R12
-+IBUS_F33
-+IBUS_R13
-+IBUS_F34
-+IBUS_R14
-+IBUS_F35
-+IBUS_R15
-+IBUS_Shift_L
-+IBUS_Shift_R
-+IBUS_Control_L
-+IBUS_Control_R
-+IBUS_Caps_Lock
-+IBUS_Shift_Lock
-+IBUS_Meta_L
-+IBUS_Meta_R
-+IBUS_Alt_L
-+IBUS_Alt_R
-+IBUS_Super_L
-+IBUS_Super_R
-+IBUS_Hyper_L
-+IBUS_Hyper_R
-+IBUS_ISO_Lock
-+IBUS_ISO_Level2_Latch
-+IBUS_ISO_Level3_Shift
-+IBUS_ISO_Level3_Latch
-+IBUS_ISO_Level3_Lock
-+IBUS_ISO_Level5_Shift
-+IBUS_ISO_Level5_Latch
-+IBUS_ISO_Level5_Lock
-+IBUS_ISO_Group_Shift
-+IBUS_ISO_Group_Latch
-+IBUS_ISO_Group_Lock
-+IBUS_ISO_Next_Group
-+IBUS_ISO_Next_Group_Lock
-+IBUS_ISO_Prev_Group
-+IBUS_ISO_Prev_Group_Lock
-+IBUS_ISO_First_Group
-+IBUS_ISO_First_Group_Lock
-+IBUS_ISO_Last_Group
-+IBUS_ISO_Last_Group_Lock
-+IBUS_ISO_Left_Tab
-+IBUS_ISO_Move_Line_Up
-+IBUS_ISO_Move_Line_Down
-+IBUS_ISO_Partial_Line_Up
-+IBUS_ISO_Partial_Line_Down
-+IBUS_ISO_Partial_Space_Left
-+IBUS_ISO_Partial_Space_Right
-+IBUS_ISO_Set_Margin_Left
-+IBUS_ISO_Set_Margin_Right
-+IBUS_ISO_Release_Margin_Left
-+IBUS_ISO_Release_Margin_Right
-+IBUS_ISO_Release_Both_Margins
-+IBUS_ISO_Fast_Cursor_Left
-+IBUS_ISO_Fast_Cursor_Right
-+IBUS_ISO_Fast_Cursor_Up
-+IBUS_ISO_Fast_Cursor_Down
-+IBUS_ISO_Continuous_Underline
-+IBUS_ISO_Discontinuous_Underline
-+IBUS_ISO_Emphasize
-+IBUS_ISO_Center_Object
-+IBUS_ISO_Enter
-+IBUS_dead_grave
-+IBUS_dead_acute
-+IBUS_dead_circumflex
-+IBUS_dead_tilde
-+IBUS_dead_perispomeni
-+IBUS_dead_macron
-+IBUS_dead_breve
-+IBUS_dead_abovedot
-+IBUS_dead_diaeresis
-+IBUS_dead_abovering
-+IBUS_dead_doubleacute
-+IBUS_dead_caron
-+IBUS_dead_cedilla
-+IBUS_dead_ogonek
-+IBUS_dead_iota
-+IBUS_dead_voiced_sound
-+IBUS_dead_semivoiced_sound
-+IBUS_dead_belowdot
-+IBUS_dead_hook
-+IBUS_dead_horn
-+IBUS_dead_stroke
-+IBUS_dead_abovecomma
-+IBUS_dead_psili
-+IBUS_dead_abovereversedcomma
-+IBUS_dead_dasia
-+IBUS_dead_belowring
-+IBUS_dead_belowmacron
-+IBUS_dead_belowcircumflex
-+IBUS_dead_belowtilde
-+IBUS_dead_belowbreve
-+IBUS_dead_belowdiaeresis
-+IBUS_First_Virtual_Screen
-+IBUS_Prev_Virtual_Screen
-+IBUS_Next_Virtual_Screen
-+IBUS_Last_Virtual_Screen
-+IBUS_Terminate_Server
-+IBUS_AccessX_Enable
-+IBUS_AccessX_Feedback_Enable
-+IBUS_RepeatKeys_Enable
-+IBUS_SlowKeys_Enable
-+IBUS_BounceKeys_Enable
-+IBUS_StickyKeys_Enable
-+IBUS_MouseKeys_Enable
-+IBUS_MouseKeys_Accel_Enable
-+IBUS_Overlay1_Enable
-+IBUS_Overlay2_Enable
-+IBUS_AudibleBell_Enable
-+IBUS_Pointer_Left
-+IBUS_Pointer_Right
-+IBUS_Pointer_Up
-+IBUS_Pointer_Down
-+IBUS_Pointer_UpLeft
-+IBUS_Pointer_UpRight
-+IBUS_Pointer_DownLeft
-+IBUS_Pointer_DownRight
-+IBUS_Pointer_Button_Dflt
-+IBUS_Pointer_Button1
-+IBUS_Pointer_Button2
-+IBUS_Pointer_Button3
-+IBUS_Pointer_Button4
-+IBUS_Pointer_Button5
-+IBUS_Pointer_DblClick_Dflt
-+IBUS_Pointer_DblClick1
-+IBUS_Pointer_DblClick2
-+IBUS_Pointer_DblClick3
-+IBUS_Pointer_DblClick4
-+IBUS_Pointer_DblClick5
-+IBUS_Pointer_Drag_Dflt
-+IBUS_Pointer_Drag1
-+IBUS_Pointer_Drag2
-+IBUS_Pointer_Drag3
-+IBUS_Pointer_Drag4
-+IBUS_Pointer_Drag5
-+IBUS_Pointer_EnableKeys
-+IBUS_Pointer_Accelerate
-+IBUS_Pointer_DfltBtnNext
-+IBUS_Pointer_DfltBtnPrev
-+IBUS_3270_Duplicate
-+IBUS_3270_FieldMark
-+IBUS_3270_Right2
-+IBUS_3270_Left2
-+IBUS_3270_BackTab
-+IBUS_3270_EraseEOF
-+IBUS_3270_EraseInput
-+IBUS_3270_Reset
-+IBUS_3270_Quit
-+IBUS_3270_PA1
-+IBUS_3270_PA2
-+IBUS_3270_PA3
-+IBUS_3270_Test
-+IBUS_3270_Attn
-+IBUS_3270_CursorBlink
-+IBUS_3270_AltCursor
-+IBUS_3270_KeyClick
-+IBUS_3270_Jump
-+IBUS_3270_Ident
-+IBUS_3270_Rule
-+IBUS_3270_Copy
-+IBUS_3270_Play
-+IBUS_3270_Setup
-+IBUS_3270_Record
-+IBUS_3270_ChangeScreen
-+IBUS_3270_DeleteWord
-+IBUS_3270_ExSelect
-+IBUS_3270_CursorSelect
-+IBUS_3270_PrintScreen
-+IBUS_3270_Enter
-+IBUS_space
-+IBUS_exclam
-+IBUS_quotedbl
-+IBUS_numbersign
-+IBUS_dollar
-+IBUS_percent
-+IBUS_ampersand
-+IBUS_apostrophe
-+IBUS_quoteright
-+IBUS_parenleft
-+IBUS_parenright
-+IBUS_asterisk
-+IBUS_plus
-+IBUS_comma
-+IBUS_minus
-+IBUS_period
-+IBUS_slash
-+IBUS_0
-+IBUS_1
-+IBUS_2
-+IBUS_3
-+IBUS_4
-+IBUS_5
-+IBUS_6
-+IBUS_7
-+IBUS_8
-+IBUS_9
-+IBUS_colon
-+IBUS_semicolon
-+IBUS_less
-+IBUS_equal
-+IBUS_greater
-+IBUS_question
-+IBUS_at
-+IBUS_A
-+IBUS_B
-+IBUS_C
-+IBUS_D
-+IBUS_E
-+IBUS_F
-+IBUS_G
-+IBUS_H
-+IBUS_I
-+IBUS_J
-+IBUS_K
-+IBUS_L
-+IBUS_M
-+IBUS_N
-+IBUS_O
-+IBUS_P
-+IBUS_Q
-+IBUS_R
-+IBUS_S
-+IBUS_T
-+IBUS_U
-+IBUS_V
-+IBUS_W
-+IBUS_X
-+IBUS_Y
-+IBUS_Z
-+IBUS_bracketleft
-+IBUS_backslash
-+IBUS_bracketright
-+IBUS_asciicircum
-+IBUS_underscore
-+IBUS_grave
-+IBUS_quoteleft
-+IBUS_a
-+IBUS_b
-+IBUS_c
-+IBUS_d
-+IBUS_e
-+IBUS_f
-+IBUS_g
-+IBUS_h
-+IBUS_i
-+IBUS_j
-+IBUS_k
-+IBUS_l
-+IBUS_m
-+IBUS_n
-+IBUS_o
-+IBUS_p
-+IBUS_q
-+IBUS_r
-+IBUS_s
-+IBUS_t
-+IBUS_u
-+IBUS_v
-+IBUS_w
-+IBUS_x
-+IBUS_y
-+IBUS_z
-+IBUS_braceleft
-+IBUS_bar
-+IBUS_braceright
-+IBUS_asciitilde
-+IBUS_nobreakspace
-+IBUS_exclamdown
-+IBUS_cent
-+IBUS_sterling
-+IBUS_currency
-+IBUS_yen
-+IBUS_brokenbar
-+IBUS_section
-+IBUS_diaeresis
-+IBUS_copyright
-+IBUS_ordfeminine
-+IBUS_guillemotleft
-+IBUS_notsign
-+IBUS_hyphen
-+IBUS_registered
-+IBUS_macron
-+IBUS_degree
-+IBUS_plusminus
-+IBUS_twosuperior
-+IBUS_threesuperior
-+IBUS_acute
-+IBUS_mu
-+IBUS_paragraph
-+IBUS_periodcentered
-+IBUS_cedilla
-+IBUS_onesuperior
-+IBUS_masculine
-+IBUS_guillemotright
-+IBUS_onequarter
-+IBUS_onehalf
-+IBUS_threequarters
-+IBUS_questiondown
-+IBUS_Agrave
-+IBUS_Aacute
-+IBUS_Acircumflex
-+IBUS_Atilde
-+IBUS_Adiaeresis
-+IBUS_Aring
-+IBUS_AE
-+IBUS_Ccedilla
-+IBUS_Egrave
-+IBUS_Eacute
-+IBUS_Ecircumflex
-+IBUS_Ediaeresis
-+IBUS_Igrave
-+IBUS_Iacute
-+IBUS_Icircumflex
-+IBUS_Idiaeresis
-+IBUS_ETH
-+IBUS_Eth
-+IBUS_Ntilde
-+IBUS_Ograve
-+IBUS_Oacute
-+IBUS_Ocircumflex
-+IBUS_Otilde
-+IBUS_Odiaeresis
-+IBUS_multiply
-+IBUS_Oslash
-+IBUS_Ooblique
-+IBUS_Ugrave
-+IBUS_Uacute
-+IBUS_Ucircumflex
-+IBUS_Udiaeresis
-+IBUS_Yacute
-+IBUS_THORN
-+IBUS_Thorn
-+IBUS_ssharp
-+IBUS_agrave
-+IBUS_aacute
-+IBUS_acircumflex
-+IBUS_atilde
-+IBUS_adiaeresis
-+IBUS_aring
-+IBUS_ae
-+IBUS_ccedilla
-+IBUS_egrave
-+IBUS_eacute
-+IBUS_ecircumflex
-+IBUS_ediaeresis
-+IBUS_igrave
-+IBUS_iacute
-+IBUS_icircumflex
-+IBUS_idiaeresis
-+IBUS_eth
-+IBUS_ntilde
-+IBUS_ograve
-+IBUS_oacute
-+IBUS_ocircumflex
-+IBUS_otilde
-+IBUS_odiaeresis
-+IBUS_division
-+IBUS_oslash
-+IBUS_ooblique
-+IBUS_ugrave
-+IBUS_uacute
-+IBUS_ucircumflex
-+IBUS_udiaeresis
-+IBUS_yacute
-+IBUS_thorn
-+IBUS_ydiaeresis
-+IBUS_Aogonek
-+IBUS_breve
-+IBUS_Lstroke
-+IBUS_Lcaron
-+IBUS_Sacute
-+IBUS_Scaron
-+IBUS_Scedilla
-+IBUS_Tcaron
-+IBUS_Zacute
-+IBUS_Zcaron
-+IBUS_Zabovedot
-+IBUS_aogonek
-+IBUS_ogonek
-+IBUS_lstroke
-+IBUS_lcaron
-+IBUS_sacute
-+IBUS_caron
-+IBUS_scaron
-+IBUS_scedilla
-+IBUS_tcaron
-+IBUS_zacute
-+IBUS_doubleacute
-+IBUS_zcaron
-+IBUS_zabovedot
-+IBUS_Racute
-+IBUS_Abreve
-+IBUS_Lacute
-+IBUS_Cacute
-+IBUS_Ccaron
-+IBUS_Eogonek
-+IBUS_Ecaron
-+IBUS_Dcaron
-+IBUS_Dstroke
-+IBUS_Nacute
-+IBUS_Ncaron
-+IBUS_Odoubleacute
-+IBUS_Rcaron
-+IBUS_Uring
-+IBUS_Udoubleacute
-+IBUS_Tcedilla
-+IBUS_racute
-+IBUS_abreve
-+IBUS_lacute
-+IBUS_cacute
-+IBUS_ccaron
-+IBUS_eogonek
-+IBUS_ecaron
-+IBUS_dcaron
-+IBUS_dstroke
-+IBUS_nacute
-+IBUS_ncaron
-+IBUS_odoubleacute
-+IBUS_udoubleacute
-+IBUS_rcaron
-+IBUS_uring
-+IBUS_tcedilla
-+IBUS_abovedot
-+IBUS_Hstroke
-+IBUS_Hcircumflex
-+IBUS_Iabovedot
-+IBUS_Gbreve
-+IBUS_Jcircumflex
-+IBUS_hstroke
-+IBUS_hcircumflex
-+IBUS_idotless
-+IBUS_gbreve
-+IBUS_jcircumflex
-+IBUS_Cabovedot
-+IBUS_Ccircumflex
-+IBUS_Gabovedot
-+IBUS_Gcircumflex
-+IBUS_Ubreve
-+IBUS_Scircumflex
-+IBUS_cabovedot
-+IBUS_ccircumflex
-+IBUS_gabovedot
-+IBUS_gcircumflex
-+IBUS_ubreve
-+IBUS_scircumflex
-+IBUS_kra
-+IBUS_kappa
-+IBUS_Rcedilla
-+IBUS_Itilde
-+IBUS_Lcedilla
-+IBUS_Emacron
-+IBUS_Gcedilla
-+IBUS_Tslash
-+IBUS_rcedilla
-+IBUS_itilde
-+IBUS_lcedilla
-+IBUS_emacron
-+IBUS_gcedilla
-+IBUS_tslash
-+IBUS_ENG
-+IBUS_eng
-+IBUS_Amacron
-+IBUS_Iogonek
-+IBUS_Eabovedot
-+IBUS_Imacron
-+IBUS_Ncedilla
-+IBUS_Omacron
-+IBUS_Kcedilla
-+IBUS_Uogonek
-+IBUS_Utilde
-+IBUS_Umacron
-+IBUS_amacron
-+IBUS_iogonek
-+IBUS_eabovedot
-+IBUS_imacron
-+IBUS_ncedilla
-+IBUS_omacron
-+IBUS_kcedilla
-+IBUS_uogonek
-+IBUS_utilde
-+IBUS_umacron
-+IBUS_Babovedot
-+IBUS_babovedot
-+IBUS_Dabovedot
-+IBUS_Wgrave
-+IBUS_Wacute
-+IBUS_dabovedot
-+IBUS_Ygrave
-+IBUS_Fabovedot
-+IBUS_fabovedot
-+IBUS_Mabovedot
-+IBUS_mabovedot
-+IBUS_Pabovedot
-+IBUS_wgrave
-+IBUS_pabovedot
-+IBUS_wacute
-+IBUS_Sabovedot
-+IBUS_ygrave
-+IBUS_Wdiaeresis
-+IBUS_wdiaeresis
-+IBUS_sabovedot
-+IBUS_Wcircumflex
-+IBUS_Tabovedot
-+IBUS_Ycircumflex
-+IBUS_wcircumflex
-+IBUS_tabovedot
-+IBUS_ycircumflex
-+IBUS_OE
-+IBUS_oe
-+IBUS_Ydiaeresis
-+IBUS_overline
-+IBUS_kana_fullstop
-+IBUS_kana_openingbracket
-+IBUS_kana_closingbracket
-+IBUS_kana_comma
-+IBUS_kana_conjunctive
-+IBUS_kana_middledot
-+IBUS_kana_WO
-+IBUS_kana_a
-+IBUS_kana_i
-+IBUS_kana_u
-+IBUS_kana_e
-+IBUS_kana_o
-+IBUS_kana_ya
-+IBUS_kana_yu
-+IBUS_kana_yo
-+IBUS_kana_tsu
-+IBUS_kana_tu
-+IBUS_prolongedsound
-+IBUS_kana_A
-+IBUS_kana_I
-+IBUS_kana_U
-+IBUS_kana_E
-+IBUS_kana_O
-+IBUS_kana_KA
-+IBUS_kana_KI
-+IBUS_kana_KU
-+IBUS_kana_KE
-+IBUS_kana_KO
-+IBUS_kana_SA
-+IBUS_kana_SHI
-+IBUS_kana_SU
-+IBUS_kana_SE
-+IBUS_kana_SO
-+IBUS_kana_TA
-+IBUS_kana_CHI
-+IBUS_kana_TI
-+IBUS_kana_TSU
-+IBUS_kana_TU
-+IBUS_kana_TE
-+IBUS_kana_TO
-+IBUS_kana_NA
-+IBUS_kana_NI
-+IBUS_kana_NU
-+IBUS_kana_NE
-+IBUS_kana_NO
-+IBUS_kana_HA
-+IBUS_kana_HI
-+IBUS_kana_FU
-+IBUS_kana_HU
-+IBUS_kana_HE
-+IBUS_kana_HO
-+IBUS_kana_MA
-+IBUS_kana_MI
-+IBUS_kana_MU
-+IBUS_kana_ME
-+IBUS_kana_MO
-+IBUS_kana_YA
-+IBUS_kana_YU
-+IBUS_kana_YO
-+IBUS_kana_RA
-+IBUS_kana_RI
-+IBUS_kana_RU
-+IBUS_kana_RE
-+IBUS_kana_RO
-+IBUS_kana_WA
-+IBUS_kana_N
-+IBUS_voicedsound
-+IBUS_semivoicedsound
-+IBUS_kana_switch
-+IBUS_Farsi_0
-+IBUS_Farsi_1
-+IBUS_Farsi_2
-+IBUS_Farsi_3
-+IBUS_Farsi_4
-+IBUS_Farsi_5
-+IBUS_Farsi_6
-+IBUS_Farsi_7
-+IBUS_Farsi_8
-+IBUS_Farsi_9
-+IBUS_Arabic_percent
-+IBUS_Arabic_superscript_alef
-+IBUS_Arabic_tteh
-+IBUS_Arabic_peh
-+IBUS_Arabic_tcheh
-+IBUS_Arabic_ddal
-+IBUS_Arabic_rreh
-+IBUS_Arabic_comma
-+IBUS_Arabic_fullstop
-+IBUS_Arabic_0
-+IBUS_Arabic_1
-+IBUS_Arabic_2
-+IBUS_Arabic_3
-+IBUS_Arabic_4
-+IBUS_Arabic_5
-+IBUS_Arabic_6
-+IBUS_Arabic_7
-+IBUS_Arabic_8
-+IBUS_Arabic_9
-+IBUS_Arabic_semicolon
-+IBUS_Arabic_question_mark
-+IBUS_Arabic_hamza
-+IBUS_Arabic_maddaonalef
-+IBUS_Arabic_hamzaonalef
-+IBUS_Arabic_hamzaonwaw
-+IBUS_Arabic_hamzaunderalef
-+IBUS_Arabic_hamzaonyeh
-+IBUS_Arabic_alef
-+IBUS_Arabic_beh
-+IBUS_Arabic_tehmarbuta
-+IBUS_Arabic_teh
-+IBUS_Arabic_theh
-+IBUS_Arabic_jeem
-+IBUS_Arabic_hah
-+IBUS_Arabic_khah
-+IBUS_Arabic_dal
-+IBUS_Arabic_thal
-+IBUS_Arabic_ra
-+IBUS_Arabic_zain
-+IBUS_Arabic_seen
-+IBUS_Arabic_sheen
-+IBUS_Arabic_sad
-+IBUS_Arabic_dad
-+IBUS_Arabic_tah
-+IBUS_Arabic_zah
-+IBUS_Arabic_ain
-+IBUS_Arabic_ghain
-+IBUS_Arabic_tatweel
-+IBUS_Arabic_feh
-+IBUS_Arabic_qaf
-+IBUS_Arabic_kaf
-+IBUS_Arabic_lam
-+IBUS_Arabic_meem
-+IBUS_Arabic_noon
-+IBUS_Arabic_ha
-+IBUS_Arabic_heh
-+IBUS_Arabic_waw
-+IBUS_Arabic_alefmaksura
-+IBUS_Arabic_yeh
-+IBUS_Arabic_fathatan
-+IBUS_Arabic_dammatan
-+IBUS_Arabic_kasratan
-+IBUS_Arabic_fatha
-+IBUS_Arabic_damma
-+IBUS_Arabic_kasra
-+IBUS_Arabic_shadda
-+IBUS_Arabic_sukun
-+IBUS_Arabic_madda_above
-+IBUS_Arabic_hamza_above
-+IBUS_Arabic_hamza_below
-+IBUS_Arabic_jeh
-+IBUS_Arabic_veh
-+IBUS_Arabic_keheh
-+IBUS_Arabic_gaf
-+IBUS_Arabic_noon_ghunna
-+IBUS_Arabic_heh_doachashmee
-+IBUS_Farsi_yeh
-+IBUS_Arabic_farsi_yeh
-+IBUS_Arabic_yeh_baree
-+IBUS_Arabic_heh_goal
-+IBUS_Arabic_switch
-+IBUS_Cyrillic_GHE_bar
-+IBUS_Cyrillic_ghe_bar
-+IBUS_Cyrillic_ZHE_descender
-+IBUS_Cyrillic_zhe_descender
-+IBUS_Cyrillic_KA_descender
-+IBUS_Cyrillic_ka_descender
-+IBUS_Cyrillic_KA_vertstroke
-+IBUS_Cyrillic_ka_vertstroke
-+IBUS_Cyrillic_EN_descender
-+IBUS_Cyrillic_en_descender
-+IBUS_Cyrillic_U_straight
-+IBUS_Cyrillic_u_straight
-+IBUS_Cyrillic_U_straight_bar
-+IBUS_Cyrillic_u_straight_bar
-+IBUS_Cyrillic_HA_descender
-+IBUS_Cyrillic_ha_descender
-+IBUS_Cyrillic_CHE_descender
-+IBUS_Cyrillic_che_descender
-+IBUS_Cyrillic_CHE_vertstroke
-+IBUS_Cyrillic_che_vertstroke
-+IBUS_Cyrillic_SHHA
-+IBUS_Cyrillic_shha
-+IBUS_Cyrillic_SCHWA
-+IBUS_Cyrillic_schwa
-+IBUS_Cyrillic_I_macron
-+IBUS_Cyrillic_i_macron
-+IBUS_Cyrillic_O_bar
-+IBUS_Cyrillic_o_bar
-+IBUS_Cyrillic_U_macron
-+IBUS_Cyrillic_u_macron
-+IBUS_Serbian_dje
-+IBUS_Macedonia_gje
-+IBUS_Cyrillic_io
-+IBUS_Ukrainian_ie
-+IBUS_Ukranian_je
-+IBUS_Macedonia_dse
-+IBUS_Ukrainian_i
-+IBUS_Ukranian_i
-+IBUS_Ukrainian_yi
-+IBUS_Ukranian_yi
-+IBUS_Cyrillic_je
-+IBUS_Serbian_je
-+IBUS_Cyrillic_lje
-+IBUS_Serbian_lje
-+IBUS_Cyrillic_nje
-+IBUS_Serbian_nje
-+IBUS_Serbian_tshe
-+IBUS_Macedonia_kje
-+IBUS_Ukrainian_ghe_with_upturn
-+IBUS_Byelorussian_shortu
-+IBUS_Cyrillic_dzhe
-+IBUS_Serbian_dze
-+IBUS_numerosign
-+IBUS_Serbian_DJE
-+IBUS_Macedonia_GJE
-+IBUS_Cyrillic_IO
-+IBUS_Ukrainian_IE
-+IBUS_Ukranian_JE
-+IBUS_Macedonia_DSE
-+IBUS_Ukrainian_I
-+IBUS_Ukranian_I
-+IBUS_Ukrainian_YI
-+IBUS_Ukranian_YI
-+IBUS_Cyrillic_JE
-+IBUS_Serbian_JE
-+IBUS_Cyrillic_LJE
-+IBUS_Serbian_LJE
-+IBUS_Cyrillic_NJE
-+IBUS_Serbian_NJE
-+IBUS_Serbian_TSHE
-+IBUS_Macedonia_KJE
-+IBUS_Ukrainian_GHE_WITH_UPTURN
-+IBUS_Byelorussian_SHORTU
-+IBUS_Cyrillic_DZHE
-+IBUS_Serbian_DZE
-+IBUS_Cyrillic_yu
-+IBUS_Cyrillic_a
-+IBUS_Cyrillic_be
-+IBUS_Cyrillic_tse
-+IBUS_Cyrillic_de
-+IBUS_Cyrillic_ie
-+IBUS_Cyrillic_ef
-+IBUS_Cyrillic_ghe
-+IBUS_Cyrillic_ha
-+IBUS_Cyrillic_i
-+IBUS_Cyrillic_shorti
-+IBUS_Cyrillic_ka
-+IBUS_Cyrillic_el
-+IBUS_Cyrillic_em
-+IBUS_Cyrillic_en
-+IBUS_Cyrillic_o
-+IBUS_Cyrillic_pe
-+IBUS_Cyrillic_ya
-+IBUS_Cyrillic_er
-+IBUS_Cyrillic_es
-+IBUS_Cyrillic_te
-+IBUS_Cyrillic_u
-+IBUS_Cyrillic_zhe
-+IBUS_Cyrillic_ve
-+IBUS_Cyrillic_softsign
-+IBUS_Cyrillic_yeru
-+IBUS_Cyrillic_ze
-+IBUS_Cyrillic_sha
-+IBUS_Cyrillic_e
-+IBUS_Cyrillic_shcha
-+IBUS_Cyrillic_che
-+IBUS_Cyrillic_hardsign
-+IBUS_Cyrillic_YU
-+IBUS_Cyrillic_A
-+IBUS_Cyrillic_BE
-+IBUS_Cyrillic_TSE
-+IBUS_Cyrillic_DE
-+IBUS_Cyrillic_IE
-+IBUS_Cyrillic_EF
-+IBUS_Cyrillic_GHE
-+IBUS_Cyrillic_HA
-+IBUS_Cyrillic_I
-+IBUS_Cyrillic_SHORTI
-+IBUS_Cyrillic_KA
-+IBUS_Cyrillic_EL
-+IBUS_Cyrillic_EM
-+IBUS_Cyrillic_EN
-+IBUS_Cyrillic_O
-+IBUS_Cyrillic_PE
-+IBUS_Cyrillic_YA
-+IBUS_Cyrillic_ER
-+IBUS_Cyrillic_ES
-+IBUS_Cyrillic_TE
-+IBUS_Cyrillic_U
-+IBUS_Cyrillic_ZHE
-+IBUS_Cyrillic_VE
-+IBUS_Cyrillic_SOFTSIGN
-+IBUS_Cyrillic_YERU
-+IBUS_Cyrillic_ZE
-+IBUS_Cyrillic_SHA
-+IBUS_Cyrillic_E
-+IBUS_Cyrillic_SHCHA
-+IBUS_Cyrillic_CHE
-+IBUS_Cyrillic_HARDSIGN
-+IBUS_Greek_ALPHAaccent
-+IBUS_Greek_EPSILONaccent
-+IBUS_Greek_ETAaccent
-+IBUS_Greek_IOTAaccent
-+IBUS_Greek_IOTAdieresis
-+IBUS_Greek_IOTAdiaeresis
-+IBUS_Greek_OMICRONaccent
-+IBUS_Greek_UPSILONaccent
-+IBUS_Greek_UPSILONdieresis
-+IBUS_Greek_OMEGAaccent
-+IBUS_Greek_accentdieresis
-+IBUS_Greek_horizbar
-+IBUS_Greek_alphaaccent
-+IBUS_Greek_epsilonaccent
-+IBUS_Greek_etaaccent
-+IBUS_Greek_iotaaccent
-+IBUS_Greek_iotadieresis
-+IBUS_Greek_iotaaccentdieresis
-+IBUS_Greek_omicronaccent
-+IBUS_Greek_upsilonaccent
-+IBUS_Greek_upsilondieresis
-+IBUS_Greek_upsilonaccentdieresis
-+IBUS_Greek_omegaaccent
-+IBUS_Greek_ALPHA
-+IBUS_Greek_BETA
-+IBUS_Greek_GAMMA
-+IBUS_Greek_DELTA
-+IBUS_Greek_EPSILON
-+IBUS_Greek_ZETA
-+IBUS_Greek_ETA
-+IBUS_Greek_THETA
-+IBUS_Greek_IOTA
-+IBUS_Greek_KAPPA
-+IBUS_Greek_LAMDA
-+IBUS_Greek_LAMBDA
-+IBUS_Greek_MU
-+IBUS_Greek_NU
-+IBUS_Greek_XI
-+IBUS_Greek_OMICRON
-+IBUS_Greek_PI
-+IBUS_Greek_RHO
-+IBUS_Greek_SIGMA
-+IBUS_Greek_TAU
-+IBUS_Greek_UPSILON
-+IBUS_Greek_PHI
-+IBUS_Greek_CHI
-+IBUS_Greek_PSI
-+IBUS_Greek_OMEGA
-+IBUS_Greek_alpha
-+IBUS_Greek_beta
-+IBUS_Greek_gamma
-+IBUS_Greek_delta
-+IBUS_Greek_epsilon
-+IBUS_Greek_zeta
-+IBUS_Greek_eta
-+IBUS_Greek_theta
-+IBUS_Greek_iota
-+IBUS_Greek_kappa
-+IBUS_Greek_lamda
-+IBUS_Greek_lambda
-+IBUS_Greek_mu
-+IBUS_Greek_nu
-+IBUS_Greek_xi
-+IBUS_Greek_omicron
-+IBUS_Greek_pi
-+IBUS_Greek_rho
-+IBUS_Greek_sigma
-+IBUS_Greek_finalsmallsigma
-+IBUS_Greek_tau
-+IBUS_Greek_upsilon
-+IBUS_Greek_phi
-+IBUS_Greek_chi
-+IBUS_Greek_psi
-+IBUS_Greek_omega
-+IBUS_Greek_switch
-+IBUS_leftradical
-+IBUS_topleftradical
-+IBUS_horizconnector
-+IBUS_topintegral
-+IBUS_botintegral
-+IBUS_vertconnector
-+IBUS_topleftsqbracket
-+IBUS_botleftsqbracket
-+IBUS_toprightsqbracket
-+IBUS_botrightsqbracket
-+IBUS_topleftparens
-+IBUS_botleftparens
-+IBUS_toprightparens
-+IBUS_botrightparens
-+IBUS_leftmiddlecurlybrace
-+IBUS_rightmiddlecurlybrace
-+IBUS_topleftsummation
-+IBUS_botleftsummation
-+IBUS_topvertsummationconnector
-+IBUS_botvertsummationconnector
-+IBUS_toprightsummation
-+IBUS_botrightsummation
-+IBUS_rightmiddlesummation
-+IBUS_lessthanequal
-+IBUS_notequal
-+IBUS_greaterthanequal
-+IBUS_integral
-+IBUS_therefore
-+IBUS_variation
-+IBUS_infinity
-+IBUS_nabla
-+IBUS_approximate
-+IBUS_similarequal
-+IBUS_ifonlyif
-+IBUS_implies
-+IBUS_identical
-+IBUS_radical
-+IBUS_includedin
-+IBUS_includes
-+IBUS_intersection
-+IBUS_union
-+IBUS_logicaland
-+IBUS_logicalor
-+IBUS_partialderivative
-+IBUS_function
-+IBUS_leftarrow
-+IBUS_uparrow
-+IBUS_rightarrow
-+IBUS_downarrow
-+IBUS_blank
-+IBUS_soliddiamond
-+IBUS_checkerboard
-+IBUS_ht
-+IBUS_ff
-+IBUS_cr
-+IBUS_lf
-+IBUS_nl
-+IBUS_vt
-+IBUS_lowrightcorner
-+IBUS_uprightcorner
-+IBUS_upleftcorner
-+IBUS_lowleftcorner
-+IBUS_crossinglines
-+IBUS_horizlinescan1
-+IBUS_horizlinescan3
-+IBUS_horizlinescan5
-+IBUS_horizlinescan7
-+IBUS_horizlinescan9
-+IBUS_leftt
-+IBUS_rightt
-+IBUS_bott
-+IBUS_topt
-+IBUS_vertbar
-+IBUS_emspace
-+IBUS_enspace
-+IBUS_em3space
-+IBUS_em4space
-+IBUS_digitspace
-+IBUS_punctspace
-+IBUS_thinspace
-+IBUS_hairspace
-+IBUS_emdash
-+IBUS_endash
-+IBUS_signifblank
-+IBUS_ellipsis
-+IBUS_doubbaselinedot
-+IBUS_onethird
-+IBUS_twothirds
-+IBUS_onefifth
-+IBUS_twofifths
-+IBUS_threefifths
-+IBUS_fourfifths
-+IBUS_onesixth
-+IBUS_fivesixths
-+IBUS_careof
-+IBUS_figdash
-+IBUS_leftanglebracket
-+IBUS_decimalpoint
-+IBUS_rightanglebracket
-+IBUS_marker
-+IBUS_oneeighth
-+IBUS_threeeighths
-+IBUS_fiveeighths
-+IBUS_seveneighths
-+IBUS_trademark
-+IBUS_signaturemark
-+IBUS_trademarkincircle
-+IBUS_leftopentriangle
-+IBUS_rightopentriangle
-+IBUS_emopencircle
-+IBUS_emopenrectangle
-+IBUS_leftsinglequotemark
-+IBUS_rightsinglequotemark
-+IBUS_leftdoublequotemark
-+IBUS_rightdoublequotemark
-+IBUS_prescription
-+IBUS_minutes
-+IBUS_seconds
-+IBUS_latincross
-+IBUS_hexagram
-+IBUS_filledrectbullet
-+IBUS_filledlefttribullet
-+IBUS_filledrighttribullet
-+IBUS_emfilledcircle
-+IBUS_emfilledrect
-+IBUS_enopencircbullet
-+IBUS_enopensquarebullet
-+IBUS_openrectbullet
-+IBUS_opentribulletup
-+IBUS_opentribulletdown
-+IBUS_openstar
-+IBUS_enfilledcircbullet
-+IBUS_enfilledsqbullet
-+IBUS_filledtribulletup
-+IBUS_filledtribulletdown
-+IBUS_leftpointer
-+IBUS_rightpointer
-+IBUS_club
-+IBUS_diamond
-+IBUS_heart
-+IBUS_maltesecross
-+IBUS_dagger
-+IBUS_doubledagger
-+IBUS_checkmark
-+IBUS_ballotcross
-+IBUS_musicalsharp
-+IBUS_musicalflat
-+IBUS_malesymbol
-+IBUS_femalesymbol
-+IBUS_telephone
-+IBUS_telephonerecorder
-+IBUS_phonographcopyright
-+IBUS_caret
-+IBUS_singlelowquotemark
-+IBUS_doublelowquotemark
-+IBUS_cursor
-+IBUS_leftcaret
-+IBUS_rightcaret
-+IBUS_downcaret
-+IBUS_upcaret
-+IBUS_overbar
-+IBUS_downtack
-+IBUS_upshoe
-+IBUS_downstile
-+IBUS_underbar
-+IBUS_jot
-+IBUS_quad
-+IBUS_uptack
-+IBUS_circle
-+IBUS_upstile
-+IBUS_downshoe
-+IBUS_rightshoe
-+IBUS_leftshoe
-+IBUS_lefttack
-+IBUS_righttack
-+IBUS_hebrew_doublelowline
-+IBUS_hebrew_aleph
-+IBUS_hebrew_bet
-+IBUS_hebrew_beth
-+IBUS_hebrew_gimel
-+IBUS_hebrew_gimmel
-+IBUS_hebrew_dalet
-+IBUS_hebrew_daleth
-+IBUS_hebrew_he
-+IBUS_hebrew_waw
-+IBUS_hebrew_zain
-+IBUS_hebrew_zayin
-+IBUS_hebrew_chet
-+IBUS_hebrew_het
-+IBUS_hebrew_tet
-+IBUS_hebrew_teth
-+IBUS_hebrew_yod
-+IBUS_hebrew_finalkaph
-+IBUS_hebrew_kaph
-+IBUS_hebrew_lamed
-+IBUS_hebrew_finalmem
-+IBUS_hebrew_mem
-+IBUS_hebrew_finalnun
-+IBUS_hebrew_nun
-+IBUS_hebrew_samech
-+IBUS_hebrew_samekh
-+IBUS_hebrew_ayin
-+IBUS_hebrew_finalpe
-+IBUS_hebrew_pe
-+IBUS_hebrew_finalzade
-+IBUS_hebrew_finalzadi
-+IBUS_hebrew_zade
-+IBUS_hebrew_zadi
-+IBUS_hebrew_qoph
-+IBUS_hebrew_kuf
-+IBUS_hebrew_resh
-+IBUS_hebrew_shin
-+IBUS_hebrew_taw
-+IBUS_hebrew_taf
-+IBUS_Hebrew_switch
-+IBUS_Thai_kokai
-+IBUS_Thai_khokhai
-+IBUS_Thai_khokhuat
-+IBUS_Thai_khokhwai
-+IBUS_Thai_khokhon
-+IBUS_Thai_khorakhang
-+IBUS_Thai_ngongu
-+IBUS_Thai_chochan
-+IBUS_Thai_choching
-+IBUS_Thai_chochang
-+IBUS_Thai_soso
-+IBUS_Thai_chochoe
-+IBUS_Thai_yoying
-+IBUS_Thai_dochada
-+IBUS_Thai_topatak
-+IBUS_Thai_thothan
-+IBUS_Thai_thonangmontho
-+IBUS_Thai_thophuthao
-+IBUS_Thai_nonen
-+IBUS_Thai_dodek
-+IBUS_Thai_totao
-+IBUS_Thai_thothung
-+IBUS_Thai_thothahan
-+IBUS_Thai_thothong
-+IBUS_Thai_nonu
-+IBUS_Thai_bobaimai
-+IBUS_Thai_popla
-+IBUS_Thai_phophung
-+IBUS_Thai_fofa
-+IBUS_Thai_phophan
-+IBUS_Thai_fofan
-+IBUS_Thai_phosamphao
-+IBUS_Thai_moma
-+IBUS_Thai_yoyak
-+IBUS_Thai_rorua
-+IBUS_Thai_ru
-+IBUS_Thai_loling
-+IBUS_Thai_lu
-+IBUS_Thai_wowaen
-+IBUS_Thai_sosala
-+IBUS_Thai_sorusi
-+IBUS_Thai_sosua
-+IBUS_Thai_hohip
-+IBUS_Thai_lochula
-+IBUS_Thai_oang
-+IBUS_Thai_honokhuk
-+IBUS_Thai_paiyannoi
-+IBUS_Thai_saraa
-+IBUS_Thai_maihanakat
-+IBUS_Thai_saraaa
-+IBUS_Thai_saraam
-+IBUS_Thai_sarai
-+IBUS_Thai_saraii
-+IBUS_Thai_saraue
-+IBUS_Thai_sarauee
-+IBUS_Thai_sarau
-+IBUS_Thai_sarauu
-+IBUS_Thai_phinthu
-+IBUS_Thai_maihanakat_maitho
-+IBUS_Thai_baht
-+IBUS_Thai_sarae
-+IBUS_Thai_saraae
-+IBUS_Thai_sarao
-+IBUS_Thai_saraaimaimuan
-+IBUS_Thai_saraaimaimalai
-+IBUS_Thai_lakkhangyao
-+IBUS_Thai_maiyamok
-+IBUS_Thai_maitaikhu
-+IBUS_Thai_maiek
-+IBUS_Thai_maitho
-+IBUS_Thai_maitri
-+IBUS_Thai_maichattawa
-+IBUS_Thai_thanthakhat
-+IBUS_Thai_nikhahit
-+IBUS_Thai_leksun
-+IBUS_Thai_leknung
-+IBUS_Thai_leksong
-+IBUS_Thai_leksam
-+IBUS_Thai_leksi
-+IBUS_Thai_lekha
-+IBUS_Thai_lekhok
-+IBUS_Thai_lekchet
-+IBUS_Thai_lekpaet
-+IBUS_Thai_lekkao
-+IBUS_Hangul
-+IBUS_Hangul_Start
-+IBUS_Hangul_End
-+IBUS_Hangul_Hanja
-+IBUS_Hangul_Jamo
-+IBUS_Hangul_Romaja
-+IBUS_Hangul_Codeinput
-+IBUS_Hangul_Jeonja
-+IBUS_Hangul_Banja
-+IBUS_Hangul_PreHanja
-+IBUS_Hangul_PostHanja
-+IBUS_Hangul_SingleCandidate
-+IBUS_Hangul_MultipleCandidate
-+IBUS_Hangul_PreviousCandidate
-+IBUS_Hangul_Special
-+IBUS_Hangul_switch
-+IBUS_Hangul_Kiyeog
-+IBUS_Hangul_SsangKiyeog
-+IBUS_Hangul_KiyeogSios
-+IBUS_Hangul_Nieun
-+IBUS_Hangul_NieunJieuj
-+IBUS_Hangul_NieunHieuh
-+IBUS_Hangul_Dikeud
-+IBUS_Hangul_SsangDikeud
-+IBUS_Hangul_Rieul
-+IBUS_Hangul_RieulKiyeog
-+IBUS_Hangul_RieulMieum
-+IBUS_Hangul_RieulPieub
-+IBUS_Hangul_RieulSios
-+IBUS_Hangul_RieulTieut
-+IBUS_Hangul_RieulPhieuf
-+IBUS_Hangul_RieulHieuh
-+IBUS_Hangul_Mieum
-+IBUS_Hangul_Pieub
-+IBUS_Hangul_SsangPieub
-+IBUS_Hangul_PieubSios
-+IBUS_Hangul_Sios
-+IBUS_Hangul_SsangSios
-+IBUS_Hangul_Ieung
-+IBUS_Hangul_Jieuj
-+IBUS_Hangul_SsangJieuj
-+IBUS_Hangul_Cieuc
-+IBUS_Hangul_Khieuq
-+IBUS_Hangul_Tieut
-+IBUS_Hangul_Phieuf
-+IBUS_Hangul_Hieuh
-+IBUS_Hangul_A
-+IBUS_Hangul_AE
-+IBUS_Hangul_YA
-+IBUS_Hangul_YAE
-+IBUS_Hangul_EO
-+IBUS_Hangul_E
-+IBUS_Hangul_YEO
-+IBUS_Hangul_YE
-+IBUS_Hangul_O
-+IBUS_Hangul_WA
-+IBUS_Hangul_WAE
-+IBUS_Hangul_OE
-+IBUS_Hangul_YO
-+IBUS_Hangul_U
-+IBUS_Hangul_WEO
-+IBUS_Hangul_WE
-+IBUS_Hangul_WI
-+IBUS_Hangul_YU
-+IBUS_Hangul_EU
-+IBUS_Hangul_YI
-+IBUS_Hangul_I
-+IBUS_Hangul_J_Kiyeog
-+IBUS_Hangul_J_SsangKiyeog
-+IBUS_Hangul_J_KiyeogSios
-+IBUS_Hangul_J_Nieun
-+IBUS_Hangul_J_NieunJieuj
-+IBUS_Hangul_J_NieunHieuh
-+IBUS_Hangul_J_Dikeud
-+IBUS_Hangul_J_Rieul
-+IBUS_Hangul_J_RieulKiyeog
-+IBUS_Hangul_J_RieulMieum
-+IBUS_Hangul_J_RieulPieub
-+IBUS_Hangul_J_RieulSios
-+IBUS_Hangul_J_RieulTieut
-+IBUS_Hangul_J_RieulPhieuf
-+IBUS_Hangul_J_RieulHieuh
-+IBUS_Hangul_J_Mieum
-+IBUS_Hangul_J_Pieub
-+IBUS_Hangul_J_PieubSios
-+IBUS_Hangul_J_Sios
-+IBUS_Hangul_J_SsangSios
-+IBUS_Hangul_J_Ieung
-+IBUS_Hangul_J_Jieuj
-+IBUS_Hangul_J_Cieuc
-+IBUS_Hangul_J_Khieuq
-+IBUS_Hangul_J_Tieut
-+IBUS_Hangul_J_Phieuf
-+IBUS_Hangul_J_Hieuh
-+IBUS_Hangul_RieulYeorinHieuh
-+IBUS_Hangul_SunkyeongeumMieum
-+IBUS_Hangul_SunkyeongeumPieub
-+IBUS_Hangul_PanSios
-+IBUS_Hangul_KkogjiDalrinIeung
-+IBUS_Hangul_SunkyeongeumPhieuf
-+IBUS_Hangul_YeorinHieuh
-+IBUS_Hangul_AraeA
-+IBUS_Hangul_AraeAE
-+IBUS_Hangul_J_PanSios
-+IBUS_Hangul_J_KkogjiDalrinIeung
-+IBUS_Hangul_J_YeorinHieuh
-+IBUS_Korean_Won
-+IBUS_Armenian_ligature_ew
-+IBUS_Armenian_full_stop
-+IBUS_Armenian_verjaket
-+IBUS_Armenian_separation_mark
-+IBUS_Armenian_but
-+IBUS_Armenian_hyphen
-+IBUS_Armenian_yentamna
-+IBUS_Armenian_exclam
-+IBUS_Armenian_amanak
-+IBUS_Armenian_accent
-+IBUS_Armenian_shesht
-+IBUS_Armenian_question
-+IBUS_Armenian_paruyk
-+IBUS_Armenian_AYB
-+IBUS_Armenian_ayb
-+IBUS_Armenian_BEN
-+IBUS_Armenian_ben
-+IBUS_Armenian_GIM
-+IBUS_Armenian_gim
-+IBUS_Armenian_DA
-+IBUS_Armenian_da
-+IBUS_Armenian_YECH
-+IBUS_Armenian_yech
-+IBUS_Armenian_ZA
-+IBUS_Armenian_za
-+IBUS_Armenian_E
-+IBUS_Armenian_e
-+IBUS_Armenian_AT
-+IBUS_Armenian_at
-+IBUS_Armenian_TO
-+IBUS_Armenian_to
-+IBUS_Armenian_ZHE
-+IBUS_Armenian_zhe
-+IBUS_Armenian_INI
-+IBUS_Armenian_ini
-+IBUS_Armenian_LYUN
-+IBUS_Armenian_lyun
-+IBUS_Armenian_KHE
-+IBUS_Armenian_khe
-+IBUS_Armenian_TSA
-+IBUS_Armenian_tsa
-+IBUS_Armenian_KEN
-+IBUS_Armenian_ken
-+IBUS_Armenian_HO
-+IBUS_Armenian_ho
-+IBUS_Armenian_DZA
-+IBUS_Armenian_dza
-+IBUS_Armenian_GHAT
-+IBUS_Armenian_ghat
-+IBUS_Armenian_TCHE
-+IBUS_Armenian_tche
-+IBUS_Armenian_MEN
-+IBUS_Armenian_men
-+IBUS_Armenian_HI
-+IBUS_Armenian_hi
-+IBUS_Armenian_NU
-+IBUS_Armenian_nu
-+IBUS_Armenian_SHA
-+IBUS_Armenian_sha
-+IBUS_Armenian_VO
-+IBUS_Armenian_vo
-+IBUS_Armenian_CHA
-+IBUS_Armenian_cha
-+IBUS_Armenian_PE
-+IBUS_Armenian_pe
-+IBUS_Armenian_JE
-+IBUS_Armenian_je
-+IBUS_Armenian_RA
-+IBUS_Armenian_ra
-+IBUS_Armenian_SE
-+IBUS_Armenian_se
-+IBUS_Armenian_VEV
-+IBUS_Armenian_vev
-+IBUS_Armenian_TYUN
-+IBUS_Armenian_tyun
-+IBUS_Armenian_RE
-+IBUS_Armenian_re
-+IBUS_Armenian_TSO
-+IBUS_Armenian_tso
-+IBUS_Armenian_VYUN
-+IBUS_Armenian_vyun
-+IBUS_Armenian_PYUR
-+IBUS_Armenian_pyur
-+IBUS_Armenian_KE
-+IBUS_Armenian_ke
-+IBUS_Armenian_O
-+IBUS_Armenian_o
-+IBUS_Armenian_FE
-+IBUS_Armenian_fe
-+IBUS_Armenian_apostrophe
-+IBUS_Georgian_an
-+IBUS_Georgian_ban
-+IBUS_Georgian_gan
-+IBUS_Georgian_don
-+IBUS_Georgian_en
-+IBUS_Georgian_vin
-+IBUS_Georgian_zen
-+IBUS_Georgian_tan
-+IBUS_Georgian_in
-+IBUS_Georgian_kan
-+IBUS_Georgian_las
-+IBUS_Georgian_man
-+IBUS_Georgian_nar
-+IBUS_Georgian_on
-+IBUS_Georgian_par
-+IBUS_Georgian_zhar
-+IBUS_Georgian_rae
-+IBUS_Georgian_san
-+IBUS_Georgian_tar
-+IBUS_Georgian_un
-+IBUS_Georgian_phar
-+IBUS_Georgian_khar
-+IBUS_Georgian_ghan
-+IBUS_Georgian_qar
-+IBUS_Georgian_shin
-+IBUS_Georgian_chin
-+IBUS_Georgian_can
-+IBUS_Georgian_jil
-+IBUS_Georgian_cil
-+IBUS_Georgian_char
-+IBUS_Georgian_xan
-+IBUS_Georgian_jhan
-+IBUS_Georgian_hae
-+IBUS_Georgian_he
-+IBUS_Georgian_hie
-+IBUS_Georgian_we
-+IBUS_Georgian_har
-+IBUS_Georgian_hoe
-+IBUS_Georgian_fi
-+IBUS_Xabovedot
-+IBUS_Ibreve
-+IBUS_Zstroke
-+IBUS_Gcaron
-+IBUS_Ocaron
-+IBUS_Obarred
-+IBUS_xabovedot
-+IBUS_ibreve
-+IBUS_zstroke
-+IBUS_gcaron
-+IBUS_ocaron
-+IBUS_obarred
-+IBUS_SCHWA
-+IBUS_schwa
-+IBUS_Lbelowdot
-+IBUS_lbelowdot
-+IBUS_Abelowdot
-+IBUS_abelowdot
-+IBUS_Ahook
-+IBUS_ahook
-+IBUS_Acircumflexacute
-+IBUS_acircumflexacute
-+IBUS_Acircumflexgrave
-+IBUS_acircumflexgrave
-+IBUS_Acircumflexhook
-+IBUS_acircumflexhook
-+IBUS_Acircumflextilde
-+IBUS_acircumflextilde
-+IBUS_Acircumflexbelowdot
-+IBUS_acircumflexbelowdot
-+IBUS_Abreveacute
-+IBUS_abreveacute
-+IBUS_Abrevegrave
-+IBUS_abrevegrave
-+IBUS_Abrevehook
-+IBUS_abrevehook
-+IBUS_Abrevetilde
-+IBUS_abrevetilde
-+IBUS_Abrevebelowdot
-+IBUS_abrevebelowdot
-+IBUS_Ebelowdot
-+IBUS_ebelowdot
-+IBUS_Ehook
-+IBUS_ehook
-+IBUS_Etilde
-+IBUS_etilde
-+IBUS_Ecircumflexacute
-+IBUS_ecircumflexacute
-+IBUS_Ecircumflexgrave
-+IBUS_ecircumflexgrave
-+IBUS_Ecircumflexhook
-+IBUS_ecircumflexhook
-+IBUS_Ecircumflextilde
-+IBUS_ecircumflextilde
-+IBUS_Ecircumflexbelowdot
-+IBUS_ecircumflexbelowdot
-+IBUS_Ihook
-+IBUS_ihook
-+IBUS_Ibelowdot
-+IBUS_ibelowdot
-+IBUS_Obelowdot
-+IBUS_obelowdot
-+IBUS_Ohook
-+IBUS_ohook
-+IBUS_Ocircumflexacute
-+IBUS_ocircumflexacute
-+IBUS_Ocircumflexgrave
-+IBUS_ocircumflexgrave
-+IBUS_Ocircumflexhook
-+IBUS_ocircumflexhook
-+IBUS_Ocircumflextilde
-+IBUS_ocircumflextilde
-+IBUS_Ocircumflexbelowdot
-+IBUS_ocircumflexbelowdot
-+IBUS_Ohornacute
-+IBUS_ohornacute
-+IBUS_Ohorngrave
-+IBUS_ohorngrave
-+IBUS_Ohornhook
-+IBUS_ohornhook
-+IBUS_Ohorntilde
-+IBUS_ohorntilde
-+IBUS_Ohornbelowdot
-+IBUS_ohornbelowdot
-+IBUS_Ubelowdot
-+IBUS_ubelowdot
-+IBUS_Uhook
-+IBUS_uhook
-+IBUS_Uhornacute
-+IBUS_uhornacute
-+IBUS_Uhorngrave
-+IBUS_uhorngrave
-+IBUS_Uhornhook
-+IBUS_uhornhook
-+IBUS_Uhorntilde
-+IBUS_uhorntilde
-+IBUS_Uhornbelowdot
-+IBUS_uhornbelowdot
-+IBUS_Ybelowdot
-+IBUS_ybelowdot
-+IBUS_Yhook
-+IBUS_yhook
-+IBUS_Ytilde
-+IBUS_ytilde
-+IBUS_Ohorn
-+IBUS_ohorn
-+IBUS_Uhorn
-+IBUS_uhorn
-+IBUS_EcuSign
-+IBUS_ColonSign
-+IBUS_CruzeiroSign
-+IBUS_FFrancSign
-+IBUS_LiraSign
-+IBUS_MillSign
-+IBUS_NairaSign
-+IBUS_PesetaSign
-+IBUS_RupeeSign
-+IBUS_WonSign
-+IBUS_NewSheqelSign
-+IBUS_DongSign
-+IBUS_EuroSign
-+IBUS_zerosuperior
-+IBUS_foursuperior
-+IBUS_fivesuperior
-+IBUS_sixsuperior
-+IBUS_sevensuperior
-+IBUS_eightsuperior
-+IBUS_ninesuperior
-+IBUS_zerosubscript
-+IBUS_onesubscript
-+IBUS_twosubscript
-+IBUS_threesubscript
-+IBUS_foursubscript
-+IBUS_fivesubscript
-+IBUS_sixsubscript
-+IBUS_sevensubscript
-+IBUS_eightsubscript
-+IBUS_ninesubscript
-+IBUS_partdifferential
-+IBUS_emptyset
-+IBUS_elementof
-+IBUS_notelementof
-+IBUS_containsas
-+IBUS_squareroot
-+IBUS_cuberoot
-+IBUS_fourthroot
-+IBUS_dintegral
-+IBUS_tintegral
-+IBUS_because
-+IBUS_approxeq
-+IBUS_notapproxeq
-+IBUS_notidentical
-+IBUS_stricteq
-+IBUS_braille_dot_1
-+IBUS_braille_dot_2
-+IBUS_braille_dot_3
-+IBUS_braille_dot_4
-+IBUS_braille_dot_5
-+IBUS_braille_dot_6
-+IBUS_braille_dot_7
-+IBUS_braille_dot_8
-+IBUS_braille_dot_9
-+IBUS_braille_dot_10
-+IBUS_braille_blank
-+IBUS_braille_dots_1
-+IBUS_braille_dots_2
-+IBUS_braille_dots_12
-+IBUS_braille_dots_3
-+IBUS_braille_dots_13
-+IBUS_braille_dots_23
-+IBUS_braille_dots_123
-+IBUS_braille_dots_4
-+IBUS_braille_dots_14
-+IBUS_braille_dots_24
-+IBUS_braille_dots_124
-+IBUS_braille_dots_34
-+IBUS_braille_dots_134
-+IBUS_braille_dots_234
-+IBUS_braille_dots_1234
-+IBUS_braille_dots_5
-+IBUS_braille_dots_15
-+IBUS_braille_dots_25
-+IBUS_braille_dots_125
-+IBUS_braille_dots_35
-+IBUS_braille_dots_135
-+IBUS_braille_dots_235
-+IBUS_braille_dots_1235
-+IBUS_braille_dots_45
-+IBUS_braille_dots_145
-+IBUS_braille_dots_245
-+IBUS_braille_dots_1245
-+IBUS_braille_dots_345
-+IBUS_braille_dots_1345
-+IBUS_braille_dots_2345
-+IBUS_braille_dots_12345
-+IBUS_braille_dots_6
-+IBUS_braille_dots_16
-+IBUS_braille_dots_26
-+IBUS_braille_dots_126
-+IBUS_braille_dots_36
-+IBUS_braille_dots_136
-+IBUS_braille_dots_236
-+IBUS_braille_dots_1236
-+IBUS_braille_dots_46
-+IBUS_braille_dots_146
-+IBUS_braille_dots_246
-+IBUS_braille_dots_1246
-+IBUS_braille_dots_346
-+IBUS_braille_dots_1346
-+IBUS_braille_dots_2346
-+IBUS_braille_dots_12346
-+IBUS_braille_dots_56
-+IBUS_braille_dots_156
-+IBUS_braille_dots_256
-+IBUS_braille_dots_1256
-+IBUS_braille_dots_356
-+IBUS_braille_dots_1356
-+IBUS_braille_dots_2356
-+IBUS_braille_dots_12356
-+IBUS_braille_dots_456
-+IBUS_braille_dots_1456
-+IBUS_braille_dots_2456
-+IBUS_braille_dots_12456
-+IBUS_braille_dots_3456
-+IBUS_braille_dots_13456
-+IBUS_braille_dots_23456
-+IBUS_braille_dots_123456
-+IBUS_braille_dots_7
-+IBUS_braille_dots_17
-+IBUS_braille_dots_27
-+IBUS_braille_dots_127
-+IBUS_braille_dots_37
-+IBUS_braille_dots_137
-+IBUS_braille_dots_237
-+IBUS_braille_dots_1237
-+IBUS_braille_dots_47
-+IBUS_braille_dots_147
-+IBUS_braille_dots_247
-+IBUS_braille_dots_1247
-+IBUS_braille_dots_347
-+IBUS_braille_dots_1347
-+IBUS_braille_dots_2347
-+IBUS_braille_dots_12347
-+IBUS_braille_dots_57
-+IBUS_braille_dots_157
-+IBUS_braille_dots_257
-+IBUS_braille_dots_1257
-+IBUS_braille_dots_357
-+IBUS_braille_dots_1357
-+IBUS_braille_dots_2357
-+IBUS_braille_dots_12357
-+IBUS_braille_dots_457
-+IBUS_braille_dots_1457
-+IBUS_braille_dots_2457
-+IBUS_braille_dots_12457
-+IBUS_braille_dots_3457
-+IBUS_braille_dots_13457
-+IBUS_braille_dots_23457
-+IBUS_braille_dots_123457
-+IBUS_braille_dots_67
-+IBUS_braille_dots_167
-+IBUS_braille_dots_267
-+IBUS_braille_dots_1267
-+IBUS_braille_dots_367
-+IBUS_braille_dots_1367
-+IBUS_braille_dots_2367
-+IBUS_braille_dots_12367
-+IBUS_braille_dots_467
-+IBUS_braille_dots_1467
-+IBUS_braille_dots_2467
-+IBUS_braille_dots_12467
-+IBUS_braille_dots_3467
-+IBUS_braille_dots_13467
-+IBUS_braille_dots_23467
-+IBUS_braille_dots_123467
-+IBUS_braille_dots_567
-+IBUS_braille_dots_1567
-+IBUS_braille_dots_2567
-+IBUS_braille_dots_12567
-+IBUS_braille_dots_3567
-+IBUS_braille_dots_13567
-+IBUS_braille_dots_23567
-+IBUS_braille_dots_123567
-+IBUS_braille_dots_4567
-+IBUS_braille_dots_14567
-+IBUS_braille_dots_24567
-+IBUS_braille_dots_124567
-+IBUS_braille_dots_34567
-+IBUS_braille_dots_134567
-+IBUS_braille_dots_234567
-+IBUS_braille_dots_1234567
-+IBUS_braille_dots_8
-+IBUS_braille_dots_18
-+IBUS_braille_dots_28
-+IBUS_braille_dots_128
-+IBUS_braille_dots_38
-+IBUS_braille_dots_138
-+IBUS_braille_dots_238
-+IBUS_braille_dots_1238
-+IBUS_braille_dots_48
-+IBUS_braille_dots_148
-+IBUS_braille_dots_248
-+IBUS_braille_dots_1248
-+IBUS_braille_dots_348
-+IBUS_braille_dots_1348
-+IBUS_braille_dots_2348
-+IBUS_braille_dots_12348
-+IBUS_braille_dots_58
-+IBUS_braille_dots_158
-+IBUS_braille_dots_258
-+IBUS_braille_dots_1258
-+IBUS_braille_dots_358
-+IBUS_braille_dots_1358
-+IBUS_braille_dots_2358
-+IBUS_braille_dots_12358
-+IBUS_braille_dots_458
-+IBUS_braille_dots_1458
-+IBUS_braille_dots_2458
-+IBUS_braille_dots_12458
-+IBUS_braille_dots_3458
-+IBUS_braille_dots_13458
-+IBUS_braille_dots_23458
-+IBUS_braille_dots_123458
-+IBUS_braille_dots_68
-+IBUS_braille_dots_168
-+IBUS_braille_dots_268
-+IBUS_braille_dots_1268
-+IBUS_braille_dots_368
-+IBUS_braille_dots_1368
-+IBUS_braille_dots_2368
-+IBUS_braille_dots_12368
-+IBUS_braille_dots_468
-+IBUS_braille_dots_1468
-+IBUS_braille_dots_2468
-+IBUS_braille_dots_12468
-+IBUS_braille_dots_3468
-+IBUS_braille_dots_13468
-+IBUS_braille_dots_23468
-+IBUS_braille_dots_123468
-+IBUS_braille_dots_568
-+IBUS_braille_dots_1568
-+IBUS_braille_dots_2568
-+IBUS_braille_dots_12568
-+IBUS_braille_dots_3568
-+IBUS_braille_dots_13568
-+IBUS_braille_dots_23568
-+IBUS_braille_dots_123568
-+IBUS_braille_dots_4568
-+IBUS_braille_dots_14568
-+IBUS_braille_dots_24568
-+IBUS_braille_dots_124568
-+IBUS_braille_dots_34568
-+IBUS_braille_dots_134568
-+IBUS_braille_dots_234568
-+IBUS_braille_dots_1234568
-+IBUS_braille_dots_78
-+IBUS_braille_dots_178
-+IBUS_braille_dots_278
-+IBUS_braille_dots_1278
-+IBUS_braille_dots_378
-+IBUS_braille_dots_1378
-+IBUS_braille_dots_2378
-+IBUS_braille_dots_12378
-+IBUS_braille_dots_478
-+IBUS_braille_dots_1478
-+IBUS_braille_dots_2478
-+IBUS_braille_dots_12478
-+IBUS_braille_dots_3478
-+IBUS_braille_dots_13478
-+IBUS_braille_dots_23478
-+IBUS_braille_dots_123478
-+IBUS_braille_dots_578
-+IBUS_braille_dots_1578
-+IBUS_braille_dots_2578
-+IBUS_braille_dots_12578
-+IBUS_braille_dots_3578
-+IBUS_braille_dots_13578
-+IBUS_braille_dots_23578
-+IBUS_braille_dots_123578
-+IBUS_braille_dots_4578
-+IBUS_braille_dots_14578
-+IBUS_braille_dots_24578
-+IBUS_braille_dots_124578
-+IBUS_braille_dots_34578
-+IBUS_braille_dots_134578
-+IBUS_braille_dots_234578
-+IBUS_braille_dots_1234578
-+IBUS_braille_dots_678
-+IBUS_braille_dots_1678
-+IBUS_braille_dots_2678
-+IBUS_braille_dots_12678
-+IBUS_braille_dots_3678
-+IBUS_braille_dots_13678
-+IBUS_braille_dots_23678
-+IBUS_braille_dots_123678
-+IBUS_braille_dots_4678
-+IBUS_braille_dots_14678
-+IBUS_braille_dots_24678
-+IBUS_braille_dots_124678
-+IBUS_braille_dots_34678
-+IBUS_braille_dots_134678
-+IBUS_braille_dots_234678
-+IBUS_braille_dots_1234678
-+IBUS_braille_dots_5678
-+IBUS_braille_dots_15678
-+IBUS_braille_dots_25678
-+IBUS_braille_dots_125678
-+IBUS_braille_dots_35678
-+IBUS_braille_dots_135678
-+IBUS_braille_dots_235678
-+IBUS_braille_dots_1235678
-+IBUS_braille_dots_45678
-+IBUS_braille_dots_145678
-+IBUS_braille_dots_245678
-+IBUS_braille_dots_1245678
-+IBUS_braille_dots_345678
-+IBUS_braille_dots_1345678
-+IBUS_braille_dots_2345678
-+IBUS_braille_dots_12345678
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibusdebug</FILE>
-+ibus_warning
-+</SECTION>
-+
-+<SECTION>
-+<FILE>ibusinternal</FILE>
-+I_
-+dbus_server_setup
-+dbus_connection_setup
-+</SECTION>
-+
-diff --git a/ibus.spec.in b/ibus.spec.in
-index 908ddbd..641ec86 100644
---- a/ibus.spec.in
-+++ b/ibus.spec.in
-@@ -1,6 +1,8 @@
- %{!?python_sitelib: %define python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")}
- %{!?gtk_binary_version: %define gtk_binary_version %(pkg-config  --variable=gtk_binary_version gtk+-2.0)}
- %define mod_path ibus-@PACKAGE_VERSION_MAJOR@.@PACKAGE_VERSION_MINOR@
-+%define host_vendor %(if [[ "%{_host_vendor}" == "unknown" ]]; then echo redhat; else echo %{_host_vendor}; fi)
-+%define host %{_host_cpu}-%{host_vendor}-%{_host_os}
- Name:       ibus
- Version:    @PACKAGE_VERSION@
- Release:    1%{?dist}
-@@ -108,13 +110,32 @@ desktop-file-install --delete-original          \
- %clean
- rm -rf $RPM_BUILD_ROOT
- 
-+%pre
-+if [ "$1" -gt 1 ] ; then
-+export GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source`
-+gconftool-2 --makefile-uninstall-rule \
-+%{_sysconfdir}/gconf/schemas/%{name}.schemas >/dev/null || :
-+fi
-+
-+%post
-+export GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source`
-+gconftool-2 --makefile-install-rule \
-+%{_sysconfdir}/gconf/schemas/%{name}.schemas > /dev/null || :
-+
-+%preun
-+if [ "$1" -eq 0 ] ; then
-+export GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source`
-+gconftool-2 --makefile-uninstall-rule \
-+%{_sysconfdir}/gconf/schemas/%{name}.schemas > /dev/null || :
-+fi
-+
- %post libs
- /sbin/ldconfig
- update-desktop-database -q
- %{_sbindir}/alternatives --install %{_sysconfdir}/X11/xinit/xinputrc xinputrc %{_xinputconf} 83 || :
- 
- %post gtk
--%{_bindir}/update-gtk-immodules %{_host} || :
-+%{_bindir}/update-gtk-immodules %{host} || :
- 
- %postun libs
- /sbin/ldconfig
-@@ -126,7 +147,7 @@ if [ "$1" = "0" ]; then
- fi
- 
- %postun gtk
--%{_bindir}/update-gtk-immodules %{_host} || :
-+%{_bindir}/update-gtk-immodules %{host} || :
- 
- %files -f %{name}.lang
- %defattr(-,root,root,-)
-@@ -140,8 +161,9 @@ fi
- %{_libexecdir}/ibus-gconf
- %{_libexecdir}/ibus-ui-gtk
- %{_libexecdir}/ibus-x11
--%config %{_xinputconf}
--
-+%config(noreplace) %{_xinputconf}
-+%config(noreplace) %{_sysconfdir}/gconf/schemas/%{name}.schemas
-+%config(noreplace) %{_sysconfdir}/xdg/autostart/ibus.desktop
- 
- %files libs
- %defattr(-,root,root,-)
-@@ -163,5 +185,9 @@ fi
- %{_libdir}/pkgconfig/*
- 
- %changelog
--* Thu Aug 07 2008 Huang Peng <shawn.p.huang@gmail.com> - @VERSION@-1
-+* @DATE_DISPLAY@ Huang Peng <shawn.p.huang@gmail.com> - @VERSION@-1
-+- Current version.
-+
-+* Thu Aug 07 2008 Huang Peng <shawn.p.huang@gmail.com> - 0.1.0.20080810-1
- - The first version.
-+
-diff --git a/po/fr.po b/po/fr.po
-index 4b1850c..3f5e188 100644
---- a/po/fr.po
-+++ b/po/fr.po
-@@ -8,8 +8,8 @@ msgid ""
- msgstr ""
- "Project-Id-Version: ibus VERSION\n"
- "Report-Msgid-Bugs-To: http://code.google.com/p/ibus/issues/entry\n"
--"POT-Creation-Date: 2009-03-11 14:31+0800\n"
--"PO-Revision-Date: 2009-02-06 01:55+0100\n"
-+"POT-Creation-Date: 2009-03-20 09:52+0800\n"
-+"PO-Revision-Date: 2009-03-11 17:30+0100\n"
- "Last-Translator: Julroy67 <julroy67@gmail.com>\n"
- "Language-Team: French <julroy67@gmail.com>\n"
- "MIME-Version: 1.0\n"
-@@ -25,15 +25,15 @@ msgstr "Autre"
- 
- #: ui/gtk/panel.py:97
- msgid "IBus input method framework"
--msgstr ""
-+msgstr "Framework de méthode d'entrée IBus"
- 
- #: ui/gtk/panel.py:282
- msgid "Restart"
--msgstr ""
-+msgstr "Redémarrer"
- 
- #: ui/gtk/panel.py:337
- msgid "No input method"
--msgstr ""
-+msgstr "Aucune méthode d'entrée"
- 
- #: ui/gtk/panel.py:383
- msgid "IBus is an intelligent input bus for Linux/Unix."
-@@ -92,7 +92,6 @@ msgid "Key code:"
- msgstr "Code touche :"
- 
- #: setup/keyboardshortcut.py:76
--#, fuzzy
- msgid "Modifiers:"
- msgstr "Modificateurs :"
- 
-@@ -110,35 +109,33 @@ msgstr "Veuillez presser une touche (ou une combinaison de touches)"
- 
- #: setup/enginecombobox.py:99
- msgid "Select an input method"
--msgstr ""
-+msgstr "Sélectionnez une méthode d'entrée"
- 
- #: setup/setup.glade:7
- msgid "IBus Preferences"
--msgstr ""
--
--#: setup/setup.glade:51
--msgid "Enable or disable:"
--msgstr ""
-+msgstr "Préférences d'IBus"
- 
--#: setup/setup.glade:62
--#, fuzzy
--msgid "Next input method:"
--msgstr "Moteur suivant :"
-+#: setup/setup.glade:64 setup/setup.glade:96 setup/setup.glade:128
-+msgid "..."
-+msgstr "…"
- 
--#: setup/setup.glade:76
-+#: setup/setup.glade:148
- msgid "previous input method:"
--msgstr ""
-+msgstr "méthode d'entrée précédente :"
- 
--#: setup/setup.glade:100 setup/setup.glade:130 setup/setup.glade:164
--msgid "..."
--msgstr "…"
-+#: setup/setup.glade:161
-+msgid "Next input method:"
-+msgstr "Méthode d'entrée suivante :"
-+
-+#: setup/setup.glade:174
-+msgid "Enable or disable:"
-+msgstr "Activer ou désactiver :"
- 
- #: setup/setup.glade:188
- msgid "<b>Keyboard Shortcuts</b>"
- msgstr "<b>Raccourcis claviers</b>"
- 
- #: setup/setup.glade:222
--#, fuzzy
- msgid "Candidates orientation:"
- msgstr "Orientation de la table :"
- 
-@@ -152,27 +149,29 @@ msgstr ""
- 
- #: setup/setup.glade:249
- msgid "Show language panel:"
--msgstr ""
-+msgstr "Afficher la barre de langue :"
- 
- #: setup/setup.glade:259
- msgid ""
- "Never\n"
--"Dynamically\n"
-+"When active\n"
- "Always"
- msgstr ""
-+"Jamais\n"
-+"Dynamiquement\n"
-+"Toujours"
- 
- #: setup/setup.glade:276
- msgid "Use custom font"
- msgstr "Utiliser une police personnalisée"
- 
- #: setup/setup.glade:292
--#, fuzzy
- msgid "Custom font:"
--msgstr "Utiliser une police personnalisée"
-+msgstr "Police personnalisée :"
- 
- #: setup/setup.glade:317
- msgid "<b>Font and Style</b>"
--msgstr ""
-+msgstr "<b>Police et Style</b>"
- 
- #: setup/setup.glade:337
- msgid "General"
-@@ -180,7 +179,7 @@ msgstr "Général"
- 
- #: setup/setup.glade:465
- msgid "Input Methods"
--msgstr ""
-+msgstr "Méthodes d'entrées"
- 
- #: setup/setup.glade:482
- msgid ""
-@@ -199,50 +198,13 @@ msgstr ""
- "\n"
- 
- #: setup/setup.glade:510
--#, fuzzy
- msgid "Start ibus on login"
--msgstr "Démarrer automatiquement IBus lors de la connexion"
-+msgstr "Démarrer IBus lors de la connexion"
- 
- #: setup/setup.glade:521
--#, fuzzy
- msgid "<b>Startup</b>"
--msgstr "<b>Interface Utilisateur</b>"
-+msgstr "<b>Démarrage</b>"
- 
- #: setup/setup.glade:543
- msgid "About"
- msgstr "À propos"
--
--#~ msgid "Trigger:"
--#~ msgstr "Déclencheur :"
--
--#, fuzzy
--#~ msgid "Previous IME:"
--#~ msgstr "Moteur précédent :"
--
--#~ msgid "gtk-add"
--#~ msgstr "gtk-add"
--
--#~ msgid "gtk-remove"
--#~ msgstr "gtk-remove"
--
--#~ msgid "gtk-go-up"
--#~ msgstr "gtk-go-up"
--
--#~ msgid "gtk-go-down"
--#~ msgstr "gtk-go-down"
--
--#~ msgid "gtk-close"
--#~ msgstr "gtk-close"
--
--#~ msgid "Auto hide language bar"
--#~ msgstr "Cacher automatiquement la barre de langue"
--
--#, fuzzy
--#~ msgid "IBus - Running"
--#~ msgstr "IBus - Démarré"
--
--#~ msgid "IBus - Setup"
--#~ msgstr "IBus - Configuration"
--
--#~ msgid "Engine"
--#~ msgstr "Moteur"
-diff --git a/po/ja.po b/po/ja.po
-index 185f58e..eeb2117 100644
---- a/po/ja.po
-+++ b/po/ja.po
-@@ -8,9 +8,9 @@ msgid ""
- msgstr ""
- "Project-Id-Version: ibus VERSION\n"
- "Report-Msgid-Bugs-To: http://code.google.com/p/ibus/issues/entry\n"
--"POT-Creation-Date: 2009-03-11 14:31+0800\n"
--"PO-Revision-Date: 2008-08-28 17:31+0900\n"
--"Last-Translator: UTUMI Hirosi <utuhiro78@yahoo.co.jp>\n"
-+"POT-Creation-Date: 2009-03-20 09:52+0800\n"
-+"PO-Revision-Date: 2009-03-19 16:12+0900\n"
-+"Last-Translator: IWAI, Masaharu <iwai@alib.jp>\n"
- "Language-Team: Japanese <gnome-translation@gnome.gr.jp>\n"
- "MIME-Version: 1.0\n"
- "Content-Type: text/plain; charset=UTF-8\n"
-@@ -19,31 +19,33 @@ msgstr ""
- #: ibus/lang.py:40 ui/gtk/panel.py:307 ui/gtk/panel.py:308 ui/gtk/panel.py:309
- #: ui/gtk/panel.py:310
- msgid "Other"
--msgstr ""
-+msgstr "その他"
- 
- #: ui/gtk/panel.py:97
- msgid "IBus input method framework"
--msgstr ""
-+msgstr "IBus インプットメソッドフレームワーク"
- 
- #: ui/gtk/panel.py:282
- msgid "Restart"
--msgstr ""
-+msgstr "再起動"
- 
- #: ui/gtk/panel.py:337
- msgid "No input method"
--msgstr ""
-+msgstr "インプットメソッドがありません"
- 
- #: ui/gtk/panel.py:383
- msgid "IBus is an intelligent input bus for Linux/Unix."
--msgstr ""
-+msgstr "IBus は、Linux/Unix のためのインテリジェントなインプットバスです。"
- 
- #: ui/gtk/panel.py:387
- msgid "translator-credits"
--msgstr "UTUMI Hirosi <utuhiro78@yahoo.co.jp>"
-+msgstr ""
-+"UTUMI Hirosi <utuhiro78@yahoo.co.jp>\n"
-+"IWAI, Masaharu <iwai@alib.jp>"
- 
- #: ui/gtk/languagebar.py:84
- msgid "Switch engine"
--msgstr ""
-+msgstr "エンジンの変更"
- 
- #: setup/main.py:103
- msgid "trigger"
-@@ -106,35 +108,33 @@ msgstr "キーもしくはキーの組み合わせを入力してください"
- 
- #: setup/enginecombobox.py:99
- msgid "Select an input method"
--msgstr ""
-+msgstr "インプットメソッドの選択"
- 
- #: setup/setup.glade:7
- msgid "IBus Preferences"
--msgstr ""
--
--#: setup/setup.glade:51
--msgid "Enable or disable:"
--msgstr ""
-+msgstr "IBus の設定"
- 
--#: setup/setup.glade:62
--#, fuzzy
--msgid "Next input method:"
--msgstr "次のエンジン:"
-+#: setup/setup.glade:64 setup/setup.glade:96 setup/setup.glade:128
-+msgid "..."
-+msgstr "..."
- 
--#: setup/setup.glade:76
-+#: setup/setup.glade:148
- msgid "previous input method:"
--msgstr ""
-+msgstr "ひとつ前のインプットメソッド:"
- 
--#: setup/setup.glade:100 setup/setup.glade:130 setup/setup.glade:164
--msgid "..."
--msgstr "..."
-+#: setup/setup.glade:161
-+msgid "Next input method:"
-+msgstr "次のインプットメソッド:"
-+
-+#: setup/setup.glade:174
-+msgid "Enable or disable:"
-+msgstr "切り替え"
- 
- #: setup/setup.glade:188
- msgid "<b>Keyboard Shortcuts</b>"
- msgstr "<b>キーボードショートカット</b>"
- 
- #: setup/setup.glade:222
--#, fuzzy
- msgid "Candidates orientation:"
- msgstr "候補ウィンドウの向き:"
- 
-@@ -148,27 +148,29 @@ msgstr ""
- 
- #: setup/setup.glade:249
- msgid "Show language panel:"
--msgstr ""
-+msgstr "言語パネルの表示:"
- 
- #: setup/setup.glade:259
- msgid ""
- "Never\n"
--"Dynamically\n"
-+"When active\n"
- "Always"
- msgstr ""
-+"表示しない\n"
-+"有効なときだけ表示する\n"
-+"常に表示する"
- 
- #: setup/setup.glade:276
- msgid "Use custom font"
- msgstr "カスタムフォントを使う"
- 
- #: setup/setup.glade:292
--#, fuzzy
- msgid "Custom font:"
--msgstr "カスタムフォントを使う"
-+msgstr "カスタムフォント:"
- 
- #: setup/setup.glade:317
- msgid "<b>Font and Style</b>"
--msgstr ""
-+msgstr "<b>フォントとスタイル</b>"
- 
- #: setup/setup.glade:337
- msgid "General"
-@@ -176,7 +178,7 @@ msgstr "一般"
- 
- #: setup/setup.glade:465
- msgid "Input Methods"
--msgstr ""
-+msgstr "インプットメソッド"
- 
- #: setup/setup.glade:482
- msgid ""
-@@ -187,48 +189,21 @@ msgid ""
- "\n"
- "\n"
- msgstr ""
-+"<big><b>IBus</b></big>\n"
-+"<small>インテリジェントなインプットバス</small>\n"
-+"ホームページ: http://code.google.com/p/ibus\n"
-+"\n"
-+"\n"
-+"\n"
- 
- #: setup/setup.glade:510
--#, fuzzy
- msgid "Start ibus on login"
--msgstr "セッションログイン時に IBus を自動的に起動"
-+msgstr "ログイン時に IBus を起動"
- 
- #: setup/setup.glade:521
- msgid "<b>Startup</b>"
--msgstr ""
-+msgstr "<b>スタートアップ</b>"
- 
- #: setup/setup.glade:543
- msgid "About"
- msgstr "About"
--
--#~ msgid "Trigger:"
--#~ msgstr "トリガー:"
--
--#, fuzzy
--#~ msgid "Previous IME:"
--#~ msgstr "前のエンジン:"
--
--#, fuzzy
--#~ msgid "gtk-remove"
--#~ msgstr "gtk-close"
--
--#~ msgid "gtk-close"
--#~ msgstr "gtk-close"
--
--#~ msgid "Auto hide language bar"
--#~ msgstr "言語バーを自動で隠す"
--
--#~ msgid "IBus - Running"
--#~ msgstr "IBus - 実行中"
--
--#~ msgid "IBus - Setup"
--#~ msgstr "IBus - セットアップ"
--
--#~ msgid "Engine"
--#~ msgstr "エンジン"
--
--#~ msgid "Started"
--#~ msgstr "開始"
--
--#~ msgid "Preload"
--#~ msgstr "プリロード"
-diff --git a/po/pa.po b/po/pa.po
-index 425a788..0bb12ce 100644
---- a/po/pa.po
-+++ b/po/pa.po
-@@ -6,7 +6,7 @@ msgid ""
- msgstr ""
- "Project-Id-Version: ibus\n"
- "Report-Msgid-Bugs-To: http://code.google.com/p/ibus/issues/entry\n"
--"POT-Creation-Date: 2009-03-11 14:31+0800\n"
-+"POT-Creation-Date: 2009-03-20 09:52+0800\n"
- "PO-Revision-Date: 2008-10-17 14:15+0530\n"
- "Last-Translator: Amanpreet Singh <aalam@users.sf.net>\n"
- "Language-Team: Punjabi/Panjabi <punjabi-l10n@lists.sf.net>\n"
-@@ -111,23 +111,23 @@ msgstr ""
- msgid "IBus Preferences"
- msgstr ""
- 
--#: setup/setup.glade:51
--msgid "Enable or disable:"
-+#: setup/setup.glade:64 setup/setup.glade:96 setup/setup.glade:128
-+msgid "..."
-+msgstr "..."
-+
-+#: setup/setup.glade:148
-+msgid "previous input method:"
- msgstr ""
- 
--#: setup/setup.glade:62
-+#: setup/setup.glade:161
- #, fuzzy
- msgid "Next input method:"
- msgstr "ਅਗਲਾ ਇੰਜਣ:"
- 
--#: setup/setup.glade:76
--msgid "previous input method:"
-+#: setup/setup.glade:174
-+msgid "Enable or disable:"
- msgstr ""
- 
--#: setup/setup.glade:100 setup/setup.glade:130 setup/setup.glade:164
--msgid "..."
--msgstr "..."
--
- #: setup/setup.glade:188
- msgid "<b>Keyboard Shortcuts</b>"
- msgstr "<b>ਕੀਬੋਰਡ ਸ਼ਾਰਟਕੱਟ</b>"
-@@ -152,7 +152,7 @@ msgstr ""
- #: setup/setup.glade:259
- msgid ""
- "Never\n"
--"Dynamically\n"
-+"When active\n"
- "Always"
- msgstr ""
- 
-diff --git a/po/zh_CN.po b/po/zh_CN.po
-index eb95e2f..6713459 100644
---- a/po/zh_CN.po
-+++ b/po/zh_CN.po
-@@ -7,7 +7,7 @@ msgid ""
- msgstr ""
- "Project-Id-Version: 0.1.1.20080813\n"
- "Report-Msgid-Bugs-To: http://code.google.com/p/ibus/issues/entry\n"
--"POT-Creation-Date: 2009-03-11 14:31+0800\n"
-+"POT-Creation-Date: 2009-03-20 09:52+0800\n"
- "PO-Revision-Date: 2008-08-13 21:59+0800\n"
- "Last-Translator: Huang Peng <shawn.p.huang@gmail.com>\n"
- "Language-Team: Huang Peng <shawn.p.huang@gmail.com>\n"
-@@ -111,21 +111,21 @@ msgstr "选择输入法"
- msgid "IBus Preferences"
- msgstr "IBus设置"
- 
--#: setup/setup.glade:51
--msgid "Enable or disable:"
--msgstr "开关"
--
--#: setup/setup.glade:62
--msgid "Next input method:"
--msgstr "下一入法"
-+#: setup/setup.glade:64 setup/setup.glade:96 setup/setup.glade:128
-+msgid "..."
-+msgstr ""
- 
--#: setup/setup.glade:76
-+#: setup/setup.glade:148
- msgid "previous input method:"
- msgstr "前一入法"
- 
--#: setup/setup.glade:100 setup/setup.glade:130 setup/setup.glade:164
--msgid "..."
--msgstr ""
-+#: setup/setup.glade:161
-+msgid "Next input method:"
-+msgstr "下一入法"
-+
-+#: setup/setup.glade:174
-+msgid "Enable or disable:"
-+msgstr "开关"
- 
- #: setup/setup.glade:188
- msgid "<b>Keyboard Shortcuts</b>"
-@@ -150,11 +150,11 @@ msgstr "显示语言栏:"
- #: setup/setup.glade:259
- msgid ""
- "Never\n"
--"Dynamically\n"
-+"When active\n"
- "Always"
- msgstr ""
- "从不\n"
--"动态\n"
-+"活动时\n"
- "总是"
- 
- #: setup/setup.glade:276
-diff --git a/setup/main.py b/setup/main.py
-index 42c3233..3ba6495 100644
---- a/setup/main.py
-+++ b/setup/main.py
-@@ -244,7 +244,7 @@ class Setup(object):
-         dialog.destroy()
-         if id != gtk.RESPONSE_OK:
-             return
--        self.__config.set_value(section, _name, shortcuts)
-+        self.__config.set_list(section, _name, shortcuts, "s")
-         entry.set_text("; ".join(shortcuts))
- 
- 
-diff --git a/setup/setup.glade b/setup/setup.glade
-index a50efd1..ab7b061 100644
---- a/setup/setup.glade
-+++ b/setup/setup.glade
-@@ -45,57 +45,21 @@
-                                 <property name="column_spacing">12</property>
-                                 <property name="row_spacing">6</property>
-                                 <child>
--                                  <widget class="GtkLabel" id="label7">
--                                    <property name="visible">True</property>
--                                    <property name="xalign">0</property>
--                                    <property name="label" translatable="yes">Enable or disable:</property>
--                                  </widget>
--                                  <packing>
--                                    <property name="x_options">GTK_FILL</property>
--                                    <property name="y_options">GTK_FILL</property>
--                                  </packing>
--                                </child>
--                                <child>
--                                  <widget class="GtkLabel" id="label8">
--                                    <property name="visible">True</property>
--                                    <property name="xalign">0</property>
--                                    <property name="label" translatable="yes">Next input method:</property>
--                                  </widget>
--                                  <packing>
--                                    <property name="top_attach">1</property>
--                                    <property name="bottom_attach">2</property>
--                                    <property name="x_options">GTK_FILL</property>
--                                    <property name="y_options">GTK_FILL</property>
--                                  </packing>
--                                </child>
--                                <child>
--                                  <widget class="GtkLabel" id="label9">
--                                    <property name="visible">True</property>
--                                    <property name="sensitive">False</property>
--                                    <property name="xalign">0</property>
--                                    <property name="label" translatable="yes">previous input method:</property>
--                                  </widget>
--                                  <packing>
--                                    <property name="top_attach">2</property>
--                                    <property name="bottom_attach">3</property>
--                                    <property name="x_options">GTK_FILL</property>
--                                    <property name="y_options">GTK_FILL</property>
--                                  </packing>
--                                </child>
--                                <child>
--                                  <widget class="GtkHBox" id="hbox4">
-+                                  <widget class="GtkHBox" id="hbox6">
-                                     <property name="visible">True</property>
-                                     <property name="spacing">6</property>
-                                     <child>
--                                      <widget class="GtkEntry" id="entry_trigger">
-+                                      <widget class="GtkEntry" id="entry_prev_engine">
-                                         <property name="visible">True</property>
-+                                        <property name="sensitive">False</property>
-                                         <property name="can_focus">True</property>
-                                         <property name="editable">False</property>
-                                       </widget>
-                                     </child>
-                                     <child>
--                                      <widget class="GtkButton" id="button_trigger">
-+                                      <widget class="GtkButton" id="button_prev_engine">
-                                         <property name="visible">True</property>
-+                                        <property name="sensitive">False</property>
-                                         <property name="can_focus">True</property>
-                                         <property name="label" translatable="yes">...</property>
-                                         <property name="use_underline">True</property>
-@@ -110,6 +74,8 @@
-                                   <packing>
-                                     <property name="left_attach">1</property>
-                                     <property name="right_attach">2</property>
-+                                    <property name="top_attach">2</property>
-+                                    <property name="bottom_attach">3</property>
-                                   </packing>
-                                 </child>
-                                 <child>
-@@ -145,21 +111,19 @@
-                                   </packing>
-                                 </child>
-                                 <child>
--                                  <widget class="GtkHBox" id="hbox6">
-+                                  <widget class="GtkHBox" id="hbox4">
-                                     <property name="visible">True</property>
-                                     <property name="spacing">6</property>
-                                     <child>
--                                      <widget class="GtkEntry" id="entry_prev_engine">
-+                                      <widget class="GtkEntry" id="entry_trigger">
-                                         <property name="visible">True</property>
--                                        <property name="sensitive">False</property>
-                                         <property name="can_focus">True</property>
-                                         <property name="editable">False</property>
-                                       </widget>
-                                     </child>
-                                     <child>
--                                      <widget class="GtkButton" id="button_prev_engine">
-+                                      <widget class="GtkButton" id="button_trigger">
-                                         <property name="visible">True</property>
--                                        <property name="sensitive">False</property>
-                                         <property name="can_focus">True</property>
-                                         <property name="label" translatable="yes">...</property>
-                                         <property name="use_underline">True</property>
-@@ -174,8 +138,44 @@
-                                   <packing>
-                                     <property name="left_attach">1</property>
-                                     <property name="right_attach">2</property>
-+                                  </packing>
-+                                </child>
-+                                <child>
-+                                  <widget class="GtkLabel" id="label9">
-+                                    <property name="visible">True</property>
-+                                    <property name="sensitive">False</property>
-+                                    <property name="xalign">0</property>
-+                                    <property name="label" translatable="yes">previous input method:</property>
-+                                  </widget>
-+                                  <packing>
-                                     <property name="top_attach">2</property>
-                                     <property name="bottom_attach">3</property>
-+                                    <property name="x_options">GTK_FILL</property>
-+                                    <property name="y_options">GTK_FILL</property>
-+                                  </packing>
-+                                </child>
-+                                <child>
-+                                  <widget class="GtkLabel" id="label8">
-+                                    <property name="visible">True</property>
-+                                    <property name="xalign">0</property>
-+                                    <property name="label" translatable="yes">Next input method:</property>
-+                                  </widget>
-+                                  <packing>
-+                                    <property name="top_attach">1</property>
-+                                    <property name="bottom_attach">2</property>
-+                                    <property name="x_options">GTK_FILL</property>
-+                                    <property name="y_options">GTK_FILL</property>
-+                                  </packing>
-+                                </child>
-+                                <child>
-+                                  <widget class="GtkLabel" id="label7">
-+                                    <property name="visible">True</property>
-+                                    <property name="xalign">0</property>
-+                                    <property name="label" translatable="yes">Enable or disable:</property>
-+                                  </widget>
-+                                  <packing>
-+                                    <property name="x_options">GTK_FILL</property>
-+                                    <property name="y_options">GTK_FILL</property>
-                                   </packing>
-                                 </child>
-                               </widget>
-@@ -257,7 +257,7 @@ Vertical</property>
-                                       <widget class="GtkComboBox" id="combobox_panel_show">
-                                         <property name="visible">True</property>
-                                         <property name="items" translatable="yes">Never
--Dynamically
-+When active
- Always</property>
-                                       </widget>
-                                       <packing>
-diff --git a/src/ibusattribute.h b/src/ibusattribute.h
-index 3a0ff7f..a3907c7 100644
---- a/src/ibusattribute.h
-+++ b/src/ibusattribute.h
-@@ -17,11 +17,19 @@
-  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-  * Boston, MA 02111-1307, USA.
-  */
-+/**
-+ * SECTION: ibusattribute
-+ * @short_description: Attributes of IBusText.
-+ * @stability: Stable
-+ * @see_also: #IBusText
-+ *
-+ * An IBusAttribute represents an attribute that associate to IBusText.
-+ * It decorates preedit buffer and auxiliary text with underline, foreground and background colors.
-+ */
- #ifndef __IBUS_ATTRIBUTE_H_
- #define __IBUS_ATTRIBUTE_H_
- 
- #include "ibusserializable.h"
--
- /*
-  * Type macros.
-  */
-@@ -53,12 +61,29 @@
- #define IBUS_ATTR_LIST_GET_CLASS(obj)   \
-     (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_TYPE_ATTR_LIST, IBusAttrListClass))
- 
-+/**
-+ * IBusAttrType:
-+ * @IBUS_ATTR_TYPE_UNDERLINE: Decorate with underline.
-+ * @IBUS_ATTR_TYPE_FOREGROUND: Foreground color.
-+ * @IBUS_ATTR_TYPE_BACKGROUND: Background color.
-+ *
-+ * Type of IBusText attribute.
-+ */
- typedef enum {
-     IBUS_ATTR_TYPE_UNDERLINE    = 1,
-     IBUS_ATTR_TYPE_FOREGROUND   = 2,
-     IBUS_ATTR_TYPE_BACKGROUND   = 3,
- } IBusAttrType;
- 
-+/**
-+ * IBusAttrUnderline:
-+ * @IBUS_ATTR_UNDERLINE_NONE: No underline.
-+ * @IBUS_ATTR_UNDERLINE_SINGLE: Single underline.
-+ * @IBUS_ATTR_UNDERLINE_DOUBLE: Double underline.
-+ * @IBUS_ATTR_UNDERLINE_LOW: Low underline ? %FIXME
-+ *
-+ * Type of IBusText attribute.
-+ */
- typedef enum {
-     IBUS_ATTR_UNDERLINE_NONE    = 0,
-     IBUS_ATTR_UNDERLINE_SINGLE  = 1,
-@@ -73,10 +98,21 @@ typedef struct _IBusAttributeClass IBusAttributeClass;
- typedef struct _IBusAttrList IBusAttrList;
- typedef struct _IBusAttrListClass IBusAttrListClass;
- 
-+
-+/**
-+ * IBusAttribute:
-+ * @type: IBusAttributeType
-+ * @value: Value for the type.
-+ * @start_index: The starting index, inclusive.
-+ * @end_index: The ending index, exclusive.
-+ *
-+ * Signify the type, value and scope of the attribute.
-+ * The scope starts from @start_index till the @end_index-1.
-+ */
- struct _IBusAttribute {
-     IBusSerializable parent;
- 
--    /* members */
-+    /*< public >*/
-     guint type;
-     guint value;
-     guint start_index;
-@@ -87,10 +123,16 @@ struct _IBusAttributeClass {
-     IBusSerializableClass parent;
- };
- 
-+/**
-+ * IBusAttrList:
-+ * @attributes: GArray that holds #IBusAttribute.
-+ *
-+ * Array of IBusAttribute.
-+ */
- struct _IBusAttrList {
-     IBusSerializable parent;
- 
--    /* members */
-+    /*< public >*/
-     GArray *attributes;
- };
- 
-@@ -98,26 +140,99 @@ struct _IBusAttrListClass {
-     IBusSerializableClass parent;
- };
- 
-+/**
-+ * ibus_attribute_get_type:
-+ * @returns: GType of IBusAttribute.
-+ *
-+ * Returns GType of IBusAttribute.
-+ */
- GType                ibus_attribute_get_type    ();
-+
-+/**
-+ * ibus_attribute_new:
-+ * @type: Type of the attribute.
-+ * @value: Value of the attribute.
-+ * @start_index: Where attribute starts.
-+ * @end_index: Where attribute ends.
-+ * @returns: A newly allocated IBusAttribute.
-+ *
-+ * New an IBusAttribute.
-+ */
- IBusAttribute       *ibus_attribute_new         (guint           type,
-                                                  guint           value,
-                                                  guint           start_index,
-                                                  guint           end_index);
-+/**
-+ * ibus_attr_underline_new:
-+ * @underline_type: Type of underline.
-+ * @start_index: Where attribute starts.
-+ * @end_index: Where attribute ends.
-+ * @returns: A newly allocated IBusAttribute.
-+ *
-+ * New an underline IBusAttribute.
-+ */
- IBusAttribute       *ibus_attr_underline_new    (guint           underline_type,
-                                                  guint           start_index,
-                                                  guint           end_index);
-+/**
-+ * ibus_attr_foreground_new:
-+ * @color: Color in RGB.
-+ * @start_index: Where attribute starts.
-+ * @end_index: Where attribute ends.
-+ * @returns: A newly allocated IBusAttribute.
-+ *
-+ * New an foreground IBusAttribute.
-+ */
- IBusAttribute       *ibus_attr_foreground_new   (guint           color,
-                                                  guint           start_index,
-                                                  guint           end_index);
-+/**
-+ * ibus_attr_background_new:
-+ * @color: Color in RGB.
-+ * @start_index: Where attribute starts.
-+ * @end_index: Where attribute ends.
-+ * @returns: A newly allocated IBusAttribute.
-+ *
-+ * New an background IBusAttribute.
-+ */
- IBusAttribute       *ibus_attr_background_new   (guint           color,
-                                                  guint           start_index,
-                                                  guint           end_index);
- 
- 
-+/**
-+ * ibus_attr_list_get_type:
-+ * @returns: GType of IBusAttrList.
-+ *
-+ * Returns GType of IBusAttrList.
-+ */
- GType                ibus_attr_list_get_type    ();
-+
-+/**
-+ * ibus_attr_list_new:
-+ * @returns: A newly allocated IBusAttrList.
-+ *
-+ * New an IBusAttrList.
-+ */
- IBusAttrList        *ibus_attr_list_new         ();
-+
-+/**
-+ * ibus_attr_list_append:
-+ * @attr_list: An IBusAttrList instance.
-+ * @attr: The IBusAttribute instance to be appended.
-+ *
-+ * Append an IBusAttribute to IBusAttrList.
-+ */
- void                 ibus_attr_list_append      (IBusAttrList   *attr_list,
-                                                  IBusAttribute  *attr);
-+/**
-+ * ibus_attr_list_get:
-+ * @attr_list: An IBusAttrList instance.
-+ * @index: Index of the @attr_list.
-+ * @returns: IBusAttribute at given index, NULL if no such IBusAttribute.
-+ *
-+ * Returns IBusAttribute at given index.
-+ */
- IBusAttribute       *ibus_attr_list_get         (IBusAttrList   *attr_list,
-                                                  guint           index);
- 
-diff --git a/src/ibusconnection.h b/src/ibusconnection.h
-index 5a8e099..7ebf6e6 100644
---- a/src/ibusconnection.h
-+++ b/src/ibusconnection.h
-@@ -17,6 +17,15 @@
-  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-  * Boston, MA 02111-1307, USA.
-  */
-+/**
-+ * SECTION: ibusconnection
-+ * @short_description: DBusConnection wrapper.
-+ * @see_also: <ulink url="http://dbus.freedesktop.org/doc/api/html/structDBusConnection.html">DBusConnection</ulink>
-+ *
-+ * An IBusConnection provides DBusConnection wrapper.
-+ * It can be used to connect to either dBus or iBus daemon.
-+ */
-+
- #ifndef __IBUS_CONNECTION_H_
- #define __IBUS_CONNECTION_H_
- 
-diff --git a/src/ibusengine.c b/src/ibusengine.c
-index d924e25..13ec52e 100644
---- a/src/ibusengine.c
-+++ b/src/ibusengine.c
-@@ -190,6 +190,11 @@ ibus_engine_class_init (IBusEngineClass *klass)
- 
- 
-     /* install properties */
-+    /**
-+     * IBusEngine:name:
-+     *
-+     * Name of this IBusEngine.
-+     */
-     g_object_class_install_property (gobject_class,
-                     PROP_NAME,
-                     g_param_spec_string ("name",
-@@ -198,7 +203,11 @@ ibus_engine_class_init (IBusEngineClass *klass)
-                         "noname",
-                         G_PARAM_READWRITE |  G_PARAM_CONSTRUCT_ONLY));
- 
--
-+    /**
-+     * IBusEngine:connection:
-+     *
-+     * Connection for this IBusEngine.
-+     */
-     g_object_class_install_property (gobject_class,
-                     PROP_CONNECTION,
-                     g_param_spec_object ("connection",
-@@ -208,6 +217,15 @@ ibus_engine_class_init (IBusEngineClass *klass)
-                         G_PARAM_READWRITE |  G_PARAM_CONSTRUCT_ONLY));
- 
-     /* install signals */
-+    /**
-+     * IBusEngine::process-key-event:
-+     * @engine: An IBusEngine.
-+     * @keyval: KeySym of the key press.
-+     * @state: Key modifier flags
-+     *
-+     * This signal is emitted whenever a key event is received.
-+     * Implement process_key_event() in extend class to receive this signal.
-+     */
-     engine_signals[PROCESS_KEY_EVENT] =
-         g_signal_new (I_("process-key-event"),
-             G_TYPE_FROM_CLASS (gobject_class),
-@@ -220,6 +238,13 @@ ibus_engine_class_init (IBusEngineClass *klass)
-             G_TYPE_UINT,
-             G_TYPE_UINT);
- 
-+    /**
-+     * IBusEngine::focus-in:
-+     * @engine: An IBusEngine.
-+     *
-+     * This signal is emitted whenever the client application get the focus.
-+     * Implement focus_in() in extend class to receive this signal.
-+     */
-     engine_signals[FOCUS_IN] =
-         g_signal_new (I_("focus-in"),
-             G_TYPE_FROM_CLASS (gobject_class),
-@@ -230,6 +255,13 @@ ibus_engine_class_init (IBusEngineClass *klass)
-             G_TYPE_NONE,
-             0);
- 
-+    /**
-+     * IBusEngine::focus-out:
-+     * @engine: An IBusEngine.
-+     *
-+     * This signal is emitted whenever the client application  lost the focus.
-+     * Implement focus_out() in extend class to receive this signal.
-+     */
-     engine_signals[FOCUS_OUT] =
-         g_signal_new (I_("focus-out"),
-             G_TYPE_FROM_CLASS (gobject_class),
-@@ -240,6 +272,13 @@ ibus_engine_class_init (IBusEngineClass *klass)
-             G_TYPE_NONE,
-             0);
- 
-+    /**
-+     * IBusEngine::reset:
-+     * @engine: An IBusEngine.
-+     *
-+     * This signal is emitted whenever the IME is reset.
-+     * Implement reset() in extend class to receive this signal.
-+     */
-     engine_signals[RESET] =
-         g_signal_new (I_("reset"),
-             G_TYPE_FROM_CLASS (gobject_class),
-@@ -250,6 +289,13 @@ ibus_engine_class_init (IBusEngineClass *klass)
-             G_TYPE_NONE,
-             0);
- 
-+    /**
-+     * IBusEngine::enable:
-+     * @engine: An IBusEngine.
-+     *
-+     * This signal is emitted whenever the IME is enabled.
-+     * Implement enable() in extend class to receive this signal.
-+     */
-     engine_signals[ENABLE] =
-         g_signal_new (I_("enable"),
-             G_TYPE_FROM_CLASS (gobject_class),
-@@ -260,6 +306,13 @@ ibus_engine_class_init (IBusEngineClass *klass)
-             G_TYPE_NONE,
-             0);
- 
-+    /**
-+     * IBusEngine::disable:
-+     * @engine: An IBusEngine.
-+     *
-+     * This signal is emitted whenever the IME is disabled.
-+     * Implement disable() in extend class to receive this signal.
-+     */
-     engine_signals[DISABLE] =
-         g_signal_new (I_("disable"),
-             G_TYPE_FROM_CLASS (gobject_class),
-@@ -270,6 +323,13 @@ ibus_engine_class_init (IBusEngineClass *klass)
-             G_TYPE_NONE,
-             0);
- 
-+    /**
-+     * IBusEngine::set-cursor-location:
-+     * @engine: An IBusEngine.
-+     *
-+     * This signal is emitted whenever the location of IME is set.
-+     * Implement set_cursor_location() in extend class to receive this signal.
-+     */
-     engine_signals[SET_CURSOR_LOCATION] =
-         g_signal_new (I_("set-cursor-location"),
-             G_TYPE_FROM_CLASS (gobject_class),
-@@ -284,6 +344,13 @@ ibus_engine_class_init (IBusEngineClass *klass)
-             G_TYPE_INT,
-             G_TYPE_INT);
- 
-+    /**
-+     * IBusEngine::set-capabilities:
-+     * @engine: An IBusEngine.
-+     *
-+     * This signal is emitted whenever the client application capabilities is set.
-+     * Implement set_cursor_location() in extend class to receive this signal.
-+     */
-     engine_signals[SET_CAPABILITIES] =
-         g_signal_new (I_("set-capabilities"),
-             G_TYPE_FROM_CLASS (gobject_class),
-@@ -295,6 +362,13 @@ ibus_engine_class_init (IBusEngineClass *klass)
-             1,
-             G_TYPE_UINT);
- 
-+    /**
-+     * IBusEngine::page-up:
-+     * @engine: An IBusEngine.
-+     *
-+     * This signal is emitted whenever the page-up key is pressed.
-+     * Implement page_up() in extend class to receive this signal.
-+     */
-     engine_signals[PAGE_UP] =
-         g_signal_new (I_("page-up"),
-             G_TYPE_FROM_CLASS (gobject_class),
-@@ -305,6 +379,13 @@ ibus_engine_class_init (IBusEngineClass *klass)
-             G_TYPE_NONE,
-             0);
- 
-+    /**
-+     * IBusEngine::page-down:
-+     * @engine: An IBusEngine.
-+     *
-+     * This signal is emitted whenever the page-down key is pressed.
-+     * Implement page_down() in extend class to receive this signal.
-+     */
-     engine_signals[PAGE_DOWN] =
-         g_signal_new (I_("page-down"),
-             G_TYPE_FROM_CLASS (gobject_class),
-@@ -315,6 +396,13 @@ ibus_engine_class_init (IBusEngineClass *klass)
-             G_TYPE_NONE,
-             0);
- 
-+    /**
-+     * IBusEngine::cursor-up:
-+     * @engine: An IBusEngine.
-+     *
-+     * This signal is emitted whenever the up cursor key is pressed.
-+     * Implement cursor_up() in extend class to receive this signal.
-+     */
-     engine_signals[CURSOR_UP] =
-         g_signal_new (I_("cursor-up"),
-             G_TYPE_FROM_CLASS (gobject_class),
-@@ -325,6 +413,13 @@ ibus_engine_class_init (IBusEngineClass *klass)
-             G_TYPE_NONE,
-             0);
- 
-+    /**
-+     * IBusEngine::cursor-down:
-+     * @engine: An IBusEngine.
-+     *
-+     * This signal is emitted whenever the down cursor key is pressed.
-+     * Implement cursor_down() in extend class to receive this signal.
-+     */
-     engine_signals[CURSOR_DOWN] =
-         g_signal_new (I_("cursor-down"),
-             G_TYPE_FROM_CLASS (gobject_class),
-@@ -335,6 +430,13 @@ ibus_engine_class_init (IBusEngineClass *klass)
-             G_TYPE_NONE,
-             0);
- 
-+    /**
-+     * IBusEngine::property-activate:
-+     * @engine: An IBusEngine.
-+     *
-+     * This signal is emitted whenever a property is activated or change changed.
-+     * Implement property_activate() in extend class to receive this signal.
-+     */
-     engine_signals[PROPERTY_ACTIVATE] =
-         g_signal_new (I_("property-activate"),
-             G_TYPE_FROM_CLASS (gobject_class),
-@@ -347,6 +449,13 @@ ibus_engine_class_init (IBusEngineClass *klass)
-             G_TYPE_STRING,
-             G_TYPE_UINT);
- 
-+    /**
-+     * IBusEngine::property-show:
-+     * @engine: An IBusEngine.
-+     *
-+     * This signal is emitted whenever a property is shown.
-+     * Implement property_show() in extend class to receive this signal.
-+     */
-     engine_signals[PROPERTY_SHOW] =
-         g_signal_new (I_("property-show"),
-             G_TYPE_FROM_CLASS (gobject_class),
-@@ -358,6 +467,13 @@ ibus_engine_class_init (IBusEngineClass *klass)
-             1,
-             G_TYPE_STRING);
- 
-+    /**
-+     * IBusEngine::property-hide:
-+     * @engine: An IBusEngine.
-+     *
-+     * This signal is emitted whenever a property is hidden.
-+     * Implement property_hide() in extend class to receive this signal.
-+     */
-     engine_signals[PROPERTY_HIDE] =
-         g_signal_new (I_("property-hide"),
-             G_TYPE_FROM_CLASS (gobject_class),
-@@ -915,9 +1031,10 @@ ibus_engine_hide_auxiliary_text (IBusEngine *engine)
-                   G_TYPE_INVALID);
- }
- 
--void ibus_engine_update_lookup_table (IBusEngine        *engine,
--                                      IBusLookupTable   *table,
--                                      gboolean           visible)
-+void
-+ibus_engine_update_lookup_table (IBusEngine        *engine,
-+                                 IBusLookupTable   *table,
-+                                 gboolean           visible)
- {
-     _send_signal (engine,
-                   "UpdateLookupTable",
-@@ -926,6 +1043,35 @@ void ibus_engine_update_lookup_table (IBusEngine        *engine,
-                   G_TYPE_INVALID);
- }
- 
-+void
-+ibus_engine_update_lookup_table_fast (IBusEngine        *engine,
-+                                      IBusLookupTable   *table,
-+                                      gboolean           visible)
-+{
-+    IBusLookupTable *new_table;
-+    gint page_begin;
-+    gint i;
-+
-+    if (table->candidates->len < table->page_size << 2) {
-+        ibus_engine_update_lookup_table (engine, table, visible);
-+        return;
-+    }
-+
-+    page_begin = (table->cursor_pos / table->page_size) * table->page_size;
-+
-+    new_table = ibus_lookup_table_new (table->page_size, 0, table->cursor_visible, table->round);
-+
-+    for (i = page_begin; i < page_begin + table->page_size && i < table->candidates->len; i++) {
-+        ibus_lookup_table_append_candidate (new_table, ibus_lookup_table_get_candidate (table, i));
-+    }
-+
-+    ibus_lookup_table_set_cursor_pos (new_table, ibus_lookup_table_get_cursor_in_page (table));
-+
-+    ibus_engine_update_lookup_table (engine, new_table, visible);
-+
-+    g_object_unref (new_table);
-+}
-+
- void ibus_engine_show_lookup_table (IBusEngine *engine)
- {
-     _send_signal (engine,
-@@ -942,13 +1088,11 @@ void ibus_engine_hide_lookup_table (IBusEngine *engine)
- 
- void ibus_engine_forward_key_event (IBusEngine      *engine,
-                                     guint            keyval,
--                                    gboolean         is_press,
-                                     guint            state)
- {
-     _send_signal (engine,
--                  "HideLookupTable",
-+                  "ForwardKeyEvent",
-                   G_TYPE_UINT, &keyval,
--                  G_TYPE_BOOLEAN, &is_press,
-                   G_TYPE_UINT, &state,
-                   G_TYPE_INVALID);
- }
-diff --git a/src/ibusengine.h b/src/ibusengine.h
-index 1a35c06..4fe12dc 100644
---- a/src/ibusengine.h
-+++ b/src/ibusengine.h
-@@ -129,6 +129,10 @@ void         ibus_engine_update_lookup_table
-                                         (IBusEngine         *engine,
-                                          IBusLookupTable    *lookup_table,
-                                          gboolean            visible);
-+void         ibus_engine_update_lookup_table_fast
-+                                        (IBusEngine         *engine,
-+                                         IBusLookupTable    *lookup_table,
-+                                         gboolean            visible);
- void         ibus_engine_show_lookup_table
-                                         (IBusEngine         *engine);
- void         ibus_engine_hide_lookup_table
-@@ -137,7 +141,6 @@ void         ibus_engine_hide_lookup_table
- void         ibus_engine_forward_key_event
-                                         (IBusEngine         *engine,
-                                          guint               keyval,
--                                         gboolean            is_press,
-                                          guint               state);
- 
- void         ibus_engine_register_properties
-diff --git a/src/ibusenginedesc.c b/src/ibusenginedesc.c
-index 39062b3..f9173e7 100644
---- a/src/ibusenginedesc.c
-+++ b/src/ibusenginedesc.c
-@@ -264,7 +264,7 @@ ibus_engine_desc_output (IBusEngineDesc *desc,
-     OUTPUT_ENTRY_1(icon);
-     OUTPUT_ENTRY_1(layout);
-     g_string_append_indent (output, indent + 1);
--    g_string_append_printf (output, "<rank>%u</rank>", desc->rank);
-+    g_string_append_printf (output, "<rank>%u</rank>\n", desc->rank);
- #undef OUTPUT_ENTRY
- #undef OUTPUT_ENTRY_1
-     g_string_append_indent (output, indent);
-diff --git a/src/ibusenginedesc.h b/src/ibusenginedesc.h
-index 1ba9153..ad83f1f 100644
---- a/src/ibusenginedesc.h
-+++ b/src/ibusenginedesc.h
-@@ -17,6 +17,22 @@
-  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-  * Boston, MA 02111-1307, USA.
-  */
-+/**
-+ * SECTION: ibusenginedesc
-+ * @short_description:  Input method engine description data.
-+ * @stability: Stable
-+ * @see_also: #IBusComponent, #IBusEngine
-+ *
-+ * An IBusEngineDesc stores description data of IBusEngine.
-+ * The description data can either be passed to ibus_engine_desc_new(),
-+ * or loaded from an XML node through ibus_engine_desc_new_from_xml_node()
-+ * to construct IBusEngineDesc.
-+ *
-+ * However, the recommended way to load engine description data is
-+ * using ibus_component_new_from_file() to load a component file,
-+ * which also includes engine description data.
-+ */
-+
- #ifndef __ENGINE_DESC_H_
- #define __ENGINE_DESC_H_
- 
-@@ -47,10 +63,26 @@ typedef struct _IBusEngineDesc IBusEngineDesc;
- typedef struct _IBusEngineDescClass IBusEngineDescClass;
- typedef struct _BusComponent BusComponent;
- 
-+/**
-+ * IBusEngineDesc:
-+ * @name: Name of the engine.
-+ * @longname: Long name of the input method engine.
-+ * @description: Input method engine description.
-+ * @language: Language (e.g. zh, jp) supported by this input method engine.
-+ * @license: License of the input method engine.
-+ * @author: Author of the input method engine.
-+ * @icon: Icon file of this engine.
-+ * @layout: Keyboard layout
-+ * @rank: Preference rank among engines, the highest ranked IME will put in
-+ * the front.
-+ *
-+ * Input method engine description data.
-+ */
- struct _IBusEngineDesc {
-     IBusSerializable parent;
-     /* instance members */
- 
-+    /*< public >*/
-     gchar *name;
-     gchar *longname;
-     gchar *description;
-@@ -64,11 +96,25 @@ struct _IBusEngineDesc {
- 
- struct _IBusEngineDescClass {
-     IBusSerializableClass parent;
--
-     /* class members */
- };
- 
- GType            ibus_engine_desc_get_type      (void);
-+
-+/**
-+ * ibus_engine_desc_new:
-+ * @name: Name of the engine.
-+ * @longname: Long name of the input method engine.
-+ * @description: Input method engine description.
-+ * @language: Language (e.g. zh, jp) supported by this input method engine.
-+ * @license: License of the input method engine.
-+ * @author: Author of the input method engine.
-+ * @icon: Icon file of this engine.
-+ * @layout: Keyboard layout
-+ * @returns: A newly allocated IBusEngineDesc.
-+ *
-+ * New a IBusEngineDesc.
-+ */
- IBusEngineDesc  *ibus_engine_desc_new           (const gchar    *name,
-                                                  const gchar    *longname,
-                                                  const gchar    *description,
-@@ -77,8 +123,28 @@ IBusEngineDesc  *ibus_engine_desc_new           (const gchar    *name,
-                                                  const gchar    *author,
-                                                  const gchar    *icon,
-                                                  const gchar    *layout);
-+/**
-+ * ibus_engine_desc_new_from_xml_node:
-+ * @node: An XML node
-+ * @returns: A newly allocated IBusEngineDesc that contains description from
-+ * @node.
-+ *
-+ * New a IBusEngineDesc from an XML node.
-+ * <note><para>This function is called by ibus_component_new_from_file(),
-+ *  so developers normally do not need to call it directly.
-+ * </para></note>
-+ */
- IBusEngineDesc  *ibus_engine_desc_new_from_xml_node
-                                                 (XMLNode        *node);
-+/**
-+ * ibus_engine_desc_output:
-+ * @info: An IBusEngineDesc
-+ * @output: XML-formatted Input method engine description.
-+ * @indent: Number of indent (showed as 4 spaces).
-+ *
-+ * Output XML-formatted input method engine description.
-+ * The result will be append to GString specified in @output.
-+ */
- void             ibus_engine_desc_output        (IBusEngineDesc  *info,
-                                                  GString        *output,
-                                                  gint            indent);
-diff --git a/src/ibusinputcontext.c b/src/ibusinputcontext.c
-index 94de55a..95754cf 100644
---- a/src/ibusinputcontext.c
-+++ b/src/ibusinputcontext.c
-@@ -426,14 +426,12 @@ ibus_input_context_ibus_signal (IBusProxy           *proxy,
-                                      IBUS_INTERFACE_INPUT_CONTEXT,
-                                      "ForwardKeyEvent")) {
-         guint32 keyval;
--        gboolean is_press;
-         guint32 state;
-         gboolean retval;
- 
-         retval = ibus_message_get_args (message,
-                                         &error,
-                                         G_TYPE_UINT, &keyval,
--                                        G_TYPE_BOOLEAN, &is_press,
-                                         G_TYPE_UINT, &state,
-                                         G_TYPE_INVALID);
- 
-diff --git a/src/ibuslookuptable.c b/src/ibuslookuptable.c
-index 37342c5..5e1bc81 100644
---- a/src/ibuslookuptable.c
-+++ b/src/ibuslookuptable.c
-@@ -273,6 +273,8 @@ ibus_lookup_table_clear (IBusLookupTable *table)
-     }
- 
-     g_array_set_size (table->candidates, 0);
-+
-+    table->cursor_pos = 0;
- }
- 
- void
-diff --git a/src/ibusobject.h b/src/ibusobject.h
-index 67fb95b..a3adfe2 100644
---- a/src/ibusobject.h
-+++ b/src/ibusobject.h
-@@ -17,9 +17,24 @@
-  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-  * Boston, MA 02111-1307, USA.
-  */
-+/**
-+ * SECTION: ibusobject
-+ * @short_description: Base Object of iBus.
-+ * @stability: Stable
-+ *
-+ * iBus Object is the base object for all objects in iBus.
-+ */
- #ifndef __IBUS_OBJECT_H_
- #define __IBUS_OBJECT_H_
- 
-+/**
-+ * SECTION: iBusObject
-+ * @short_description: Base object of iBus.
-+ *
-+ *
-+ * This module provides essential definition and functions for manipulating
-+ * iBus base object.
-+ */
- #include <glib-object.h>
- #include "ibusmarshalers.h"
- #include "ibustypes.h"
-diff --git a/src/ibusproperty.h b/src/ibusproperty.h
-index 19ff33c..d28d3a8 100644
---- a/src/ibusproperty.h
-+++ b/src/ibusproperty.h
-@@ -17,6 +17,19 @@
-  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-  * Boston, MA 02111-1307, USA.
-  */
-+/**
-+ * SECTION: ibusproperty
-+ * @short_description: UI component for input method engine property.
-+ * @stability: Stable
-+ * @see_also: #IBusEngine
-+ *
-+ * An IBusProperty is an UI component like a button or a menu item
-+ * which shows the status of corresponding input method engine property.
-+ * End user can operate and see the current status of IME through these components.
-+ * For example, ibus-chewing users change the English/Chinese input mode by
-+ * pressing ctrl-space or click on the Eng/Chi switch button.
-+ * And the IBusProperty shows the change correspondingly.
-+ */
- #ifndef __IBUS_PROPERTY_H_
- #define __IBUS_PROPERTY_H_
- 
-@@ -59,7 +72,17 @@ G_BEGIN_DECLS
- #define IBUS_PROP_LIST_GET_CLASS(obj)   \
-     (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_TYPE_PROP_LIST, IBusPropListClass))
- 
--
-+/**
-+ * IBusPropType:
-+ * @PROP_TYPE_NORMAL: Property is shown as normal text.
-+ * @PROP_TYPE_TOGGLE: Property is shown as a toggle button.
-+ * @PROP_TYPE_RADIO: Property is shown as a radio selection option.
-+ * @PROP_TYPE_MENU: Property is shown as a menu, usually imply it has sub menu
-+ * items.
-+ * @PROP_TYPE_SEPARATOR: A separator for menu.
-+ *
-+ * Type of IBusProperty.
-+ */
- typedef enum {
-     PROP_TYPE_NORMAL = 0,
-     PROP_TYPE_TOGGLE = 1,
-@@ -68,6 +91,28 @@ typedef enum {
-     PROP_TYPE_SEPARATOR = 4,
- } IBusPropType;
- 
-+/**
-+ * IBusPropState:
-+ * @PROP_STATE_UNCHECKED: Property option is unchecked.
-+ * @PROP_STATE_CHECKED: Property option is checked.
-+ * @PROP_STATE_INCONSISTENT: The state is inconsistent with the associated IME
-+ * property.
-+ *
-+ * State of IBusProperty. The actual effect depends on #IBusPropType of the
-+ * IBusProperty.
-+ *
-+ * <variablelist>
-+ *     <varlistentry>
-+ *         <term>PROP_TYPE_TOGGLE</term>
-+ *         <listitem><para>Emphasized if PROP_STATE_CHECKED, normal otherwise.</para></listitem>
-+ *     </varlistentry>
-+ *     <varlistentry>
-+ *         <term>PROP_TYPE_RADIO</term>
-+ *         <listitem><para>Option checked if PROP_STATE_CHECKED, unchecked otherwise.</para></listitem>
-+ *     </varlistentry>
-+ * </variablelist>
-+ * No effect on other types.
-+ */
- typedef enum {
-     PROP_STATE_UNCHECKED = 0,
-     PROP_STATE_CHECKED = 1,
-@@ -80,9 +125,25 @@ typedef struct _IBusPropertyClass IBusPropertyClass;
- typedef struct _IBusPropList IBusPropList;
- typedef struct _IBusPropListClass IBusPropListClass;
- 
-+/**
-+ * IBusProperty:
-+ * @key: Unique Identity for the IBusProperty.
-+ * @icon: Icon file for the IBusProperty.
-+ * @label: Text shown in UI.
-+ * @tooltip: Message shown if mouse hovered the  IBusProperty.
-+ * @sensitive: Whether the IBusProperty is sensitive to keyboard and mouse event.
-+ * @visible: Whether the IBusProperty is visible.
-+ * @type: IBusPropType of IBusProperty.
-+ * @state: IBusPropState of IBusProperty.
-+ * @sub_props: IBusPropList that contains sub IBusProperties. These IBusProperties are usually
-+ * shown as sub menu item.
-+ *
-+ * UI component for input method engine property.
-+ */
- struct _IBusProperty {
-     IBusSerializable parent;
- 
-+    /*< public >*/
-     gchar    *key;
-     gchar    *icon;
-     IBusText *label;
-@@ -100,9 +161,16 @@ struct _IBusPropertyClass {
-     IBusSerializableClass parent;
- };
- 
-+/**
-+ * IBusPropList:
-+ * @properties: GArray that holds IBusProperties.
-+ *
-+ * A GArray of IBusProperties.
-+ */
- struct _IBusPropList {
-     IBusSerializable parent;
- 
-+    /*< public >*/
-     GArray *properties;
- };
- 
-@@ -111,6 +179,22 @@ struct _IBusPropListClass {
- };
- 
- GType            ibus_property_get_type     ();
-+
-+/**
-+ * ibus_property_new:
-+ * @key: Unique Identity for the IBusProperty.
-+ * @icon: Icon file for the IBusProperty.
-+ * @label: Text shown in UI.
-+ * @tooltip: Message shown if mouse hovered the  IBusProperty.
-+ * @sensitive: Whether the IBusProperty is sensitive to keyboard and mouse event.
-+ * @visible: Whether the IBusProperty is visible.
-+ * @type: IBusPropType of IBusProperty.
-+ * @state: IBusPropState of IBusProperty.
-+ * @prop_list: IBusPropList that contains sub IBusProperties.
-+ * @returns: A newly allocated IBusProperty.
-+ *
-+ * New a IBusProperty.
-+ */
- IBusProperty    *ibus_property_new          (const gchar    *key,
-                                              IBusPropType    type,
-                                              IBusText       *label,
-@@ -120,21 +204,90 @@ IBusProperty    *ibus_property_new          (const gchar    *key,
-                                              gboolean        visible,
-                                              IBusPropState   state,
-                                              IBusPropList   *prop_list);
-+
-+/**
-+ * ibus_property_set_label:
-+ * @prop: An IBusProperty.
-+ * @label: Text shown in UI.
-+ *
-+ * Set the label of IBusProperty.
-+ */
- void             ibus_property_set_label    (IBusProperty   *prop,
-                                              IBusText       *label);
-+
-+/**
-+ * ibus_property_set_visible:
-+ * @prop: An IBusProperty.
-+ * @visible: Whether the IBusProperty is visible.
-+ *
-+ * Set whether the IBusProperty is visible.
-+ */
- void             ibus_property_set_visible  (IBusProperty   *prop,
-                                              gboolean        visible);
-+
-+/**
-+ * ibus_property_set_sub_props:
-+ * @prop: An IBusProperty.
-+ * @prop_list: IBusPropList that contains sub IBusProperties.
-+ *
-+ * Set the sub IBusProperties.
-+ */
- void             ibus_property_set_sub_props(IBusProperty   *prop,
-                                              IBusPropList   *prop_list);
-+
-+/**
-+ * ibus_property_update:
-+ * @prop: An IBusProperty.
-+ * @prop_update: IBusPropList that contains sub IBusProperties.
-+ * @returns: TRUE for update suceeded; FALSE otherwise.
-+ *
-+ * Update the content of an IBusProperty.
-+ * IBusProperty @prop_update can either be sub-property of @prop,
-+ * or holds new values for @prop.
-+ */
-+
- gboolean         ibus_property_update       (IBusProperty   *prop,
-                                              IBusProperty   *prop_update);
- 
- GType            ibus_prop_list_get_type    ();
-+
-+/**
-+ * ibus_prop_list_new:
-+ * @returns: A newly allocated IBusPropList.
-+ *
-+ * New a IBusPropList.
-+ */
- IBusPropList    *ibus_prop_list_new         ();
-+
-+/**
-+ * ibus_prop_list_append:
-+ * @prop_list: An IBusPropList.
-+ * @prop: IBusProperty to be append to @prop_list.
-+ *
-+ * Append an IBusProperty to an IBusPropList.
-+ */
- void             ibus_prop_list_append      (IBusPropList   *prop_list,
-                                              IBusProperty   *prop);
-+
-+/**
-+ * ibus_prop_list_get:
-+ * @prop_list: An IBusPropList.
-+ * @index: Index of an IBusPropList.
-+ * @returns: IBusProperty at given index, NULL if no such IBusProperty.
-+ *
-+ * Returns IBusProperty at given index.
-+ */
- IBusProperty    *ibus_prop_list_get         (IBusPropList   *prop_list,
-                                              guint           index);
-+
-+/**
-+ * ibus_prop_list_update_property:
-+ * @prop_list: An IBusPropList.
-+ * @prop: IBusProperty to be update.
-+ * @returns: TRUE if succeeded, FALSE otherwise.
-+ *
-+ * Update an IBusProperty in IBusPropList.
-+ */
- gboolean         ibus_prop_list_update_property
-                                             (IBusPropList   *prop_list,
-                                              IBusProperty   *prop);
-diff --git a/src/ibustext.h b/src/ibustext.h
-index 9696f80..1c48c1e 100644
---- a/src/ibustext.h
-+++ b/src/ibustext.h
-@@ -17,6 +17,17 @@
-  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-  * Boston, MA 02111-1307, USA.
-  */
-+/**
-+ * SECTION: ibustext
-+ * @short_description: Text with decorating information.
-+ * @see_also: #IBusAttribute
-+ *
-+ * An IBusText is the main text object in IBus.
-+ * The text is decorated according to associated IBusAttribute,
-+ * e.g. the foreground/background color, underline, and
-+ * applied scope.
-+ */
-+
- #ifndef __IBUS_TEXT_H_
- #define __IBUS_TEXT_H_
- 
-@@ -45,10 +56,19 @@ G_BEGIN_DECLS
- typedef struct _IBusText IBusText;
- typedef struct _IBusTextClass IBusTextClass;
- 
-+/**
-+ * IBusText:
-+ * @is_static: Whether @text is static, i.e., no need and will not be freed. Only TRUE if IBusText is newed from ibus_text_new_from_static_string().
-+ * @text: The string content of IBusText in UTF-8.
-+ * @attrs: Associated IBusAttributes.
-+ *
-+ * A text object in IBus.
-+ */
- struct _IBusText {
-     IBusSerializable parent;
- 
-     /* members */
-+    /*< public >*/
-     gboolean is_static;
-     gchar  *text;
-     IBusAttrList *attrs;
-@@ -59,17 +79,79 @@ struct _IBusTextClass {
- };
- 
- GType            ibus_text_get_type                 (void);
-+
-+/**
-+ * ibus_text_new_from_string:
-+ * @str: An text string to be set.
-+ * @returns: A newly allocated IBusText.
-+ *
-+ * New an IBusText whose content is copied from a text string.
-+ */
- IBusText        *ibus_text_new_from_string          (const gchar    *str);
-+
-+/**
-+ * ibus_text_new_from_ucs4:
-+ * @str: An text string to be set.
-+ * @returns: A newly allocated IBusText.
-+ *
-+ * New an IBusText whose content is copied from a UCS4 encoded text string.
-+ */
- IBusText        *ibus_text_new_from_ucs4            (const gunichar *str);
-+
-+/**
-+ * ibus_text_new_from_static_string:
-+ * @str: An text string to be set.
-+ * @returns: A newly allocated IBusText.
-+ *
-+ * New an IBusText whose content is from a static string.
-+ * Note that it is the developer's duty to ensure @str is static.
-+ */
- IBusText        *ibus_text_new_from_static_string   (const gchar    *str);
-+
-+/**
-+ * ibus_text_new_from_printf:
-+ * @fmt: printf format string.
-+ * @...: arguments for @fmt.
-+ * @returns: A newly allocated IBusText.
-+ *
-+ * New an IBusText from a printf expression.
-+ */
- IBusText        *ibus_text_new_from_printf          (const gchar    *fmt,
-                                                      ...);
-+
-+/**
-+ * ibus_text_new_from_unichar:
-+ * @c: A single UCS4-encoded character.
-+ * @returns: A newly allocated IBusText.
-+ *
-+ * New an IBusText from a single UCS4-encoded character.
-+ */
- IBusText        *ibus_text_new_from_unichar         (gunichar        c);
-+
-+/**
-+ * ibus_text_append_attribute:
-+ * @text: an IBusText
-+ * @type: IBusAttributeType for @text.
-+ * @value: Value for the type.
-+ * @start_index: The starting index, inclusive.
-+ * @end_index: The ending index, exclusive.
-+ *
-+ * Append an IBusAttribute for IBusText.
-+ */
- void             ibus_text_append_attribute         (IBusText       *text,
-                                                      guint           type,
-                                                      guint           value,
-                                                      guint           start_index,
-                                                      gint            end_index);
-+/**
-+ * ibus_text_get_length:
-+ * @text: An IBusText.
-+ * @returns: Number of character in @text, not counted by bytes.
-+ *
-+ * Return number of characters in an IBusText.
-+ * This function is based on g_utf8_strlen(), so unlike strlen(),
-+ * it does not count by bytes but characters instead.
-+ */
- guint            ibus_text_get_length               (IBusText       *text);
- 
- G_END_DECLS
-diff --git a/src/ibustypes.h b/src/ibustypes.h
-index a977db4..b2ea627 100644
---- a/src/ibustypes.h
-+++ b/src/ibustypes.h
-@@ -17,9 +17,41 @@
-  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-  * Boston, MA 02111-1307, USA.
-  */
-+/**
-+ * SECTION: ibustypes
-+ * @short_description: Generic types for  iBus.
-+ * @stability: Stable
-+ *
-+ * This session consists generic types for iBus, including shift/control key modifiers,
-+ * and a rectangle structure.
-+ */
- #ifndef __IBUS_TYPES_H_
- #define __IBUS_TYPES_H_
- 
-+/**
-+ * IBusModifierType:
-+ * @IBUS_SHIFT_MASK: Shift  is activated.
-+ * @IBUS_LOCK_MASK: Cap Lock is locked.
-+ * @IBUS_CONTROL_MASK: Control key is activated.
-+ * @IBUS_MOD1_MASK: Modifier 1 (Usually Alt_L (0x40),  Alt_R (0x6c),  Meta_L (0xcd)) activated.
-+ * @IBUS_MOD2_MASK: Modifier 2 (Usually Num_Lock (0x4d)) activated.
-+ * @IBUS_MOD3_MASK: Modifier 3 activated.
-+ * @IBUS_MOD4_MASK: Modifier 4 (Usually Super_L (0xce),  Hyper_L (0xcf)) activated.
-+ * @IBUS_MOD5_MASK: Modifier 5 (ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)) activated.
-+ * @IBUS_BUTTON1_MASK: Mouse button 1 (left) is activated.
-+ * @IBUS_BUTTON2_MASK: Mouse button 2 (middle) is activated.
-+ * @IBUS_BUTTON3_MASK: Mouse button 3 (right) is activated.
-+ * @IBUS_BUTTON4_MASK: Mouse button 4 (scroll up) is activated.
-+ * @IBUS_BUTTON5_MASK: Mouse button 5 (scroll down) is activated.
-+ * @IBUS_FORWARD_MASK: Forward mask.
-+ * @IBUS_SUPER_MASK: Super (Usually Win) key is activated.
-+ * @IBUS_HYPER_MASK: Hyper key is activated.
-+ * @IBUS_RELEASE_MASK: Key is released.
-+ * @IBUS_MODIFIER_MASK: Modifier mask for the all the masks above.
-+ *
-+ * Handles key modifier such as control, shift and alt and release event.
-+ * Note that nits 15 - 25 are currently unused, while bit 29 is used internally.
-+ */
- typedef enum
- {
-     IBUS_SHIFT_MASK    = 1 << 0,
-@@ -40,7 +72,7 @@ typedef enum
-      * Bits 15 - 25 are currently unused. Bit 29 is used internally.
-      */
- 
--    /* forard mask */
-+    /* forward mask */
-     IBUS_FORWARD_MASK  = 1 << 25,
- 
-     IBUS_SUPER_MASK    = 1 << 26,
-@@ -52,6 +84,16 @@ typedef enum
-     IBUS_MODIFIER_MASK = 0x5c001fff
- } IBusModifierType;
- 
-+/**
-+ * IBusCapabilite:
-+ * @IBUS_CAP_PREEDIT_TEXT: UI is capable to show pre-edit text.
-+ * @IBUS_CAP_AUXILIARY_TEXT: UI is capable to show auxiliary text.
-+ * @IBUS_CAP_LOOKUP_TABLE: UI is capable to show the lookup table.
-+ * @IBUS_CAP_FOCUS: UI is capable to get focus.
-+ * @IBUS_CAP_PROPERTY: UI is capable to have property.
-+ *
-+ * Capability flags of UI.
-+ */
- typedef enum {
-     IBUS_CAP_PREEDIT_TEXT       = 1 << 0,
-     IBUS_CAP_AUXILIARY_TEXT     = 1 << 1,
-@@ -60,6 +102,15 @@ typedef enum {
-     IBUS_CAP_PROPERTY           = 1 << 4,
- } IBusCapabilite;
- 
-+/**
-+ * IBusRectangle:
-+ * @x: x coordinate.
-+ * @y: y coordinate.
-+ * @width: width of the rectangle.
-+ * @height: height of the renctangl.
-+ *
-+ * Rectangle definition.
-+ */
- typedef struct _IBusRectangle IBusRectangle;
- struct _IBusRectangle {
-     gint x;
-@@ -68,7 +119,13 @@ struct _IBusRectangle {
-     gint height;
- };
- 
--typedef void (* IBusFreeFunc) (gpointer );
-+/**
-+ * IBusFreeFunc:
-+ * @object: object to be freed.
-+ *
-+ * Free function prototype.
-+ */
-+typedef void (* IBusFreeFunc) (gpointer object);
- 
- #endif
- 
-diff --git a/ui/gtk/candidatepanel.py b/ui/gtk/candidatepanel.py
-index db02163..05c4e71 100644
---- a/ui/gtk/candidatepanel.py
-+++ b/ui/gtk/candidatepanel.py
-@@ -238,11 +238,11 @@ class CandidatePanel(gtk.VBox):
-         else:
-             # package all widgets in HORIZONTAL mode
-             image = gtk.Image()
--            image.set_from_stock(gtk.STOCK_GO_BACK, gtk.ICON_SIZE_MENU)
-+            image.set_from_stock(gtk.STOCK_GO_UP, gtk.ICON_SIZE_MENU)
-             self.__prev_button.set_image(image)
- 
-             image = gtk.Image()
--            image.set_from_stock(gtk.STOCK_GO_FORWARD, gtk.ICON_SIZE_MENU)
-+            image.set_from_stock(gtk.STOCK_GO_DOWN, gtk.ICON_SIZE_MENU)
-             self.__next_button.set_image(image)
- 
-             vbox = gtk.VBox()

diff --git a/ibus.spec b/ibus.spec
index 54d57e9..faa1792 100644
--- a/ibus.spec
+++ b/ibus.spec
@@ -7,8 +7,8 @@
 %define im_chooser_version 1.2.5
 
 Name:       ibus
-Version:    1.1.0.20090311
-Release:    3%{?dist}
+Version:    1.1.0.20090331
+Release:    1%{?dist}
 Summary:    Intelligent Input Bus for Linux OS
 License:    LGPLv2+
 Group:      System Environment/Libraries
@@ -104,9 +104,9 @@ docs for ibus.
 
 %prep
 %setup -q
-rm -rf docs/reference/ibus/ibus-sections.txt
-%patch0 -p1
-./autogen.sh --help
+# rm -rf docs/reference/ibus/ibus-sections.txt
+# %patch0 -p1
+# ./autogen.sh --help
 
 %build
 %configure --disable-static \
@@ -217,6 +217,11 @@ fi
 %{_libdir}/pkgconfig/*
 
 %changelog
+* Tue Mar 31 2009 Huang Peng <shawn.p.huang@gmail.com> - 1.1.0.20090331-1
+- Update to ibus-1.1.0.20090331.
+- Fix bug 492956 - screws up keyboard input in firefox
+- Fix bug 490143 - ibus issue with gnome-keyring
+
 * Sun Mar 29 2009 Huang Peng <shawn.p.huang@gmail.com> - 1.1.0.20090311-3
 - Recreate the ibus-HEAD.patch from upstream git source tree
 - Fix bug 491999 - up/down arrow keys broken in xchat

diff --git a/sources b/sources
index f8cac04..e2a4716 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-0a5dca579d10bdcc7eba4f475b5a0c2b  ibus-1.1.0.20090311.tar.gz
+787a78e36da753835b059dbb46f54a40  ibus-1.1.0.20090331.tar.gz

                 reply	other threads:[~2026-05-31  2:04 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=178019305497.1.17498106723953927561.rpms-ibus-95e3c55ee4e8@fedoraproject.org \
    --to=phuang@fedoraproject.org \
    --cc=git-commits@fedoraproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox