From 95e3c55ee4e8de3e088a6293352433a94fe73ad8 Mon Sep 17 00:00:00 2001 From: Peng Huang Date: Mar 31 2009 03:55:08 +0000 Subject: 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 - #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"> - - -- IBus Reference Manual -+ iBus Reference Manual - -- for ibus 1.1.0 -+ iBus 1.1.0 reference manual. - The latest version of this documentation can be found on-line at - http://code.google.com/p/ibus. - - - - -- API Reference -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -+ API Overviews -+ The iBus API consists 3 parts: -+ User interfaces for objects and services which -+ are relateed to iBus UI such as language bar; -+ Input method engine for input method main logic and input/output handling; -+ Configure for services for save, load and listening configures. -+ -+ -+ -+ User Interfaces -+ These APIs directly related to User interfaces, such as -+ pre-edit buffer, auxiliary text, language bar, button, -+ radio boxes, and so on. -+ -+ -+ -+ -+ -+ -+ -+ Input method engine -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ Configure -+ -+ -+ -+ -+ -+ -+ -+ Others -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - -+ -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 @@ -+
-+ibusproperty -+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 -+IBusProperty -+IBusProperty -+IBusPropList -+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 -+ -+IBUS_PROPERTY -+IBUS_IS_PROPERTY -+IBUS_TYPE_PROPERTY -+ibus_property_get_type -+IBUS_PROPERTY_CLASS -+IBUS_IS_PROPERTY_CLASS -+IBUS_PROPERTY_GET_CLASS -+
-+ -+
-+ibusproxy -+IBusProxy -+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 -+ -+IBUS_PROXY -+IBUS_IS_PROXY -+IBUS_TYPE_PROXY -+ibus_proxy_get_type -+IBUS_PROXY_CLASS -+IBUS_IS_PROXY_CLASS -+IBUS_PROXY_GET_CLASS -+
-+ -+
-+ibusconfig -+IBusConfig -+IBusConfig -+ibus_config_new -+ibus_config_get_value -+ibus_config_set_value -+ -+IBUS_CONFIG -+IBUS_IS_CONFIG -+IBUS_TYPE_CONFIG -+ibus_config_get_type -+IBUS_CONFIG_CLASS -+IBUS_IS_CONFIG_CLASS -+IBUS_CONFIG_GET_CLASS -+
-+ -+
-+ibushotkey -+IBusHotkeyProfile -+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 -+ -+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 -+
-+ -+
-+ibusenginedesc -+BusComponent -+IBusEngineDesc -+IBusEngineDesc -+ibus_engine_desc_new -+ibus_engine_desc_new_from_xml_node -+ibus_engine_desc_output -+ -+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 -+
-+ -+
-+ibusfactory -+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 -+IBusFactory -+IBusFactory -+IBusFactoryInfo -+IBusFactoryInfo -+ibus_factory_new -+ibus_factory_add_engine -+ibus_factory_get_info -+ibus_factory_info_get_type -+ibus_factory_info_new -+ -+IBUS_FACTORY -+IBUS_IS_FACTORY -+IBUS_TYPE_FACTORY -+ibus_factory_get_type -+IBUS_FACTORY_CLASS -+IBUS_IS_FACTORY_CLASS -+IBUS_FACTORY_GET_CLASS -+
-+ -+
-+ibusobject -+IBusObjectFlags -+IBUS_OBJECT_FLAGS -+IBUS_OBJECT_SET_FLAGS -+IBUS_OBJECT_UNSET_FLAGS -+IBUS_OBJECT_DESTROYED -+IBusObject -+IBusObject -+ibus_object_new -+ibus_object_destroy -+ -+IBUS_OBJECT -+IBUS_IS_OBJECT -+IBUS_TYPE_OBJECT -+ibus_object_get_type -+IBUS_OBJECT_CLASS -+IBUS_IS_OBJECT_CLASS -+IBUS_OBJECT_GET_CLASS -+
-+ -+
-+ibusbus -+IBusBus -+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 -+ -+IBUS_BUS -+IBUS_IS_BUS -+IBUS_TYPE_BUS -+ibus_bus_get_type -+IBUS_BUS_CLASS -+IBUS_IS_BUS_CLASS -+IBUS_BUS_GET_CLASS -+
-+ -+
-+ibusattribute -+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 -+IBusAttribute -+IBusAttribute -+IBusAttrList -+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 -+ -+IBUS_ATTRIBUTE -+IBUS_IS_ATTRIBUTE -+IBUS_TYPE_ATTRIBUTE -+ibus_attribute_get_type -+IBUS_ATTRIBUTE_CLASS -+IBUS_IS_ATTRIBUTE_CLASS -+IBUS_ATTRIBUTE_GET_CLASS -+
-+ -+
-+ibusservice -+ServiceIBusMessageFunc -+ServiceIBusSignalFunc -+IBusService -+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 -+ -+IBUS_SERVICE -+IBUS_IS_SERVICE -+IBUS_TYPE_SERVICE -+ibus_service_get_type -+IBUS_SERVICE_CLASS -+IBUS_IS_SERVICE_CLASS -+IBUS_SERVICE_GET_CLASS -+
-+ -+
-+ibusserializable -+ibus_serializable_set_attachment -+ibus_serializable_get_attachment -+ibus_serializable_remove_attachment -+IBusSerializableSerializeFunc -+IBusSerializableDeserializeFunc -+IBusSerializableCopyFunc -+IBusSerializable -+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 -+ -+IBUS_SERIALIZABLE -+IBUS_IS_SERIALIZABLE -+IBUS_TYPE_SERIALIZABLE -+ibus_serializable_get_type -+IBUS_SERIALIZABLE_CLASS -+IBUS_IS_SERIALIZABLE_CLASS -+IBUS_SERIALIZABLE_GET_CLASS -+
-+ -+
-+ibuslookuptable -+IBusLookupTable -+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 -+ -+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 -+
-+ -+
-+ibustext -+IBusText -+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 -+ -+IBUS_TEXT -+IBUS_IS_TEXT -+IBUS_TYPE_TEXT -+ibus_text_get_type -+IBUS_TEXT_CLASS -+IBUS_IS_TEXT_CLASS -+IBUS_TEXT_GET_CLASS -+
-+ -+
-+ibusconnection -+IBusIBusMessageFunc -+IBusIBusSignalFunc -+IBusMessageFunc -+IBusConnection -+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 -+ -+IBUS_CONNECTION -+IBUS_IS_CONNECTION -+IBUS_TYPE_CONNECTION -+ibus_connection_get_type -+IBUS_CONNECTION_CLASS -+IBUS_IS_CONNECTION_CLASS -+IBUS_CONNECTION_GET_CLASS -+
-+ -+
-+ibuscomponent -+IBusComponent -+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 -+ -+IBUS_COMPONENT -+IBUS_IS_COMPONENT -+IBUS_TYPE_COMPONENT -+ibus_component_get_type -+IBUS_COMPONENT_CLASS -+IBUS_IS_COMPONENT_CLASS -+IBUS_COMPONENT_GET_CLASS -+
-+ -+
-+ibusobservedpath -+IBusObservedPath -+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 -+ -+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 -+
-+ -+
-+ibusserver -+IBusNewConnectionFunc -+IBusServer -+IBusServer -+ibus_server_new -+ibus_server_listen -+ibus_server_disconnect -+ibus_server_get_address -+ibus_server_get_id -+ibus_server_is_connected -+ -+IBUS_SERVER -+IBUS_IS_SERVER -+IBUS_TYPE_SERVER -+ibus_server_get_type -+IBUS_SERVER_CLASS -+IBUS_IS_SERVER_CLASS -+IBUS_SERVER_GET_CLASS -+
-+ -+
-+ibusengine -+IBusEngine -+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 -+ -+IBUS_ENGINE -+IBUS_IS_ENGINE -+IBUS_TYPE_ENGINE -+ibus_engine_get_type -+IBUS_ENGINE_CLASS -+IBUS_IS_ENGINE_CLASS -+IBUS_ENGINE_GET_CLASS -+
-+ -+
-+ibusconfigservice -+IBusConfigService -+IBusConfigService -+ibus_config_service_new -+ibus_config_service_value_changed -+ -+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 -+
-+ -+
-+ibusinputcontext -+IBusInputContext -+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 -+ -+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 -+
-+ -+
-+ibuspendingcall -+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 -+
-+ -+
-+ibusxml -+XMLNode -+ibus_xml_parse_file -+ibus_xml_parse_buffer -+ibus_xml_free -+ibus_xml_output -+
-+ -+
-+ibustypes -+IBusModifierType -+IBusCapabilite -+IBusRectangle -+IBusFreeFunc -+
-+ -+
-+ibusmessage -+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 -+
-+ -+
-+stamp-ibusenumtypes -+
-+ -+
-+ibuserror -+IBusError -+ibus_error_new -+ibus_error_new_from_text -+ibus_error_new_from_printf -+ibus_error_new_from_message -+ibus_error_free -+
-+ -+
-+ibusenumtypes -+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 -+
-+ -+
-+ibusshare -+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 -+
-+ -+
-+ibusconfigprivate -+
-+ -+
-+stamp-ibusmarshalers -+
-+ -+
-+keyname-table -+gdk_key -+
-+ -+
-+ibusmarshalers -+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 -+
-+ -+
-+ibus -+
-+ -+
-+ibuskeysyms -+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 -+
-+ -+
-+ibusdebug -+ibus_warning -+
-+ -+
-+ibusinternal -+I_ -+dbus_server_setup -+dbus_connection_setup -+
-+ -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 - @VERSION@-1 -+* @DATE_DISPLAY@ Huang Peng - @VERSION@-1 -+- Current version. -+ -+* Thu Aug 07 2008 Huang Peng - 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 \n" - "Language-Team: French \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 "Keyboard Shortcuts" - msgstr "Raccourcis claviers" - - #: 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 "Font and Style" --msgstr "" -+msgstr "Police et Style" - - #: 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 "Startup" --msgstr "Interface Utilisateur" -+msgstr "Démarrage" - - #: 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 \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 \n" - "Language-Team: Japanese \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 " -+msgstr "" -+"UTUMI Hirosi \n" -+"IWAI, Masaharu " - - #: 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 "Keyboard Shortcuts" - msgstr "キーボードショートカット" - - #: 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 "Font and Style" --msgstr "" -+msgstr "フォントとスタイル" - - #: 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 "" -+"IBus\n" -+"インテリジェントなインプットバス\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 "Startup" --msgstr "" -+msgstr "スタートアップ" - - #: 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 \n" - "Language-Team: Punjabi/Panjabi \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 "Keyboard Shortcuts" - msgstr "ਕੀਬੋਰਡ ਸ਼ਾਰਟਕੱਟ" -@@ -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 \n" - "Language-Team: Huang Peng \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 "Keyboard Shortcuts" -@@ -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 @@ - 12 - 6 - -- -- True -- 0 -- Enable or disable: -- -- -- GTK_FILL -- GTK_FILL -- -- -- -- -- True -- 0 -- Next input method: -- -- -- 1 -- 2 -- GTK_FILL -- GTK_FILL -- -- -- -- -- True -- False -- 0 -- previous input method: -- -- -- 2 -- 3 -- GTK_FILL -- GTK_FILL -- -- -- -- -+ - True - 6 - -- -+ - True -+ False - True - False - - - -- -+ - True -+ False - True - ... - True -@@ -110,6 +74,8 @@ - - 1 - 2 -+ 2 -+ 3 - - - -@@ -145,21 +111,19 @@ - - - -- -+ - True - 6 - -- -+ - True -- False - True - False - - - -- -+ - True -- False - True - ... - True -@@ -174,8 +138,44 @@ - - 1 - 2 -+ -+ -+ -+ -+ True -+ False -+ 0 -+ previous input method: -+ -+ - 2 - 3 -+ GTK_FILL -+ GTK_FILL -+ -+ -+ -+ -+ True -+ 0 -+ Next input method: -+ -+ -+ 1 -+ 2 -+ GTK_FILL -+ GTK_FILL -+ -+ -+ -+ -+ True -+ 0 -+ Enable or disable: -+ -+ -+ GTK_FILL -+ GTK_FILL - - - -@@ -257,7 +257,7 @@ Vertical - - True - Never --Dynamically -+When active - Always - - -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: DBusConnection -+ * -+ * 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, "%u", desc->rank); -+ g_string_append_printf (output, "%u\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. -+ * This function is called by ibus_component_new_from_file(), -+ * so developers normally do not need to call it directly. -+ * -+ */ - 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 - #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. -+ * -+ * -+ * -+ * PROP_TYPE_TOGGLE -+ * Emphasized if PROP_STATE_CHECKED, normal otherwise. -+ * -+ * -+ * PROP_TYPE_RADIO -+ * Option checked if PROP_STATE_CHECKED, unchecked otherwise. -+ * -+ * -+ * 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 - 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 - 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