<?xml version="1.0"?>
<!-- This file was automatically generated from C sources - DO NOT EDIT!
To affect the contents of this file, edit the original C definitions,
and/or use gtk-doc annotations.  -->
<repository version="1.2"
            xmlns="http://www.gtk.org/introspection/core/1.0"
            xmlns:c="http://www.gtk.org/introspection/c/1.0"
            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
  <include name="GLib" version="2.0"/>
  <include name="GObject" version="2.0"/>
  <include name="Gio" version="2.0"/>
  <namespace name="Fcitx"
             version="1.0"
             shared-library="libfcitx-gclient.so.1"
             c:identifier-prefixes="Fcitx"
             c:symbol-prefixes="fcitx">
    <class name="Client"
           c:symbol-prefix="client"
           c:type="FcitxClient"
           parent="GObject.Object"
           glib:type-name="FcitxClient"
           glib:get-type="fcitx_client_get_type"
           glib:type-struct="ClientClass">
      <doc xml:space="preserve">A #FcitxClient allow to create a input context via DBus</doc>
      <constructor name="new" c:identifier="fcitx_client_new">
        <doc xml:space="preserve">New a #FcitxClient</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">A newly allocated #FcitxClient</doc>
          <type name="Client" c:type="FcitxClient*"/>
        </return-value>
      </constructor>
      <constructor name="new_with_connection"
                   c:identifier="fcitx_client_new_with_connection">
        <doc xml:space="preserve">New a #FcitxClient</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">A newly allocated #FcitxClient</doc>
          <type name="Client" c:type="FcitxClient*"/>
        </return-value>
        <parameters>
          <parameter name="connection" transfer-ownership="none">
            <doc xml:space="preserve">the #FcitxConnection to be used with this client</doc>
            <type name="Connection" c:type="FcitxConnection*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="focus_in" c:identifier="fcitx_client_focus_in">
        <doc xml:space="preserve">tell fcitx current client has focus</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">A #FcitxClient</doc>
            <type name="Client" c:type="FcitxClient*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="focus_out" c:identifier="fcitx_client_focus_out">
        <doc xml:space="preserve">tell fcitx current client has lost focus</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">A #FcitxClient</doc>
            <type name="Client" c:type="FcitxClient*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_valid" c:identifier="fcitx_client_is_valid">
        <doc xml:space="preserve">Check #FcitxClient is valid to communicate with Fcitx</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#FcitxClient is valid or not</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">A #FcitxClient</doc>
            <type name="Client" c:type="FcitxClient*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="process_key" c:identifier="fcitx_client_process_key">
        <doc xml:space="preserve">use this function with #fcitx_client_process_key_finish</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">A #FcitxClient</doc>
            <type name="Client" c:type="FcitxClient*"/>
          </instance-parameter>
          <parameter name="keyval" transfer-ownership="none">
            <doc xml:space="preserve">key value</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="keycode" transfer-ownership="none">
            <doc xml:space="preserve">hardware key code</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="state" transfer-ownership="none">
            <doc xml:space="preserve">key state</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve">event type</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="t" transfer-ownership="none">
            <doc xml:space="preserve">timestamp</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="timeout_msec" transfer-ownership="none">
            <doc xml:space="preserve">timeout in millisecond</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="8">
            <doc xml:space="preserve">callback</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">user data</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="process_key_finish"
              c:identifier="fcitx_client_process_key_finish">
        <doc xml:space="preserve">use this function with #fcitx_client_process_key_async</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">process key result</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">A #FcitxClient</doc>
            <type name="Client" c:type="FcitxClient*"/>
          </instance-parameter>
          <parameter name="res" transfer-ownership="none">
            <doc xml:space="preserve">result</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="process_key_sync"
              c:identifier="fcitx_client_process_key_sync">
        <doc xml:space="preserve">send a key event to fcitx synchronizely</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the key is processed or not</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">A #FcitxClient</doc>
            <type name="Client" c:type="FcitxClient*"/>
          </instance-parameter>
          <parameter name="keyval" transfer-ownership="none">
            <doc xml:space="preserve">key value</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="keycode" transfer-ownership="none">
            <doc xml:space="preserve">hardware key code</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="state" transfer-ownership="none">
            <doc xml:space="preserve">key state</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve">event type</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="t" transfer-ownership="none">
            <doc xml:space="preserve">timestamp</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </method>
      <method name="reset" c:identifier="fcitx_client_reset">
        <doc xml:space="preserve">tell fcitx current client is reset from client side</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">A #FcitxClient</doc>
            <type name="Client" c:type="FcitxClient*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_capacity" c:identifier="fcitx_client_set_capacity">
        <doc xml:space="preserve">set client capacity of Fcitx</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">A #FcitxClient</doc>
            <type name="Client" c:type="FcitxClient*"/>
          </instance-parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve">capacity</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_cursor_rect"
              c:identifier="fcitx_client_set_cursor_rect">
        <doc xml:space="preserve">tell fcitx current client's cursor geometry info</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">A #FcitxClient</doc>
            <type name="Client" c:type="FcitxClient*"/>
          </instance-parameter>
          <parameter name="x" transfer-ownership="none">
            <doc xml:space="preserve">x of cursor</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:space="preserve">y of cursor</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="w" transfer-ownership="none">
            <doc xml:space="preserve">width of cursor</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="h" transfer-ownership="none">
            <doc xml:space="preserve">height of cursor</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_display" c:identifier="fcitx_client_set_display">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Client" c:type="FcitxClient*"/>
          </instance-parameter>
          <parameter name="display" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_surrounding_text"
              c:identifier="fcitx_client_set_surrounding_text">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">A #FcitxClient</doc>
            <type name="Client" c:type="FcitxClient*"/>
          </instance-parameter>
          <parameter name="text"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">surroundng text</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="cursor" transfer-ownership="none">
            <doc xml:space="preserve">cursor position coresponding to text</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="anchor" transfer-ownership="none">
            <doc xml:space="preserve">anchor position coresponding to text</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <property name="connection"
                readable="0"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="Connection"/>
      </property>
      <field name="parent_instance">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv">
        <type name="ClientPrivate" c:type="FcitxClientPrivate*"/>
      </field>
      <glib:signal name="close-im" when="last">
        <doc xml:space="preserve">Emit when input method is closed</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="commit-string" when="last">
        <doc xml:space="preserve">Emit when input method commit one string</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="string" transfer-ownership="none">
            <doc xml:space="preserve">string to be committed</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="connected" when="last">
        <doc xml:space="preserve">Emit when connected to fcitx and created ic</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="delete-surrounding-text" when="last">
        <doc xml:space="preserve">Emit when input method need to delete surrounding text</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="cursor" transfer-ownership="none">
            <doc xml:space="preserve">deletion start</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="len" transfer-ownership="none">
            <doc xml:space="preserve">deletion length</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="disconnected" when="last">
        <doc xml:space="preserve">Emit when disconnected from fcitx</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="enable-im" when="last">
        <doc xml:space="preserve">Emit when input method is enabled</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="forward-key" when="last">
        <doc xml:space="preserve">Emit when input method ask for forward a key</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="keyval" transfer-ownership="none">
            <doc xml:space="preserve">key value</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="state" transfer-ownership="none">
            <doc xml:space="preserve">key state</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve">event type</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="update-client-side-ui" when="last">
        <doc xml:space="preserve">Emit when input method need to update client side ui</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="auxup" transfer-ownership="none">
            <doc xml:space="preserve">Aux up string</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="auxdown" transfer-ownership="none">
            <doc xml:space="preserve">Aux down string</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="preedit" transfer-ownership="none">
            <doc xml:space="preserve">preedit string</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="candidateword" transfer-ownership="none">
            <doc xml:space="preserve">candidateword in one line</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="imname" transfer-ownership="none">
            <doc xml:space="preserve">input method name</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="cursor_pos" transfer-ownership="none">
            <doc xml:space="preserve">cursor position</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="update-formatted-preedit" when="last">
        <doc xml:space="preserve">Emit when input method need to delete surrounding text</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="preedit" transfer-ownership="none">
            <doc xml:space="preserve">An
