<?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.0"
             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:whitespace="preserve">A FcitxClient allow to create a input context via DBus</doc>
      <constructor name="new" c:identifier="fcitx_client_new">
        <doc xml:whitespace="preserve">New a FcitxClient</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">A newly allocated FcitxClient</doc>
          <type name="Client" c:type="FcitxClient*"/>
        </return-value>
      </constructor>
      <method name="close_ic" c:identifier="fcitx_client_close_ic">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </method>
      <method name="enable_ic" c:identifier="fcitx_client_enable_ic">
        <doc xml:whitespace="preserve">@client A FcitxClient

tell fcitx activate current ic</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </method>
      <method name="focus_in" c:identifier="fcitx_client_focus_in">
        <doc xml:whitespace="preserve">@client A FcitxClient

tell fcitx current client has focus</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </method>
      <method name="focus_out" c:identifier="fcitx_client_focus_out">
        <doc xml:whitespace="preserve">@client A FcitxClient

tell fcitx current client has lost focus</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </method>
      <method name="is_valid" c:identifier="fcitx_client_is_valid">
        <doc xml:whitespace="preserve">Check FcitxClient is valid to communicate with Fcitx</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">FcitxClient is valid or not</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
      </method>
      <method name="process_key" c:identifier="fcitx_client_process_key">
        <doc xml:whitespace="preserve">@client A FcitxClient
@cb callback
@user_data user data
@keyval key value
@keycode hardware key code
@state key state
@type event type
@t timestamp

@deprecated

send a key event to fcitx asynchronizely, you need to use g_dbus_proxy_call_finish with this function</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="cb"
                     transfer-ownership="none"
                     allow-none="1"
                     scope="async"
                     closure="1">
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="keyval" transfer-ownership="none">
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="keycode" transfer-ownership="none">
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="state" transfer-ownership="none">
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="type" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="t" transfer-ownership="none">
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </method>
      <method name="process_key_async"
              c:identifier="fcitx_client_process_key_async">
        <doc xml:whitespace="preserve">@client A FcitxClient
@keyval key value
@keycode hardware key code
@state key state
@type event type
@t timestamp
@cancellable cancellable
@cb callback
@user_data user data

use this function with fcitx_client_process_key_finish
@see fcitx_client_process_key_finish</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="keyval" transfer-ownership="none">
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="keycode" transfer-ownership="none">
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="state" transfer-ownership="none">
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="type" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="t" transfer-ownership="none">
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="timeout_msec" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     allow-none="1"
                     scope="async"
                     closure="8">
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="process_key_finish"
              c:identifier="fcitx_client_process_key_finish">
        <doc xml:whitespace="preserve">@client A FcitxClient
@res result

@returns process key result

use this function with fcitx_client_process_key_async
@see fcitx_client_process_key_async</doc>
        <return-value transfer-ownership="none">
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <parameter name="res" transfer-ownership="none">
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="process_key_sync"
              c:identifier="fcitx_client_process_key_sync">
        <doc xml:whitespace="preserve">send a key event to fcitx synchronizely</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">the key is processed or not</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <parameter name="keyval" transfer-ownership="none">
            <doc xml:whitespace="preserve">key value</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="keycode" transfer-ownership="none">
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="state" transfer-ownership="none">
            <doc xml:whitespace="preserve">key state</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="type" transfer-ownership="none">
            <doc xml:whitespace="preserve">event type</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="ts" transfer-ownership="none">
            <doc xml:whitespace="preserve">timestamp</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </method>
      <method name="reset" c:identifier="fcitx_client_reset">
        <doc xml:whitespace="preserve">@client A FcitxClient

tell fcitx current client is reset from client side</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </method>
      <method name="set_capacity" c:identifier="fcitx_client_set_capacity">
        <doc xml:whitespace="preserve">@client A FcitxClient

set client capacity of Fcitx</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="flags" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_cursor_rect"
              c:identifier="fcitx_client_set_cursor_rect">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="x" transfer-ownership="none">
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="w" transfer-ownership="none">
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="h" transfer-ownership="none">
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_cusor_rect" c:identifier="fcitx_client_set_cusor_rect">
        <doc xml:whitespace="preserve">@client A FcitxClient
@x x of cursor
@y y of cursor
@w width of cursor
@h height of cursor

tell fcitx current client's cursor geometry info</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="x" transfer-ownership="none">
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="w" transfer-ownership="none">
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="h" transfer-ownership="none">
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_surrounding_text"
              c:identifier="fcitx_client_set_surrounding_text">
        <doc xml:whitespace="preserve">@client A FcitxClient
