diff --git a/ibus-HEAD.patch b/ibus-HEAD.patch
index 8b13789..d1acc7f 100644
--- a/ibus-HEAD.patch
+++ b/ibus-HEAD.patch
@@ -1 +1,4922 @@
-
+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..4483696 100644
+--- a/client/gtk2/ibusimcontext.c
++++ b/client/gtk2/ibusimcontext.c
+@@ -569,7 +569,6 @@ _ibus_context_commit_text_cb (IBusInputContext *ibus_context,
+ static void
+ _ibus_context_forward_key_event_cb (IBusInputContext *ibus_context,
+ guint keyval,
+- gboolean is_press,
+ guint state,
+ IBusIMContext *context)
+ {
+@@ -579,7 +578,7 @@ _ibus_context_forward_key_event_cb (IBusInputContext *ibus_context,
+ 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);
+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
++
++
++
++
++
++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
++
++
++
++
++
++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
++
++
++
++
++
++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 6eb6dbc..6850ec6 100644
--- a/ibus.spec
+++ b/ibus.spec
@@ -8,7 +8,7 @@
Name: ibus
Version: 1.1.0.20090311
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: Intelligent Input Bus for Linux OS
License: LGPLv2+
Group: System Environment/Libraries
@@ -20,6 +20,7 @@ Patch0: ibus-HEAD.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+BuildRequires: cvs
BuildRequires: gettext-devel
BuildRequires: libtool
BuildRequires: python
@@ -103,7 +104,9 @@ docs for ibus.
%prep
%setup -q
-# %patch0 -p1
+rm -rf docs/reference/ibus/ibus-sections.txt
+%patch0 -p1
+./autogen.sh --help
%build
%configure --disable-static \
@@ -214,6 +217,11 @@ fi
%{_libdir}/pkgconfig/*
%changelog
+* Sat Mar 28 2009 Huang Peng - 1.1.0.20090311-2
+- Recreate the ibus-HEAD.patch from upstream git source tree.
+- Fixe bug 490009 - Deleting Next Engine shortcuts doesn't work
+- Fixe bug 490381 - Change "Next/Previous engine" labels
+
* Wed Mar 11 2009 Huang Peng - 1.1.0.20090311-1
- Update to ibus-1.1.0.20090311.
- Update setup ui follow GNOME Human Interface Guidelines 2.2 (#489497).