#FcitxPreeditItem List</doc>
            <array name="GLib.PtrArray">
              <type name="PreeditItem"/>
            </array>
          </parameter>
          <parameter name="cursor" transfer-ownership="none">
            <doc xml:space="preserve">cursor position by utf8 byte</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="ClientClass"
            c:type="FcitxClientClass"
            glib:is-gtype-struct-for="Client">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <record name="ClientPrivate" c:type="FcitxClientPrivate" disguised="1">
    </record>
    <class name="Connection"
           c:symbol-prefix="connection"
           c:type="FcitxConnection"
           parent="GObject.Object"
           glib:type-name="FcitxConnection"
           glib:get-type="fcitx_connection_get_type"
           glib:type-struct="ConnectionClass">
      <doc xml:space="preserve">A FcitxConnection allow to create a input context via DBus</doc>
      <constructor name="new" c:identifier="fcitx_connection_new">
        <doc xml:space="preserve">New a #FcitxConnection</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">A newly allocated #FcitxConnection</doc>
          <type name="Connection" c:type="FcitxConnection*"/>
        </return-value>
      </constructor>
      <method name="get_g_dbus_connection"
              c:identifier="fcitx_connection_get_g_dbus_connection">
        <doc xml:space="preserve">Return the current #GDBusConnection</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#GDBusConnection for current connection</doc>
          <type name="Gio.DBusConnection" c:type="GDBusConnection*"/>
        </return-value>
        <parameters>
          <instance-parameter name="connection" transfer-ownership="none">
            <doc xml:space="preserve">A #FcitxConnection</doc>
            <type name="Connection" c:type="FcitxConnection*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_valid" c:identifier="fcitx_connection_is_valid">
        <doc xml:space="preserve">Check #FcitxConnection is valid to communicate with Fcitx</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#FcitxConnection is valid or not</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="connection" transfer-ownership="none">
            <doc xml:space="preserve">A #FcitxConnection</doc>
            <type name="Connection" c:type="FcitxConnection*"/>
          </instance-parameter>
        </parameters>
      </method>
      <field name="parent_instance">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv">
        <type name="ConnectionPrivate" c:type="FcitxConnectionPrivate*"/>
      </field>
      <glib:signal name="connected" when="last">
        <doc xml:space="preserve">Emit when connected to fcitx and created ic</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="disconnected" when="last">
        <doc xml:space="preserve">Emit when disconnected from fcitx</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
    </class>
    <record name="ConnectionClass"
            c:type="FcitxConnectionClass"
            glib:is-gtype-struct-for="Connection">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <record name="ConnectionPrivate"
            c:type="FcitxConnectionPrivate"
            disguised="1">
    </record>
    <record name="IMItem"
            c:type="FcitxIMItem"
            glib:type-name="FcitxIMItem"
            glib:get-type="fcitx_im_item_get_type"
            c:symbol-prefix="im_item">
      <doc xml:space="preserve">A #FcitxIMItem contains some metadata for an input method in fcitx</doc>
      <field name="name" writable="1">
        <doc xml:space="preserve">name of im</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="unique_name" writable="1">
        <doc xml:space="preserve">unique_name of im</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="langcode" writable="1">
        <doc xml:space="preserve">language code</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="enable" writable="1">
        <doc xml:space="preserve">enabled or not</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <constructor name="new" c:identifier="fcitx_im_item_new">
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the new #FcitxIMItem</doc>
          <type name="IMItem" c:type="FcitxIMItem*"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">name of im</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="unique_name" transfer-ownership="none">
            <doc xml:space="preserve">unique_name of im</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="langcode" transfer-ownership="none">
            <doc xml:space="preserve">language code</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="enable" transfer-ownership="none">
            <doc xml:space="preserve">enabled or not</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="free" c:identifier="fcitx_im_item_free" introspectable="0">
        <doc xml:space="preserve">free an im_item</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve">A #FcitxIMItem</doc>
            <type name="IMItem" c:type="FcitxIMItem*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <class name="InputMethod"
           c:symbol-prefix="input_method"
           c:type="FcitxInputMethod"
           parent="Gio.DBusProxy"
           glib:type-name="FcitxInputMethod"
           glib:get-type="fcitx_input_method_get_type"
           glib:type-struct="InputMethodClass">
      <doc xml:space="preserve">A #FcitxInputMethod allow you to control fcitx via DBus.</doc>
      <implements name="Gio.AsyncInitable"/>
      <implements name="Gio.DBusInterface"/>
      <implements name="Gio.Initable"/>
      <constructor name="new" c:identifier="fcitx_input_method_new" throws="1">
        <doc xml:space="preserve">New a #fcitxInputMethod.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">A newly allocated #FcitxInputMethod.</doc>
          <type name="InputMethod" c:type="FcitxInputMethod*"/>
        </return-value>
        <parameters>
          <parameter name="bus_type" transfer-ownership="none">
            <doc xml:space="preserve">#GBusType</doc>
            <type name="Gio.BusType" c:type="GBusType"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve">#GDBusProxyFlags</doc>
            <type name="Gio.DBusProxyFlags" c:type="GDBusProxyFlags"/>
          </parameter>
          <parameter name="display_number" transfer-ownership="none">
            <doc xml:space="preserve">display_number</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">A #GCancellable or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="activate" c:identifier="fcitx_input_method_activate">
        <doc xml:space="preserve">Activate fcitx</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="im" transfer-ownership="none">
            <doc xml:space="preserve">A #FcitxInputMethod</doc>
            <type name="InputMethod" c:type="FcitxInputMethod*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="configure" c:identifier="fcitx_input_method_configure">
        <doc xml:space="preserve">Send configure command to fcitx</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="im" transfer-ownership="none">
            <doc xml:space="preserve">A #FcitxInputMethod</doc>
            <type name="InputMethod" c:type="FcitxInputMethod*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="configure_addon"
              c:identifier="fcitx_input_method_configure_addon">
        <doc xml:space="preserve">Send configure addon command to fcitx</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="im" transfer-ownership="none">
            <doc xml:space="preserve">A #FcitxInputMethod</doc>
            <type name="InputMethod" c:type="FcitxInputMethod*"/>
          </instance-parameter>
          <parameter name="addon" transfer-ownership="none">
            <doc xml:space="preserve">addon name</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="configure_im"
              c:identifier="fcitx_input_method_configure_im">
        <doc xml:space="preserve">Send configure im command to fcitx</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="im" transfer-ownership="none">
            <doc xml:space="preserve">A #FcitxInputMethod</doc>
            <type name="InputMethod" c:type="FcitxInputMethod*"/>
          </instance-parameter>
          <parameter name="imname" transfer-ownership="none">
            <doc xml:space="preserve">im name</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="exit" c:identifier="fcitx_input_method_exit">
        <doc xml:space="preserve">Send exit command to fcitx</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="im" transfer-ownership="none">
            <doc xml:space="preserve">A #FcitxInputMethod</doc>
            <type name="InputMethod" c:type="FcitxInputMethod*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_current_im"
              c:identifier="fcitx_input_method_get_current_im">
        <doc xml:space="preserve">Get im name</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">get im name</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="im" transfer-ownership="none">
            <doc xml:space="preserve">A #FcitxInputMethod</doc>
            <type name="InputMethod" c:type="FcitxInputMethod*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_current_state"
              c:identifier="fcitx_input_method_get_current_state">
        <doc xml:space="preserve">Get current state</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">current state, -1 for error</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="im" transfer-ownership="none">
            <doc xml:space="preserve">A #FcitxInputMethod</doc>
            <type name="InputMethod" c:type="FcitxInputMethod*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_current_ui"
              c:identifier="fcitx_input_method_get_current_ui">
        <doc xml:space="preserve">Get im name</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">get ui name</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="im" transfer-ownership="none">
            <doc xml:space="preserve">A #FcitxInputMethod</doc>
            <type name="InputMethod" c:type="FcitxInputMethod*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_im_addon"
              c:identifier="fcitx_input_method_get_im_addon">
        <doc xml:space="preserve">Get addon name by im</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">get addon name</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="im" transfer-ownership="none">
            <doc xml:space="preserve">A #FcitxInputMethod</doc>
            <type name="InputMethod" c:type="FcitxInputMethod*"/>
          </instance-parameter>
          <parameter name="imname" transfer-ownership="none">
            <doc xml:space="preserve">imname</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_imlist"
              c:identifier="fcitx_input_method_get_imlist"
              shadowed-by="get_imlist_nofree"
              introspectable="0">
        <return-value>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="gpointer" c:type="gpointer"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="im" transfer-ownership="none">
            <type name="InputMethod" c:type="FcitxInputMethod*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_imlist_nofree"
              c:identifier="fcitx_input_method_get_imlist_nofree"
              shadows="get_imlist">
        <doc xml:space="preserve">fcitx_input_method_get_imlist)