@text surroundng text
@cursor cursor position coresponding to text
@anchor anchor position coresponding to text</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="text" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="cursor" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="anchor" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <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">
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
      </glib:signal>
      <glib:signal name="commit-string" when="last">
        <doc xml:whitespace="preserve">Emit when input method commit one string</doc>
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
        <parameters>
          <parameter name="string" transfer-ownership="none">
            <doc xml:whitespace="preserve">string to be commited</doc>
            <type name="utf8"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="connected" when="last">
        <doc xml:whitespace="preserve">Emit when connected to fcitx and created ic</doc>
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
      </glib:signal>
      <glib:signal name="delete-surrounding-text" when="last">
        <doc xml:whitespace="preserve">Emit when input method need to delete surrounding text</doc>
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
        <parameters>
          <parameter name="cursor" transfer-ownership="none">
            <doc xml:whitespace="preserve">deletion start</doc>
            <type name="gint"/>
          </parameter>
          <parameter name="len" transfer-ownership="none">
            <doc xml:whitespace="preserve">deletion length</doc>
            <type name="guint"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="disconnected" when="last">
        <doc xml:whitespace="preserve">Emit when disconnected from fcitx</doc>
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
      </glib:signal>
      <glib:signal name="enable-im" when="last">
        <doc xml:whitespace="preserve">Emit when input method ask for forward a key</doc>
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
      </glib:signal>
      <glib:signal name="forward-key" when="last">
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="guint"/>
          </parameter>
          <parameter name="p0" transfer-ownership="none">
            <type name="gint"/>
          </parameter>
          <parameter name="p1" transfer-ownership="none">
            <type name="gint"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="update-client-side-ui" when="last">
        <doc xml:whitespace="preserve">Emit when input method need to update client side ui</doc>
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
        <parameters>
          <parameter name="auxup" transfer-ownership="none">
            <doc xml:whitespace="preserve">Aux up string</doc>
            <type name="utf8"/>
          </parameter>
          <parameter name="auxdown" transfer-ownership="none">
            <doc xml:whitespace="preserve">Aux down string</doc>
            <type name="utf8"/>
          </parameter>
          <parameter name="preedit" transfer-ownership="none">
            <doc xml:whitespace="preserve">preedit string</doc>
            <type name="utf8"/>
          </parameter>
          <parameter name="candidateword" transfer-ownership="none">
            <doc xml:whitespace="preserve">candidateword in one line</doc>
            <type name="utf8"/>
          </parameter>
          <parameter name="imname" transfer-ownership="none">
            <doc xml:whitespace="preserve">input method name</doc>
            <type name="utf8"/>
          </parameter>
          <parameter name="cursor_pos" transfer-ownership="none">
            <doc xml:whitespace="preserve">cursor position</doc>
            <type name="gint"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="update-formatted-preedit" when="last">
        <doc xml:whitespace="preserve">Emit when input method need to delete surrounding text</doc>
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
        <parameters>
          <parameter name="preedit" transfer-ownership="none">
            <doc xml:whitespace="preserve">An FcitxPreeditItem List</doc>
            <array name="GLib.PtrArray">
              <type name="PreeditItem"/>
            </array>
          </parameter>
          <parameter name="cursor" transfer-ownership="none">
            <doc xml:whitespace="preserve">cursor postion by utf8 byte</doc>
            <type name="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>
    <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:whitespace="preserve">A FcitxIMItem contains some metadata for an input method in fcitx</doc>
      <field name="name" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="unique_name" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="langcode" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="enable" writable="1">
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <constructor name="new" c:identifier="fcitx_im_item_new">
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">the new #FcitxIMItem</doc>
          <type name="IMItem" c:type="FcitxIMItem*"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <doc xml:whitespace="preserve">name of im</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="unique_name" transfer-ownership="none">
            <doc xml:whitespace="preserve">unique_name of im</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="langcode" transfer-ownership="none">
            <doc xml:whitespace="preserve">language code</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="enable" transfer-ownership="none">
            <doc xml:whitespace="preserve">enabled or not</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="free" c:identifier="fcitx_im_item_free">
        <doc xml:whitespace="preserve">free an im_item</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </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:whitespace="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:whitespace="preserve">New a FcitxInputMethod.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">A newly allocated FcitxInputMethod.</doc>
          <type name="InputMethod" c:type="FcitxInputMethod*"/>
        </return-value>
        <parameters>
          <parameter name="bus_type" transfer-ownership="none">
            <doc xml:whitespace="preserve">#GBusType</doc>
            <type name="Gio.BusType" c:type="GBusType"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:whitespace="preserve">#GDBusProxyFlags</doc>
            <type name="Gio.DBusProxyFlags" c:type="GDBusProxyFlags"/>
          </parameter>
          <parameter name="display_number" transfer-ownership="none">
            <doc xml:whitespace="preserve">display_number</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:whitespace="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:whitespace="preserve">toggle fcitx state</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </method>
      <method name="configure" c:identifier="fcitx_input_method_configure">
        <doc xml:whitespace="preserve">Send configure command to fcitx</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </method>
      <method name="configure_addon"
              c:identifier="fcitx_input_method_configure_addon">
        <doc xml:whitespace="preserve">Send configure addon command to fcitx</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="addon" transfer-ownership="none">
            <doc xml:whitespace="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:whitespace="preserve">Send configure im command to fcitx</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="imname" transfer-ownership="none">
            <doc xml:whitespace="preserve">im name</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="exit" c:identifier="fcitx_input_method_exit">
        <doc xml:whitespace="preserve">Send exit command to fcitx</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </method>
      <method name="get_current_im"
              c:identifier="fcitx_input_method_get_current_im">
        <doc xml:whitespace="preserve">Get im name</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">get im name</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </method>
      <method name="get_current_state"
              c:identifier="fcitx_input_method_get_current_state">
        <doc xml:whitespace="preserve">Get current state</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">current state, -1 for error</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
      </method>
      <method name="get_current_ui"
              c:identifier="fcitx_input_method_get_current_ui">
        <doc xml:whitespace="preserve">Get im name</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">get ui name</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </method>
      <method name="get_im_addon"
              c:identifier="fcitx_input_method_get_im_addon">
        <doc xml:whitespace="preserve">Get addon name by im</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">get addon name</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="imname" transfer-ownership="none">
            <doc xml:whitespace="preserve">imname</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_imlist" c:identifier="fcitx_input_method_get_imlist">
        <doc xml:whitespace="preserve">Get Fcitx all im list</doc>
        <return-value transfer-ownership="container">
          <doc xml:whitespace="preserve">A FcitxIMItem List</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="IMItem"/>
          </array>
        </return-value>
      </method>
      <method name="inactivate" c:identifier="fcitx_input_method_inactivate">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </method>
      <method name="reload_config"
              c:identifier="fcitx_input_method_reload_config">
        <doc xml:whitespace="preserve">Send reload config command to fcitx</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </method>
      <method name="restart" c:identifier="fcitx_input_method_restart">
        <doc xml:whitespace="preserve">Send restart command to fcitx</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </method>
      <method name="set_current_im"
              c:identifier="fcitx_input_method_set_current_im">
        <doc xml:whitespace="preserve">Set im name</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="imname" transfer-ownership="none">
            <doc xml:whitespace="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:whitespace="preserve">Set Fcitx all im list</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="array" transfer-ownership="none">
            <doc xml:whitespace="preserve">A FcitxIMItem List</doc>
            <array name="GLib.PtrArray" c:type="GPtrArray*">
              <type name="gpointer" c:type="gpointer"/>
            </array>
          </parameter>
        </parameters>
      </method>
      <method name="toggle" c:identifier="fcitx_input_method_toggle">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </method>
      <field name="parent">
        <type name="Gio.DBusProxy" c:type="GDBusProxy"/>
      </field>
      <glib:signal name="imlist-changed" when="last">
        <doc xml:whitespace="preserve">Emit when input method list changed</doc>
        <return-value transfer-ownership="none">
          <type name="none"/>
        </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:whitespace="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:whitespace="preserve">New a FcitxKbd.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">A newly allocated FcitxKbd.</doc>
          <type name="Kbd" c:type="FcitxKbd*"/>
        </return-value>
        <parameters>
          <parameter name="bus_type" transfer-ownership="none">
            <doc xml:whitespace="preserve">#GBusType</doc>
            <type name="Gio.BusType" c:type="GBusType"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:whitespace="preserve">#GDBusProxyFlags</doc>
            <type name="Gio.DBusProxyFlags" c:type="GDBusProxyFlags"/>
          </parameter>
          <parameter name="display_number" transfer-ownership="none">
            <doc xml:whitespace="preserve">display_number</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:whitespace="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:whitespace="preserve">Get a layout binding with input method</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="imname" transfer-ownership="none">
            <doc xml:whitespace="preserve">input method name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="layout" transfer-ownership="none">
            <doc xml:whitespace="preserve">layout</doc>
            <type name="utf8" c:type="gchar**"/>
          </parameter>
          <parameter name="variant" transfer-ownership="none">
            <doc xml:whitespace="preserve">variant</doc>
            <type name="utf8" c:type="gchar**"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_layouts" c:identifier="fcitx_kbd_get_layouts">
        <doc xml:whitespace="preserve">Get Fcitx all im list</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">A FcitxLayoutItem List</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="LayoutItem"/>
          </array>
        </return-value>
      </method>
      <method name="set_default_layout"
              c:identifier="fcitx_kbd_set_default_layout">
        <doc xml:whitespace="preserve">Get 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>
          <parameter name="layout" transfer-ownership="none">
            <doc xml:whitespace="preserve">layout</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="variant" transfer-ownership="none">
            <doc xml:whitespace="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">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="imname" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="layout" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="variant" transfer-ownership="none">
            <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">
      <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>
      <function name="free" c:identifier="fcitx_layout_item_free">
        <doc xml:whitespace="preserve">free an im_item</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="data" transfer-ownership="none">
            <doc xml:whitespace="preserve">A FcitxLayoutItem</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </function>
    </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>
    <function name="layout_item_free"
              c:identifier="fcitx_layout_item_free"
              moved-to="LayoutItem.free">
      <doc xml:whitespace="preserve">free an im_item</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="data" transfer-ownership="none">
          <doc xml:whitespace="preserve">A FcitxLayoutItem</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </function>
  </namespace>
</repository>