Get Fcitx all im list</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">A #FcitxIMItem List</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="IMItem"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="im" transfer-ownership="none">
            <doc xml:space="preserve">A #FcitxInputMethod</doc>
            <type name="InputMethod" c:type="FcitxInputMethod*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="inactivate" c:identifier="fcitx_input_method_inactivate">
        <doc xml:space="preserve">Inactivate fcitx</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="im" transfer-ownership="none">
            <doc xml:space="preserve">A #FcitxInputMethod</doc>
            <type name="InputMethod" c:type="FcitxInputMethod*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="reload_config"
              c:identifier="fcitx_input_method_reload_config">
        <doc xml:space="preserve">Send reload config command to fcitx</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="im" transfer-ownership="none">
            <doc xml:space="preserve">A #FcitxInputMethod</doc>
            <type name="InputMethod" c:type="FcitxInputMethod*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="restart" c:identifier="fcitx_input_method_restart">
        <doc xml:space="preserve">Send restart command to fcitx</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="im" transfer-ownership="none">
            <doc xml:space="preserve">A #FcitxInputMethod</doc>
            <type name="InputMethod" c:type="FcitxInputMethod*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_current_im"
              c:identifier="fcitx_input_method_set_current_im">
        <doc xml:space="preserve">Set im name</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="im" transfer-ownership="none">
            <doc xml:space="preserve">A #FcitxInputMethod</doc>
            <type name="InputMethod" c:type="FcitxInputMethod*"/>
          </instance-parameter>
          <parameter name="imname" transfer-ownership="none">
            <doc xml:space="preserve">set im name</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_imlist" c:identifier="fcitx_input_method_set_imlist">
        <doc xml:space="preserve">Set Fcitx all im list</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="im" transfer-ownership="none">
            <doc xml:space="preserve">A #FcitxInputMethod</doc>
            <type name="InputMethod" c:type="FcitxInputMethod*"/>
          </instance-parameter>
          <parameter name="array" transfer-ownership="none">
            <doc xml:space="preserve">A #FcitxIMItem List</doc>
            <array name="GLib.PtrArray" c:type="GPtrArray*">
              <type name="IMItem"/>
            </array>
          </parameter>
        </parameters>
      </method>
      <method name="toggle" c:identifier="fcitx_input_method_toggle">
        <doc xml:space="preserve">toggle fcitx state</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="im" transfer-ownership="none">
            <doc xml:space="preserve">A #FcitxInputMethod</doc>
            <type name="InputMethod" c:type="FcitxInputMethod*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="current-im"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <doc xml:space="preserve">The current IM.</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <field name="parent">
        <type name="Gio.DBusProxy" c:type="GDBusProxy"/>
      </field>
      <glib:signal name="imlist-changed" when="last">
        <doc xml:space="preserve">Emit when input method list changed</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
    </class>
    <record name="InputMethodClass"
            c:type="FcitxInputMethodClass"
            glib:is-gtype-struct-for="InputMethod">
      <field name="parent">
        <type name="Gio.DBusProxyClass" c:type="GDBusProxyClass"/>
      </field>
    </record>
    <class name="Kbd"
           c:symbol-prefix="kbd"
           c:type="FcitxKbd"
           parent="Gio.DBusProxy"
           glib:type-name="FcitxKbd"
           glib:get-type="fcitx_kbd_get_type"
           glib:type-struct="KbdClass">
      <doc xml:space="preserve">A #FcitxKbd allow you to control fcitx via DBus.</doc>
      <implements name="Gio.AsyncInitable"/>
      <implements name="Gio.DBusInterface"/>
      <implements name="Gio.Initable"/>
      <constructor name="new" c:identifier="fcitx_kbd_new" throws="1">
        <doc xml:space="preserve">New a #fcitxKbd.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">A newly allocated #FcitxKbd.</doc>
          <type name="Kbd" c:type="FcitxKbd*"/>
        </return-value>
        <parameters>
          <parameter name="bus_type" transfer-ownership="none">
            <doc xml:space="preserve">#GBusType</doc>
            <type name="Gio.BusType" c:type="GBusType"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve">#GDBusProxyFlags</doc>
            <type name="Gio.DBusProxyFlags" c:type="GDBusProxyFlags"/>
          </parameter>
          <parameter name="display_number" transfer-ownership="none">
            <doc xml:space="preserve">display_number</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">A #GCancellable or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="get_layout_for_im"
              c:identifier="fcitx_kbd_get_layout_for_im">
        <doc xml:space="preserve">Get a layout binding with input method</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="kbd" transfer-ownership="none">
            <doc xml:space="preserve">A #FcitxKbd</doc>
            <type name="Kbd" c:type="FcitxKbd*"/>
          </instance-parameter>
          <parameter name="imname" transfer-ownership="none">
            <doc xml:space="preserve">input method name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="layout"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve">return'd layout</doc>
            <type name="utf8" c:type="gchar**"/>
          </parameter>
          <parameter name="variant"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve">return'd variant</doc>
            <type name="utf8" c:type="gchar**"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_layouts"
              c:identifier="fcitx_kbd_get_layouts"
              shadowed-by="get_layouts_nofree"
              introspectable="0">
        <return-value>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="gpointer" c:type="gpointer"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="kbd" transfer-ownership="none">
            <type name="Kbd" c:type="FcitxKbd*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_layouts_nofree"
              c:identifier="fcitx_kbd_get_layouts_nofree"
              shadows="get_layouts">
        <doc xml:space="preserve">Get Fcitx all im list</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">A #FcitxLayoutItem
List</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="LayoutItem"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="kbd" transfer-ownership="none">
            <doc xml:space="preserve">A #FcitxKbd</doc>
            <type name="Kbd" c:type="FcitxKbd*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_default_layout"
              c:identifier="fcitx_kbd_set_default_layout">
        <doc xml:space="preserve">Set a layout binding with the state when there is no input method</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="kbd" transfer-ownership="none">
            <doc xml:space="preserve">A #FcitxKbd</doc>
            <type name="Kbd" c:type="FcitxKbd*"/>
          </instance-parameter>
          <parameter name="layout" transfer-ownership="none">
            <doc xml:space="preserve">layout</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="variant" transfer-ownership="none">
            <doc xml:space="preserve">variant</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_layout_for_im"
              c:identifier="fcitx_kbd_set_layout_for_im">
        <doc xml:space="preserve">Set a layout binding with input method</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="kbd" transfer-ownership="none">
            <doc xml:space="preserve">A #FcitxKbd</doc>
            <type name="Kbd" c:type="FcitxKbd*"/>
          </instance-parameter>
          <parameter name="imname" transfer-ownership="none">
            <doc xml:space="preserve">input method name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="layout" transfer-ownership="none">
            <doc xml:space="preserve">layout</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="variant" transfer-ownership="none">
            <doc xml:space="preserve">variant</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent">
        <type name="Gio.DBusProxy" c:type="GDBusProxy"/>
      </field>
    </class>
    <record name="KbdClass"
            c:type="FcitxKbdClass"
            glib:is-gtype-struct-for="Kbd">
      <field name="parent">
        <type name="Gio.DBusProxyClass" c:type="GDBusProxyClass"/>
      </field>
    </record>
    <record name="LayoutItem"
            c:type="FcitxLayoutItem"
            glib:type-name="FcitxLayoutItem"
            glib:get-type="fcitx_layout_item_get_type"
            c:symbol-prefix="layout_item">
      <field name="layout" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="variant" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="name" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="langcode" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
    </record>
    <record name="PreeditItem" c:type="FcitxPreeditItem">
      <field name="string" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="type" writable="1">
        <type name="gint32" c:type="gint32"/>
      </field>
    </record>
  </namespace>
</repository>
