<?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"/>
  <package name="eek-0.90"/>
  <namespace name="Eek"
             version="0.90"
             shared-library="libeek.so.0"
             c:identifier-prefixes="Eek"
             c:symbol-prefixes="eek">
    <record name="Bounds"
            c:type="EekBounds"
            glib:type-name="EekBounds"
            glib:get-type="eek_bounds_get_type"
            c:symbol-prefix="bounds">
      <doc xml:space="preserve">The rectangle containing an element's bounding box.</doc>
      <field name="x" writable="1">
        <doc xml:space="preserve">X coordinate of the top left point</doc>
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="y" writable="1">
        <doc xml:space="preserve">Y coordinate of the top left point</doc>
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="width" writable="1">
        <doc xml:space="preserve">width of the box</doc>
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="height" writable="1">
        <doc xml:space="preserve">height of the box</doc>
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <method name="copy" c:identifier="eek_bounds_copy">
        <return-value transfer-ownership="full">
          <type name="Bounds" c:type="EekBounds*"/>
        </return-value>
        <parameters>
          <instance-parameter name="bounds" transfer-ownership="none">
            <type name="Bounds" c:type="const EekBounds*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free" c:identifier="eek_bounds_free">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="bounds" transfer-ownership="none">
            <type name="Bounds" c:type="EekBounds*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <constant name="CONTAINER_H" value="1" c:type="EEK_CONTAINER_H">
      <type name="gint" c:type="gint"/>
    </constant>
    <callback name="Callback" c:type="EekCallback">
      <doc xml:space="preserve">The type of the callback function used for iterating over the
children of a container, see eek_container_foreach_child().</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="element" transfer-ownership="none">
          <doc xml:space="preserve">an #EekElement</doc>
          <type name="Element" c:type="EekElement*"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   closure="1">
          <doc xml:space="preserve">user-supplied data</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <record name="Color"
            c:type="EekColor"
            glib:type-name="EekColor"
            glib:get-type="eek_color_get_type"
            c:symbol-prefix="color">
      <doc xml:space="preserve">Color used for drawing.</doc>
      <field name="red" writable="1">
        <doc xml:space="preserve">red component of color, between 0.0 and 1.0</doc>
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="green" writable="1">
        <doc xml:space="preserve">green component of color, between 0.0 and 1.0</doc>
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="blue" writable="1">
        <doc xml:space="preserve">blue component of color, between 0.0 and 1.0</doc>
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="alpha" writable="1">
        <doc xml:space="preserve">alpha component of color, between 0.0 and 1.0</doc>
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <constructor name="new" c:identifier="eek_color_new">
        <return-value transfer-ownership="full">
          <type name="Color" c:type="EekColor*"/>
        </return-value>
        <parameters>
          <parameter name="red" transfer-ownership="none">
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="green" transfer-ownership="none">
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="blue" transfer-ownership="none">
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="alpha" transfer-ownership="none">
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="copy" c:identifier="eek_color_copy">
        <return-value transfer-ownership="full">
          <type name="Color" c:type="EekColor*"/>
        </return-value>
        <parameters>
          <instance-parameter name="color" transfer-ownership="none">
            <type name="Color" c:type="const EekColor*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free" c:identifier="eek_color_free">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="color" transfer-ownership="none">
            <type name="Color" c:type="EekColor*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <callback name="CompareFunc" c:type="EekCompareFunc">
      <return-value transfer-ownership="none">
        <type name="gint" c:type="gint"/>
      </return-value>
      <parameters>
        <parameter name="element" transfer-ownership="none">
          <type name="Element" c:type="EekElement*"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   closure="1">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <class name="Container"
           c:symbol-prefix="container"
           c:type="EekContainer"
           parent="Element"
           abstract="1"
           glib:type-name="EekContainer"
           glib:get-type="eek_container_get_type"
           glib:type-struct="ContainerClass">
      <virtual-method name="add_child" invoker="add_child">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Container" c:type="EekContainer*"/>
          </instance-parameter>
          <parameter name="element" transfer-ownership="none">
            <type name="Element" c:type="EekElement*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="child_added">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Container" c:type="EekContainer*"/>
          </instance-parameter>
          <parameter name="element" transfer-ownership="none">
            <type name="Element" c:type="EekElement*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="child_removed">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Container" c:type="EekContainer*"/>
          </instance-parameter>
          <parameter name="element" transfer-ownership="none">
            <type name="Element" c:type="EekElement*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="find" invoker="find" introspectable="0">
        <doc xml:space="preserve">Find a child which matches the criteria supplied as @func, in @container.</doc>
        <return-value>
          <doc xml:space="preserve">an #EekElement or NULL on failure</doc>
          <type name="Element" c:type="EekElement*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Container" c:type="EekContainer*"/>
          </instance-parameter>
          <parameter name="func" transfer-ownership="none" closure="1">
            <doc xml:space="preserve">function to be used to compare two children</doc>
            <type name="CompareFunc" c:type="EekCompareFunc"/>
          </parameter>
          <parameter name="data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="foreach_child" invoker="foreach_child">
        <doc xml:space="preserve">Enumerate children of @container and run @callback with each child.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Container" c:type="EekContainer*"/>
          </instance-parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     scope="call"
                     closure="1">
            <doc xml:space="preserve">an #EekCallback</doc>
            <type name="Callback" c:type="EekCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     closure="1">
            <doc xml:space="preserve">additional data passed to @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="remove_child">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Container" c:type="EekContainer*"/>
          </instance-parameter>
          <parameter name="element" transfer-ownership="none">
            <type name="Element" c:type="EekElement*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="add_child" c:identifier="eek_container_add_child">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="container" transfer-ownership="none">
            <type name="Container" c:type="EekContainer*"/>
          </instance-parameter>
          <parameter name="element" transfer-ownership="none">
            <type name="Element" c:type="EekElement*"/>
          </parameter>
        </parameters>
      </method>
      <method name="find" c:identifier="eek_container_find" introspectable="0">
        <doc xml:space="preserve">Find a child which matches the criteria supplied as @func, in @container.</doc>
        <return-value>
          <doc xml:space="preserve">an #EekElement or NULL on failure</doc>
          <type name="Element" c:type="EekElement*"/>
        </return-value>
        <parameters>
          <instance-parameter name="container" transfer-ownership="none">
            <doc xml:space="preserve">an #EekContainer</doc>
            <type name="Container" c:type="EekContainer*"/>
          </instance-parameter>
          <parameter name="func" transfer-ownership="none" closure="1">
            <doc xml:space="preserve">function to be used to compare two children</doc>
            <type name="CompareFunc" c:type="EekCompareFunc"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">additional data passed to @func</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="foreach_child" c:identifier="eek_container_foreach_child">
        <doc xml:space="preserve">Enumerate children of @container and run @callback with each child.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="container" transfer-ownership="none">
            <doc xml:space="preserve">an #EekContainer</doc>
            <type name="Container" c:type="EekContainer*"/>
          </instance-parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     scope="call"
                     closure="1">
            <doc xml:space="preserve">an #EekCallback</doc>
            <type name="Callback" c:type="EekCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">additional data passed to @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent" readable="0" private="1">
        <type name="Element" c:type="EekElement"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="ContainerPrivate" c:type="EekContainerPrivate*"/>
      </field>
      <glib:signal name="child-added" when="first">
        <doc xml:space="preserve">The ::child-added signal is emitted each time an element is
added to @container.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="element" transfer-ownership="none">
            <doc xml:space="preserve">an #EekElement</doc>
            <type name="Element"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="child-removed" when="first">
        <doc xml:space="preserve">The ::child-removed signal is emitted each time an element is
removed from @container.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="element" transfer-ownership="none">
            <doc xml:space="preserve">an #EekElement</doc>
            <type name="Element"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="ContainerClass"
            c:type="EekContainerClass"
            glib:is-gtype-struct-for="Container">
      <field name="parent_class" readable="0" private="1">
        <type name="ElementClass" c:type="EekElementClass"/>
      </field>
      <field name="add_child">
        <callback name="add_child">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Container" c:type="EekContainer*"/>
            </parameter>
            <parameter name="element" transfer-ownership="none">
              <type name="Element" c:type="EekElement*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="remove_child">
        <callback name="remove_child">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Container" c:type="EekContainer*"/>
            </parameter>
            <parameter name="element" transfer-ownership="none">
              <type name="Element" c:type="EekElement*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="foreach_child">
        <callback name="foreach_child">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Container" c:type="EekContainer*"/>
            </parameter>
            <parameter name="callback"
                       transfer-ownership="none"
                       scope="call"
                       closure="2">
              <doc xml:space="preserve">an #EekCallback</doc>
              <type name="Callback" c:type="EekCallback"/>
            </parameter>
            <parameter name="user_data"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1"
                       closure="2">
              <doc xml:space="preserve">additional data passed to @callback</doc>
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="find" introspectable="0">
        <callback name="find" introspectable="0">
          <return-value>
            <doc xml:space="preserve">an #EekElement or NULL on failure</doc>
            <type name="Element" c:type="EekElement*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Container" c:type="EekContainer*"/>
            </parameter>
            <parameter name="func" transfer-ownership="none" closure="2">
              <doc xml:space="preserve">function to be used to compare two children</doc>
              <type name="CompareFunc" c:type="EekCompareFunc"/>
            </parameter>
            <parameter name="data"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="child_added">
        <callback name="child_added">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Container" c:type="EekContainer*"/>
            </parameter>
            <parameter name="element" transfer-ownership="none">
              <type name="Element" c:type="EekElement*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="child_removed">
        <callback name="child_removed">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Container" c:type="EekContainer*"/>
            </parameter>
            <parameter name="element" transfer-ownership="none">
              <type name="Element" c:type="EekElement*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="pdummy" readable="0" private="1">
        <array zero-terminated="0" c:type="gpointer" fixed-size="24">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <record name="ContainerPrivate" c:type="EekContainerPrivate" disguised="1">
    </record>
    <constant name="ELEMENT_H" value="1" c:type="EEK_ELEMENT_H">
      <type name="gint" c:type="gint"/>
    </constant>
    <class name="Element"
           c:symbol-prefix="element"
           c:type="EekElement"
           parent="GObject.Object"
           abstract="1"
           glib:type-name="EekElement"
           glib:get-type="eek_element_get_type"
           glib:type-struct="ElementClass">
      <virtual-method name="symbol_index_changed">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Element" c:type="EekElement*"/>
          </instance-parameter>
          <parameter name="group" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="level" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="get_absolute_position"
              c:identifier="eek_element_get_absolute_position">
        <doc xml:space="preserve">Compute the absolute position of @element.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="element" transfer-ownership="none">
            <doc xml:space="preserve">an #EekElement</doc>
            <type name="Element" c:type="EekElement*"/>
          </instance-parameter>
          <parameter name="x" transfer-ownership="none">
            <doc xml:space="preserve">pointer where the X coordinate of @element will be stored</doc>
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:space="preserve">pointer where the Y coordinate of @element will be stored</doc>
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_bounds" c:identifier="eek_element_get_bounds">
        <doc xml:space="preserve">Get the bounding box of @element.  Note that if @element has
parent, position of @bounds are relative to the parent.  To obtain
the absolute position, use eek_element_get_absolute_position().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="element" transfer-ownership="none">
            <doc xml:space="preserve">an #EekElement</doc>
            <type name="Element" c:type="EekElement*"/>
          </instance-parameter>
          <parameter name="bounds"
                     direction="out"
                     caller-allocates="1"
                     transfer-ownership="none">
            <doc xml:space="preserve">pointer where bounding box of @element will be stored</doc>
            <type name="Bounds" c:type="EekBounds*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_group" c:identifier="eek_element_get_group">
        <doc xml:space="preserve">Return the group value of the default symbol index of @element.
If the value is not set, -1 will be returned.

See also: eek_element_get_symbol_index()</doc>
        <return-value transfer-ownership="none">
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="element" transfer-ownership="none">
            <doc xml:space="preserve">an #EekElement</doc>
            <type name="Element" c:type="EekElement*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_level" c:identifier="eek_element_get_level">
        <doc xml:space="preserve">Return the level value of the default symbol index of @element.
If the value is not set, -1 will be returned.

See also: eek_element_get_symbol_index()</doc>
        <return-value transfer-ownership="none">
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="element" transfer-ownership="none">
            <doc xml:space="preserve">an #EekElement</doc>
            <type name="Element" c:type="EekElement*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_name" c:identifier="eek_element_get_name">
        <doc xml:space="preserve">Get the name of @element.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the name of @element or NULL when the name is not set</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="element" transfer-ownership="none">
            <doc xml:space="preserve">an #EekElement</doc>
            <type name="Element" c:type="EekElement*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_parent"
              c:identifier="eek_element_get_parent"
              introspectable="0">
        <doc xml:space="preserve">Get the parent of @element.</doc>
        <return-value>
          <doc xml:space="preserve">an #EekElement if the parent is set</doc>
          <type name="Element" c:type="EekElement*"/>
        </return-value>
        <parameters>
          <instance-parameter name="element" transfer-ownership="none">
            <doc xml:space="preserve">an #EekElement</doc>
            <type name="Element" c:type="EekElement*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_symbol_index"
              c:identifier="eek_element_get_symbol_index">
        <doc xml:space="preserve">Get the default index of the symbol matrices of @element.
If the index is not set, -1 will be returned.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="element" transfer-ownership="none">
            <doc xml:space="preserve">an #EekElement</doc>
            <type name="Element" c:type="EekElement*"/>
          </instance-parameter>
          <parameter name="group" transfer-ownership="none">
            <doc xml:space="preserve">a pointer where the group value of the symbol index will be stored</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="level" transfer-ownership="none">
            <doc xml:space="preserve">a pointer where the level value of the symbol index will be stored</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_bounds" c:identifier="eek_element_set_bounds">
        <doc xml:space="preserve">Set the bounding box of @element to @bounds.  Note that if @element
has parent, X and Y positions of @bounds are relative to the parent
position.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="element" transfer-ownership="none">
            <doc xml:space="preserve">an #EekElement</doc>
            <type name="Element" c:type="EekElement*"/>
          </instance-parameter>
          <parameter name="bounds" transfer-ownership="none">
            <doc xml:space="preserve">bounding box of @element</doc>
            <type name="Bounds" c:type="EekBounds*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_group" c:identifier="eek_element_set_group">
        <doc xml:space="preserve">Set the group value of the default symbol index of @element.  To
unset, pass -1 as @group.

See also: eek_element_set_symbol_index()</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="element" transfer-ownership="none">
            <doc xml:space="preserve">an #EekElement</doc>
            <type name="Element" c:type="EekElement*"/>
          </instance-parameter>
          <parameter name="group" transfer-ownership="none">
            <doc xml:space="preserve">group index of @element</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_level" c:identifier="eek_element_set_level">
        <doc xml:space="preserve">Set the level value of the default symbol index of @element.  To
unset, pass -1 as @level.

See also: eek_element_set_symbol_index()</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="element" transfer-ownership="none">
            <doc xml:space="preserve">an #EekElement</doc>
            <type name="Element" c:type="EekElement*"/>
          </instance-parameter>
          <parameter name="level" transfer-ownership="none">
            <doc xml:space="preserve">level index of @element</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_name" c:identifier="eek_element_set_name">
        <doc xml:space="preserve">Set the name of @element to @name.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="element" transfer-ownership="none">
            <doc xml:space="preserve">an #EekElement</doc>
            <type name="Element" c:type="EekElement*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">name of @element</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_parent" c:identifier="eek_element_set_parent">
        <doc xml:space="preserve">Set the parent of @element to @parent.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="element" transfer-ownership="none">
            <doc xml:space="preserve">an #EekElement</doc>
            <type name="Element" c:type="EekElement*"/>
          </instance-parameter>
          <parameter name="parent"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">an #EekElement or %NULL</doc>
            <type name="Element" c:type="EekElement*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_position" c:identifier="eek_element_set_position">
        <doc xml:space="preserve">Set the relative position of @element.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="element" transfer-ownership="none">
            <doc xml:space="preserve">an #EekElement</doc>
            <type name="Element" c:type="EekElement*"/>
          </instance-parameter>
          <parameter name="x" transfer-ownership="none">
            <doc xml:space="preserve">X coordinate of top left corner</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:space="preserve">Y coordinate of top left corner</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_size" c:identifier="eek_element_set_size">
        <doc xml:space="preserve">Set the size of @element.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="element" transfer-ownership="none">
            <doc xml:space="preserve">an #EekElement</doc>
            <type name="Element" c:type="EekElement*"/>
          </instance-parameter>
          <parameter name="width" transfer-ownership="none">
            <doc xml:space="preserve">width of @element</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:space="preserve">height of @element</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_symbol_index"
              c:identifier="eek_element_set_symbol_index">
        <doc xml:space="preserve">Set the default index of the symbol matrices of @element.  The
setting affects the child, if child does not have the index set, as
well as this element.  To unset, pass -1 as group/level.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="element" transfer-ownership="none">
            <doc xml:space="preserve">an #EekElement</doc>
            <type name="Element" c:type="EekElement*"/>
          </instance-parameter>
          <parameter name="group" transfer-ownership="none">
            <doc xml:space="preserve">row index of the symbol matrix</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="level" transfer-ownership="none">
            <doc xml:space="preserve">column index of the symbol matrix</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <property name="bounds" writable="1" transfer-ownership="none">
        <doc xml:space="preserve">The bounding box of #EekElement.</doc>
        <type name="Bounds"/>
      </property>
      <property name="group" writable="1" transfer-ownership="none">
        <doc xml:space="preserve">The group value of the symbol index of #EekElement.</doc>
        <type name="gint" c:type="gint"/>
      </property>
      <property name="level" writable="1" transfer-ownership="none">
        <doc xml:space="preserve">The level value of the symbol index of #EekElement.</doc>
        <type name="gint" c:type="gint"/>
      </property>
      <property name="name" writable="1" transfer-ownership="none">
        <doc xml:space="preserve">The name of #EekElement.</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <field name="parent" readable="0" private="1">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="ElementPrivate" c:type="EekElementPrivate*"/>
      </field>
      <glib:signal name="symbol-index-changed" when="last">
        <doc xml:space="preserve">The ::symbol-index-changed signal is emitted each time the
global configuration of group/level index changes.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="group" transfer-ownership="none">
            <doc xml:space="preserve">row index of the symbol matrix of keys on @element</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="level" transfer-ownership="none">
            <doc xml:space="preserve">column index of the symbol matrix of keys on @element</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="ElementClass"
            c:type="EekElementClass"
            glib:is-gtype-struct-for="Element">
      <field name="parent_class" readable="0" private="1">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="symbol_index_changed">
        <callback name="symbol_index_changed">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Element" c:type="EekElement*"/>
            </parameter>
            <parameter name="group" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="level" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <record name="ElementPrivate" c:type="EekElementPrivate" disguised="1">
    </record>
    <enumeration name="ErrorEnum"
                 glib:type-name="EekErrorEnum"
                 glib:get-type="eek_error_enum_get_type"
                 c:type="EekErrorEnum">
      <member name="layout_error"
              value="0"
              c:identifier="EEK_ERROR_LAYOUT_ERROR"
              glib:nick="layout-error">
      </member>
      <member name="failed"
              value="1"
              c:identifier="EEK_ERROR_FAILED"
              glib:nick="failed">
      </member>
    </enumeration>
    <enumeration name="GradientType"
                 glib:type-name="EekGradientType"
                 glib:get-type="eek_gradient_type_get_type"
                 c:type="EekGradientType">
      <member name="none"
              value="0"
              c:identifier="EEK_GRADIENT_NONE"
              glib:nick="none">
      </member>
      <member name="vertical"
              value="1"
              c:identifier="EEK_GRADIENT_VERTICAL"
              glib:nick="vertical">
      </member>
      <member name="horizontal"
              value="2"
              c:identifier="EEK_GRADIENT_HORIZONTAL"
              glib:nick="horizontal">
      </member>
      <member name="radial"
              value="3"
              c:identifier="EEK_GRADIENT_RADIAL"
              glib:nick="radial">
      </member>
    </enumeration>
    <constant name="H" value="1" c:type="EEK_H">
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="INVALID_KEYCODE" value="0" c:type="EEK_INVALID_KEYCODE">
      <doc xml:space="preserve">Pseudo keycode used for error reporting.</doc>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="INVALID_KEYSYM" value="0" c:type="EEK_INVALID_KEYSYM">
      <doc xml:space="preserve">Pseudo keysym used for error reporting.</doc>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="KEYBOARD_H" value="1" c:type="EEK_KEYBOARD_H">
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="KEYSYM_H" value="1" c:type="EEK_KEYSYM_H">
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="KEY_H" value="1" c:type="EEK_KEY_H">
      <type name="gint" c:type="gint"/>
    </constant>
    <class name="Key"
           c:symbol-prefix="key"
           c:type="EekKey"
           parent="Element"
           glib:type-name="EekKey"
           glib:get-type="eek_key_get_type"
           glib:type-struct="KeyClass">
      <doc xml:space="preserve">The #EekKey structure contains only private data and should only be
accessed using the provided API.</doc>
      <virtual-method name="cancelled">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="key" transfer-ownership="none">
            <type name="Key" c:type="EekKey*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="locked">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="key" transfer-ownership="none">
            <type name="Key" c:type="EekKey*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="pressed">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="key" transfer-ownership="none">
            <type name="Key" c:type="EekKey*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="released">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="key" transfer-ownership="none">
            <type name="Key" c:type="EekKey*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="unlocked">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="key" transfer-ownership="none">
            <type name="Key" c:type="EekKey*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <method name="get_index" c:identifier="eek_key_get_index">
        <doc xml:space="preserve">Get the location of @key in #EekSection.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve">an #EekKey</doc>
            <type name="Key" c:type="EekKey*"/>
          </instance-parameter>
          <parameter name="column"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">pointer where the column index of @key in #EekSection will be stored</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="row"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">pointer where the row index of @key in #EekSection will be stored</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_keycode" c:identifier="eek_key_get_keycode">
        <doc xml:space="preserve">Get keycode of @key.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">keycode or %EEK_INVALID_KEYCODE on failure</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve">an #EekKey</doc>
            <type name="Key" c:type="EekKey*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_oref" c:identifier="eek_key_get_oref">
        <doc xml:space="preserve">Get the outline id of @key.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">unsigned integer</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve">an #EekKey</doc>
            <type name="Key" c:type="EekKey*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_symbol" c:identifier="eek_key_get_symbol">
        <doc xml:space="preserve">Get the current symbol of @key.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the current #EekSymbol or %NULL on failure</doc>
          <type name="Symbol" c:type="EekSymbol*"/>
        </return-value>
        <parameters>
          <instance-parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve">an #EekKey</doc>
            <type name="Key" c:type="EekKey*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_symbol_at_index"
              c:identifier="eek_key_get_symbol_at_index">
        <doc xml:space="preserve">Get the symbol at (@group, @level) in the symbol matrix of @key.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">an #EekSymbol at (@group, @level), or %NULL</doc>
          <type name="Symbol" c:type="EekSymbol*"/>
        </return-value>
        <parameters>
          <instance-parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve">an #EekKey</doc>
            <type name="Key" c:type="EekKey*"/>
          </instance-parameter>
          <parameter name="group" transfer-ownership="none">
            <doc xml:space="preserve">group index of the symbol matrix</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="level" transfer-ownership="none">
            <doc xml:space="preserve">level index of the symbol matrix</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="fallback_group" transfer-ownership="none">
            <doc xml:space="preserve">fallback group index</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="fallback_level" transfer-ownership="none">
            <doc xml:space="preserve">fallback level index</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_symbol_matrix"
              c:identifier="eek_key_get_symbol_matrix">
        <doc xml:space="preserve">Get the symbol matrix of @key.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#EekSymbolMatrix or %NULL</doc>
          <type name="SymbolMatrix" c:type="EekSymbolMatrix*"/>
        </return-value>
        <parameters>
          <instance-parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve">an #EekKey</doc>
            <type name="Key" c:type="EekKey*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_symbol_with_fallback"
              c:identifier="eek_key_get_symbol_with_fallback">
        <doc xml:space="preserve">Get the current symbol of @key.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the current #EekSymbol or %NULL on failure</doc>
          <type name="Symbol" c:type="EekSymbol*"/>
        </return-value>
        <parameters>
          <instance-parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve">an #EekKey</doc>
            <type name="Key" c:type="EekKey*"/>
          </instance-parameter>
          <parameter name="fallback_group" transfer-ownership="none">
            <doc xml:space="preserve">fallback group index</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="fallback_level" transfer-ownership="none">
            <doc xml:space="preserve">fallback level index</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="is_locked" c:identifier="eek_key_is_locked">
        <doc xml:space="preserve">Return %TRUE if key is marked as locked.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve">an #EekKey</doc>
            <type name="Key" c:type="EekKey*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_pressed" c:identifier="eek_key_is_pressed">
        <doc xml:space="preserve">Return %TRUE if key is marked as pressed.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve">an #EekKey</doc>
            <type name="Key" c:type="EekKey*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_index" c:identifier="eek_key_set_index">
        <doc xml:space="preserve">Set the location of @key in #EekSection with @column and @row.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve">an #EekKey</doc>
            <type name="Key" c:type="EekKey*"/>
          </instance-parameter>
          <parameter name="column" transfer-ownership="none">
            <doc xml:space="preserve">column index of @key in #EekSection</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="row" transfer-ownership="none">
            <doc xml:space="preserve">row index of @key in #EekSection</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_keycode" c:identifier="eek_key_set_keycode">
        <doc xml:space="preserve">Set the keycode of @key to @keycode.  Since typically the keycode
value is used to find a key in a keyboard by calling
eek_keyboard_find_key_by_keycode, it is not necessarily the same as
the X keycode but it should be unique in the keyboard @key belongs
to.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve">an #EekKey</doc>
            <type name="Key" c:type="EekKey*"/>
          </instance-parameter>
          <parameter name="keycode" transfer-ownership="none">
            <doc xml:space="preserve">keycode</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_oref" c:identifier="eek_key_set_oref">
        <doc xml:space="preserve">Set the outline id of @key to @oref.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve">an #EekKey</doc>
            <type name="Key" c:type="EekKey*"/>
          </instance-parameter>
          <parameter name="oref" transfer-ownership="none">
            <doc xml:space="preserve">outline id of @key</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_symbol_matrix"
              c:identifier="eek_key_set_symbol_matrix">
        <doc xml:space="preserve">Set the symbol matrix of @key to @matrix.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve">an #EekKey</doc>
            <type name="Key" c:type="EekKey*"/>
          </instance-parameter>
          <parameter name="matrix" transfer-ownership="none">
            <doc xml:space="preserve">an #EekSymbolMatrix</doc>
            <type name="SymbolMatrix" c:type="EekSymbolMatrix*"/>
          </parameter>
        </parameters>
      </method>
      <property name="column" writable="1" transfer-ownership="none">
        <doc xml:space="preserve">The column index of #EekKey in the parent #EekSection.</doc>
        <type name="gint" c:type="gint"/>
      </property>
      <property name="keycode" writable="1" transfer-ownership="none">
        <doc xml:space="preserve">The keycode of #EekKey.</doc>
        <type name="guint" c:type="guint"/>
      </property>
      <property name="oref" writable="1" transfer-ownership="none">
        <doc xml:space="preserve">The outline id of #EekKey.</doc>
        <type name="gulong" c:type="gulong"/>
      </property>
      <property name="row" writable="1" transfer-ownership="none">
        <doc xml:space="preserve">The row index of #EekKey in the parent #EekSection.</doc>
        <type name="gint" c:type="gint"/>
      </property>
      <property name="symbol-matrix" writable="1" transfer-ownership="none">
        <doc xml:space="preserve">The symbol matrix of #EekKey.</doc>
        <type name="SymbolMatrix"/>
      </property>
      <field name="parent" readable="0" private="1">
        <type name="Element" c:type="EekElement"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="KeyPrivate" c:type="EekKeyPrivate*"/>
      </field>
      <glib:signal name="cancelled" when="last">
        <doc xml:space="preserve">The ::cancelled signal is emitted each time @key is shifted to
the cancelled state.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="locked" when="first">
        <doc xml:space="preserve">The ::locked signal is emitted each time @key is shifted to
the locked state.  The class handler runs before signal
handlers to allow signal handlers to read the status of @key
with eek_key_is_locked().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="pressed" when="first">
        <doc xml:space="preserve">The ::pressed signal is emitted each time @key is shifted to
the pressed state.  The class handler runs before signal
handlers to allow signal handlers to read the status of @key
with eek_key_is_pressed().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="released" when="last">
        <doc xml:space="preserve">The ::released signal is emitted each time @key is shifted to
the released state.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="unlocked" when="last">
        <doc xml:space="preserve">The ::unlocked signal is emitted each time @key is shifted to
the unlocked state.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
    </class>
    <record name="KeyClass"
            c:type="EekKeyClass"
            glib:is-gtype-struct-for="Key">
      <field name="parent_class" readable="0" private="1">
        <type name="ElementClass" c:type="EekElementClass"/>
      </field>
      <field name="pressed">
        <callback name="pressed">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="key" transfer-ownership="none">
              <type name="Key" c:type="EekKey*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="released">
        <callback name="released">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="key" transfer-ownership="none">
              <type name="Key" c:type="EekKey*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="locked">
        <callback name="locked">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="key" transfer-ownership="none">
              <type name="Key" c:type="EekKey*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="unlocked">
        <callback name="unlocked">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="key" transfer-ownership="none">
              <type name="Key" c:type="EekKey*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="cancelled">
        <callback name="cancelled">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="key" transfer-ownership="none">
              <type name="Key" c:type="EekKey*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <record name="KeyPrivate" c:type="EekKeyPrivate" disguised="1">
    </record>
    <class name="Keyboard"
           c:symbol-prefix="keyboard"
           c:type="EekKeyboard"
           parent="Container"
           glib:type-name="EekKeyboard"
           glib:get-type="eek_keyboard_get_type"
           glib:type-struct="KeyboardClass">
      <doc xml:space="preserve">The #EekKeyboard structure contains only private data and should
only be accessed using the provided API.</doc>
      <constructor name="new" c:identifier="eek_keyboard_new">
        <doc xml:space="preserve">Create a new #EekKeyboard based on @layout.</doc>
        <return-value transfer-ownership="full">
          <type name="Keyboard" c:type="EekKeyboard*"/>
        </return-value>
        <parameters>
          <parameter name="layout" transfer-ownership="none">
            <doc xml:space="preserve">an #EekLayout</doc>
            <type name="Layout" c:type="EekLayout*"/>
          </parameter>
          <parameter name="initial_width" transfer-ownership="none">
            <doc xml:space="preserve">initial width of the keyboard</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="initial_height" transfer-ownership="none">
            <doc xml:space="preserve">initial height of the keyboard</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
        </parameters>
      </constructor>
      <virtual-method name="create_section"
                      invoker="create_section"
                      introspectable="0">
        <doc xml:space="preserve">Create an #EekSection instance and append it to @keyboard.  This
function is rarely called by application but called by #EekLayout
implementation.</doc>
        <return-value>
          <type name="Section" c:type="EekSection*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Keyboard" c:type="EekKeyboard*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="find_key_by_keycode" invoker="find_key_by_keycode">
        <doc xml:space="preserve">Find an #EekKey whose keycode is @keycode.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#EekKey whose keycode is @keycode</doc>
          <type name="Key" c:type="EekKey*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Keyboard" c:type="EekKeyboard*"/>
          </instance-parameter>
          <parameter name="keycode" transfer-ownership="none">
            <doc xml:space="preserve">a keycode</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="key_cancelled">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Keyboard" c:type="EekKeyboard*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <type name="Key" c:type="EekKey*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="key_locked">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Keyboard" c:type="EekKeyboard*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <type name="Key" c:type="EekKey*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="key_pressed">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Keyboard" c:type="EekKeyboard*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <type name="Key" c:type="EekKey*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="key_released">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Keyboard" c:type="EekKeyboard*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <type name="Key" c:type="EekKey*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="key_unlocked">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Keyboard" c:type="EekKeyboard*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <type name="Key" c:type="EekKey*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="add_outline" c:identifier="eek_keyboard_add_outline">
        <doc xml:space="preserve">Register an outline of @keyboard.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">an unsigned integer ID of the registered outline, for
later reference</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="keyboard" transfer-ownership="none">
            <doc xml:space="preserve">an #EekKeyboard</doc>
            <type name="Keyboard" c:type="EekKeyboard*"/>
          </instance-parameter>
          <parameter name="outline" transfer-ownership="none">
            <doc xml:space="preserve">an #EekOutline</doc>
            <type name="Outline" c:type="EekOutline*"/>
          </parameter>
        </parameters>
      </method>
      <method name="create_section"
              c:identifier="eek_keyboard_create_section"
              introspectable="0">
        <doc xml:space="preserve">Create an #EekSection instance and append it to @keyboard.  This
function is rarely called by application but called by #EekLayout
implementation.</doc>
        <return-value>
          <type name="Section" c:type="EekSection*"/>
        </return-value>
        <parameters>
          <instance-parameter name="keyboard" transfer-ownership="none">
            <doc xml:space="preserve">an #EekKeyboard</doc>
            <type name="Keyboard" c:type="EekKeyboard*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="find_key_by_keycode"
              c:identifier="eek_keyboard_find_key_by_keycode">
        <doc xml:space="preserve">Find an #EekKey whose keycode is @keycode.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#EekKey whose keycode is @keycode</doc>
          <type name="Key" c:type="EekKey*"/>
        </return-value>
        <parameters>
          <instance-parameter name="keyboard" transfer-ownership="none">
            <doc xml:space="preserve">an #EekKeyboard</doc>
            <type name="Keyboard" c:type="EekKeyboard*"/>
          </instance-parameter>
          <parameter name="keycode" transfer-ownership="none">
            <doc xml:space="preserve">a keycode</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_alt_gr_mask"
              c:identifier="eek_keyboard_get_alt_gr_mask">
        <doc xml:space="preserve">Get modifier mask used as Alt_Gr.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">an #EekModifierType</doc>
          <type name="ModifierType" c:type="EekModifierType"/>
        </return-value>
        <parameters>
          <instance-parameter name="keyboard" transfer-ownership="none">
            <doc xml:space="preserve">an #EekKeyboard</doc>
            <type name="Keyboard" c:type="EekKeyboard*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_layout"
              c:identifier="eek_keyboard_get_layout"
              introspectable="0">
        <doc xml:space="preserve">Get the layout used to create @keyboard.</doc>
        <return-value>
          <doc xml:space="preserve">an #EekLayout</doc>
          <type name="Layout" c:type="EekLayout*"/>
        </return-value>
        <parameters>
          <instance-parameter name="keyboard" transfer-ownership="none">
            <doc xml:space="preserve">an #EekKeyboard</doc>
            <type name="Keyboard" c:type="EekKeyboard*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_locked_keys"
              c:identifier="eek_keyboard_get_locked_keys">
        <doc xml:space="preserve">Get locked keys.</doc>
        <return-value transfer-ownership="container">
          <doc xml:space="preserve">A list
of locked keys.</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="ModifierKey"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="keyboard" transfer-ownership="none">
            <doc xml:space="preserve">an #EekKeyboard</doc>
            <type name="Keyboard" c:type="EekKeyboard*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_modifier_behavior"
              c:identifier="eek_keyboard_get_modifier_behavior">
        <doc xml:space="preserve">Get the modifier handling mode of @keyboard.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#EekModifierBehavior</doc>
          <type name="ModifierBehavior" c:type="EekModifierBehavior"/>
        </return-value>
        <parameters>
          <instance-parameter name="keyboard" transfer-ownership="none">
            <doc xml:space="preserve">an #EekKeyboard</doc>
            <type name="Keyboard" c:type="EekKeyboard*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_modifiers" c:identifier="eek_keyboard_get_modifiers">
        <doc xml:space="preserve">Get the current modifier status of @keyboard.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#EekModifierType</doc>
          <type name="ModifierType" c:type="EekModifierType"/>
        </return-value>
        <parameters>
          <instance-parameter name="keyboard" transfer-ownership="none">
            <doc xml:space="preserve">an #EekKeyboard</doc>
            <type name="Keyboard" c:type="EekKeyboard*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_n_outlines" c:identifier="eek_keyboard_get_n_outlines">
        <doc xml:space="preserve">Get the number of outlines defined in @keyboard.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">integer</doc>
          <type name="gsize" c:type="gsize"/>
        </return-value>
        <parameters>
          <instance-parameter name="keyboard" transfer-ownership="none">
            <doc xml:space="preserve">an #EekKeyboard</doc>
            <type name="Keyboard" c:type="EekKeyboard*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_num_lock_mask"
              c:identifier="eek_keyboard_get_num_lock_mask">
        <doc xml:space="preserve">Get modifier mask used as Num_Lock.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">an #EekModifierType</doc>
          <type name="ModifierType" c:type="EekModifierType"/>
        </return-value>
        <parameters>
          <instance-parameter name="keyboard" transfer-ownership="none">
            <doc xml:space="preserve">an #EekKeyboard</doc>
            <type name="Keyboard" c:type="EekKeyboard*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_outline" c:identifier="eek_keyboard_get_outline">
        <doc xml:space="preserve">Get an outline associated with @oref in @keyboard.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">an #EekOutline, which should not be released</doc>
          <type name="Outline" c:type="EekOutline*"/>
        </return-value>
        <parameters>
          <instance-parameter name="keyboard" transfer-ownership="none">
            <doc xml:space="preserve">an #EekKeyboard</doc>
            <type name="Keyboard" c:type="EekKeyboard*"/>
          </instance-parameter>
          <parameter name="oref" transfer-ownership="none">
            <doc xml:space="preserve">ID of the outline</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_pressed_keys"
              c:identifier="eek_keyboard_get_pressed_keys">
        <doc xml:space="preserve">Get pressed keys.</doc>
        <return-value transfer-ownership="container">
          <doc xml:space="preserve">A list of
pressed keys.</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="Key"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="keyboard" transfer-ownership="none">
            <doc xml:space="preserve">an #EekKeyboard</doc>
            <type name="Keyboard" c:type="EekKeyboard*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_size" c:identifier="eek_keyboard_get_size">
        <doc xml:space="preserve">Get the size of @keyboard.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="keyboard" transfer-ownership="none">
            <doc xml:space="preserve">an #EekKeyboard</doc>
            <type name="Keyboard" c:type="EekKeyboard*"/>
          </instance-parameter>
          <parameter name="width" transfer-ownership="none">
            <doc xml:space="preserve">width of @keyboard</doc>
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:space="preserve">height of @keyboard</doc>
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
        </parameters>
      </method>
      <method name="output" c:identifier="eek_keyboard_output">
        <doc xml:space="preserve">Convert @keyboard into the XML format and store it into @output.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="keyboard" transfer-ownership="none">
            <doc xml:space="preserve">an #EekKeyboard</doc>
            <type name="Keyboard" c:type="EekKeyboard*"/>
          </instance-parameter>
          <parameter name="output" transfer-ownership="none">
            <doc xml:space="preserve">a GString</doc>
            <type name="GLib.String" c:type="GString*"/>
          </parameter>
          <parameter name="indent" transfer-ownership="none">
            <doc xml:space="preserve">an integer</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_alt_gr_mask"
              c:identifier="eek_keyboard_set_alt_gr_mask">
        <doc xml:space="preserve">Set modifier mask used as Alt_Gr.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="keyboard" transfer-ownership="none">
            <doc xml:space="preserve">an #EekKeyboard</doc>
            <type name="Keyboard" c:type="EekKeyboard*"/>
          </instance-parameter>
          <parameter name="alt_gr_mask" transfer-ownership="none">
            <doc xml:space="preserve">an #EekModifierType</doc>
            <type name="ModifierType" c:type="EekModifierType"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_modifier_behavior"
              c:identifier="eek_keyboard_set_modifier_behavior">
        <doc xml:space="preserve">Set the modifier handling mode of @keyboard.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="keyboard" transfer-ownership="none">
            <doc xml:space="preserve">an #EekKeyboard</doc>
            <type name="Keyboard" c:type="EekKeyboard*"/>
          </instance-parameter>
          <parameter name="modifier_behavior" transfer-ownership="none">
            <doc xml:space="preserve">modifier behavior of @keyboard</doc>
            <type name="ModifierBehavior" c:type="EekModifierBehavior"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_modifiers" c:identifier="eek_keyboard_set_modifiers">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="keyboard" transfer-ownership="none">
            <type name="Keyboard" c:type="EekKeyboard*"/>
          </instance-parameter>
          <parameter name="modifiers" transfer-ownership="none">
            <type name="ModifierType" c:type="EekModifierType"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_num_lock_mask"
              c:identifier="eek_keyboard_set_num_lock_mask">
        <doc xml:space="preserve">Set modifier mask used as Num_Lock.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="keyboard" transfer-ownership="none">
            <doc xml:space="preserve">an #EekKeyboard</doc>
            <type name="Keyboard" c:type="EekKeyboard*"/>
          </instance-parameter>
          <parameter name="num_lock_mask" transfer-ownership="none">
            <doc xml:space="preserve">an #EekModifierType</doc>
            <type name="ModifierType" c:type="EekModifierType"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_size" c:identifier="eek_keyboard_set_size">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="keyboard" transfer-ownership="none">
            <type name="Keyboard" c:type="EekKeyboard*"/>
          </instance-parameter>
          <parameter name="width" transfer-ownership="none">
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
        </parameters>
      </method>
      <property name="layout"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <doc xml:space="preserve">The layout used to create this #EekKeyboard.</doc>
        <type name="Layout"/>
      </property>
      <property name="modifier-behavior"
                writable="1"
                transfer-ownership="none">
        <doc xml:space="preserve">The modifier handling mode of #EekKeyboard.</doc>
        <type name="ModifierBehavior"/>
      </property>
      <field name="parent" readable="0" private="1">
        <type name="Container" c:type="EekContainer"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="KeyboardPrivate" c:type="EekKeyboardPrivate*"/>
      </field>
      <glib:signal name="key-cancelled" when="last">
        <doc xml:space="preserve">The ::key-cancelled signal is emitted each time a key in @keyboard
is shifted to the cancelled state.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve">an #EekKey</doc>
            <type name="Key"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="key-locked" when="last">
        <doc xml:space="preserve">The ::key-locked signal is emitted each time a key in @keyboard
is shifted to the locked state.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve">an #EekKey</doc>
            <type name="Key"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="key-pressed" when="last">
        <doc xml:space="preserve">The ::key-pressed signal is emitted each time a key in @keyboard
is shifted to the pressed state.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve">an #EekKey</doc>
            <type name="Key"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="key-released" when="last">
        <doc xml:space="preserve">The ::key-released signal is emitted each time a key in @keyboard
is shifted to the released state.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve">an #EekKey</doc>
            <type name="Key"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="key-unlocked" when="last">
        <doc xml:space="preserve">The ::key-unlocked signal is emitted each time a key in @keyboard
is shifted to the unlocked state.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve">an #EekKey</doc>
            <type name="Key"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="KeyboardClass"
            c:type="EekKeyboardClass"
            glib:is-gtype-struct-for="Keyboard">
      <field name="parent_class" readable="0" private="1">
        <type name="ContainerClass" c:type="EekContainerClass"/>
      </field>
      <field name="set_symbol_index" readable="0" private="1">
        <type name="gpointer" c:type="gpointer"/>
      </field>
      <field name="get_symbol_index" readable="0" private="1">
        <type name="gpointer" c:type="gpointer"/>
      </field>
      <field name="create_section" introspectable="0">
        <callback name="create_section" introspectable="0">
          <return-value>
            <type name="Section" c:type="EekSection*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Keyboard" c:type="EekKeyboard*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="find_key_by_keycode">
        <callback name="find_key_by_keycode">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">#EekKey whose keycode is @keycode</doc>
            <type name="Key" c:type="EekKey*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Keyboard" c:type="EekKeyboard*"/>
            </parameter>
            <parameter name="keycode" transfer-ownership="none">
              <doc xml:space="preserve">a keycode</doc>
              <type name="guint" c:type="guint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="key_pressed">
        <callback name="key_pressed">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Keyboard" c:type="EekKeyboard*"/>
            </parameter>
            <parameter name="key" transfer-ownership="none">
              <type name="Key" c:type="EekKey*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="key_released">
        <callback name="key_released">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Keyboard" c:type="EekKeyboard*"/>
            </parameter>
            <parameter name="key" transfer-ownership="none">
              <type name="Key" c:type="EekKey*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="symbol_index_changed" readable="0" private="1">
        <type name="gpointer" c:type="gpointer"/>
      </field>
      <field name="key_locked">
        <callback name="key_locked">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Keyboard" c:type="EekKeyboard*"/>
            </parameter>
            <parameter name="key" transfer-ownership="none">
              <type name="Key" c:type="EekKey*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="key_unlocked">
        <callback name="key_unlocked">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Keyboard" c:type="EekKeyboard*"/>
            </parameter>
            <parameter name="key" transfer-ownership="none">
              <type name="Key" c:type="EekKey*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="key_cancelled">
        <callback name="key_cancelled">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Keyboard" c:type="EekKeyboard*"/>
            </parameter>
            <parameter name="key" transfer-ownership="none">
              <type name="Key" c:type="EekKey*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="pdummy" readable="0" private="1">
        <array zero-terminated="0" c:type="gpointer" fixed-size="21">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <record name="KeyboardPrivate" c:type="EekKeyboardPrivate" disguised="1">
    </record>
    <class name="Keysym"
           c:symbol-prefix="keysym"
           c:type="EekKeysym"
           parent="Symbol"
           glib:type-name="EekKeysym"
           glib:get-type="eek_keysym_get_type"
           glib:type-struct="KeysymClass">
      <doc xml:space="preserve">The #EekKeysym structure contains only private data and should only
be accessed using the provided API.</doc>
      <implements name="Serializable"/>
      <constructor name="new" c:identifier="eek_keysym_new">
        <doc xml:space="preserve">Create an #EekKeysym with given X keysym value @xkeysym.</doc>
        <return-value transfer-ownership="full">
          <type name="Keysym" c:type="EekKeysym*"/>
        </return-value>
        <parameters>
          <parameter name="xkeysym" transfer-ownership="none">
            <doc xml:space="preserve">an X keysym value</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_from_name"
                   c:identifier="eek_keysym_new_from_name">
        <doc xml:space="preserve">Create an #EekKeysym with an X keysym value looked up by @name.</doc>
        <return-value transfer-ownership="full">
          <type name="Keysym" c:type="EekKeysym*"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">an X keysym name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_with_modifier"
                   c:identifier="eek_keysym_new_with_modifier">
        <doc xml:space="preserve">Create an #EekKeysym with given X keysym value @xkeysym and
modifier @modifier_mask.</doc>
        <return-value transfer-ownership="full">
          <type name="Keysym" c:type="EekKeysym*"/>
        </return-value>
        <parameters>
          <parameter name="xkeysym" transfer-ownership="none">
            <doc xml:space="preserve">an X keysym value</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="modifier_mask" transfer-ownership="none">
            <doc xml:space="preserve">modifier assigned to @xkeysym</doc>
            <type name="ModifierType" c:type="EekModifierType"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="get_xkeysym" c:identifier="eek_keysym_get_xkeysym">
        <doc xml:space="preserve">Get an X keysym value associated with @keysym</doc>
        <return-value transfer-ownership="none">
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="keysym" transfer-ownership="none">
            <doc xml:space="preserve">an #EekKeysym</doc>
            <type name="Keysym" c:type="EekKeysym*"/>
          </instance-parameter>
        </parameters>
      </method>
      <field name="parent" readable="0" private="1">
        <type name="Symbol" c:type="EekSymbol"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="KeysymPrivate" c:type="EekKeysymPrivate*"/>
      </field>
    </class>
    <record name="KeysymClass"
            c:type="EekKeysymClass"
            glib:is-gtype-struct-for="Keysym">
      <field name="parent_class" readable="0" private="1">
        <type name="SymbolClass" c:type="EekSymbolClass"/>
      </field>
    </record>
    <record name="KeysymPrivate" c:type="EekKeysymPrivate" disguised="1">
    </record>
    <constant name="LAYOUT_H" value="1" c:type="EEK_LAYOUT_H">
      <type name="gint" c:type="gint"/>
    </constant>
    <class name="Layout"
           c:symbol-prefix="layout"
           c:type="EekLayout"
           parent="GObject.Object"
           abstract="1"
           glib:type-name="EekLayout"
           glib:get-type="eek_layout_get_type"
           glib:type-struct="LayoutClass">
      <virtual-method name="create_keyboard" introspectable="0">
        <return-value>
          <type name="Keyboard" c:type="EekKeyboard*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Layout" c:type="EekLayout*"/>
          </instance-parameter>
          <parameter name="initial_width" transfer-ownership="none">
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="initial_height" transfer-ownership="none">
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
        </parameters>
      </virtual-method>
      <field name="parent" readable="0" private="1">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
    </class>
    <record name="LayoutClass"
            c:type="EekLayoutClass"
            glib:is-gtype-struct-for="Layout">
      <field name="parent_class" readable="0" private="1">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="create_keyboard" introspectable="0">
        <callback name="create_keyboard" introspectable="0">
          <return-value>
            <type name="Keyboard" c:type="EekKeyboard*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Layout" c:type="EekLayout*"/>
            </parameter>
            <parameter name="initial_width" transfer-ownership="none">
              <type name="gdouble" c:type="gdouble"/>
            </parameter>
            <parameter name="initial_height" transfer-ownership="none">
              <type name="gdouble" c:type="gdouble"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="pdummy" readable="0" private="1">
        <array zero-terminated="0" c:type="gpointer" fixed-size="24">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <enumeration name="ModifierBehavior"
                 glib:type-name="EekModifierBehavior"
                 glib:get-type="eek_modifier_behavior_get_type"
                 c:type="EekModifierBehavior">
      <doc xml:space="preserve">Modifier handling mode.</doc>
      <member name="none"
              value="0"
              c:identifier="EEK_MODIFIER_BEHAVIOR_NONE"
              glib:nick="none">
        <doc xml:space="preserve">do nothing when a modifier key is pressed</doc>
      </member>
      <member name="lock"
              value="1"
              c:identifier="EEK_MODIFIER_BEHAVIOR_LOCK"
              glib:nick="lock">
        <doc xml:space="preserve">toggle the modifier status each time a
modifier key are pressed</doc>
      </member>
      <member name="latch"
              value="2"
              c:identifier="EEK_MODIFIER_BEHAVIOR_LATCH"
              glib:nick="latch">
        <doc xml:space="preserve">enable the modifier when a modifier
key is pressed and keep it enabled until any key is pressed.</doc>
      </member>
    </enumeration>
    <record name="ModifierKey" c:type="EekModifierKey">
      <doc xml:space="preserve">Entry which associates modifier mask to a key.  This is returned by
eek_keyboard_get_locked_keys().</doc>
      <field name="modifiers" writable="1">
        <doc xml:space="preserve">an #EekModifierType which @key triggers</doc>
        <type name="ModifierType" c:type="EekModifierType"/>
      </field>
      <field name="key" writable="1">
        <doc xml:space="preserve">an #EekKey</doc>
        <type name="Key" c:type="EekKey*"/>
      </field>
      <method name="copy"
              c:identifier="eek_modifier_key_copy"
              introspectable="0">
        <return-value>
          <type name="ModifierKey" c:type="EekModifierKey*"/>
        </return-value>
        <parameters>
          <instance-parameter name="modkey" transfer-ownership="none">
            <type name="ModifierKey" c:type="EekModifierKey*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free" c:identifier="eek_modifier_key_free">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="modkey" transfer-ownership="none">
            <type name="ModifierKey" c:type="EekModifierKey*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <bitfield name="ModifierType"
              glib:type-name="EekModifierType"
              glib:get-type="eek_modifier_type_get_type"
              c:type="EekModifierType">
      <member name="shift_mask"
              value="1"
              c:identifier="EEK_SHIFT_MASK"
              glib:nick="shift-mask">
        <doc xml:space="preserve">the Shift key.</doc>
      </member>
      <member name="lock_mask"
              value="2"
              c:identifier="EEK_LOCK_MASK"
              glib:nick="lock-mask">
        <doc xml:space="preserve">a Lock key (depending on the modifier mapping of the
 X server this may either be CapsLock or ShiftLock).</doc>
      </member>
      <member name="control_mask"
              value="4"
              c:identifier="EEK_CONTROL_MASK"
              glib:nick="control-mask">
        <doc xml:space="preserve">the Control key.</doc>
      </member>
      <member name="mod1_mask"
              value="8"
              c:identifier="EEK_MOD1_MASK"
              glib:nick="mod1-mask">
        <doc xml:space="preserve">the fourth modifier key (it depends on the modifier
 mapping of the X server which key is interpreted as this modifier, but
 normally it is the Alt key).</doc>
      </member>
      <member name="mod2_mask"
              value="16"
              c:identifier="EEK_MOD2_MASK"
              glib:nick="mod2-mask">
        <doc xml:space="preserve">the fifth modifier key (it depends on the modifier
 mapping of the X server which key is interpreted as this modifier).</doc>
      </member>
      <member name="mod3_mask"
              value="32"
              c:identifier="EEK_MOD3_MASK"
              glib:nick="mod3-mask">
        <doc xml:space="preserve">the sixth modifier key (it depends on the modifier
 mapping of the X server which key is interpreted as this modifier).</doc>
      </member>
      <member name="mod4_mask"
              value="64"
              c:identifier="EEK_MOD4_MASK"
              glib:nick="mod4-mask">
        <doc xml:space="preserve">the seventh modifier key (it depends on the modifier
 mapping of the X server which key is interpreted as this modifier).</doc>
      </member>
      <member name="mod5_mask"
              value="128"
              c:identifier="EEK_MOD5_MASK"
              glib:nick="mod5-mask">
        <doc xml:space="preserve">the eighth modifier key (it depends on the modifier
 mapping of the X server which key is interpreted as this modifier).</doc>
      </member>
      <member name="button1_mask"
              value="256"
              c:identifier="EEK_BUTTON1_MASK"
              glib:nick="button1-mask">
        <doc xml:space="preserve">the first mouse button.</doc>
      </member>
      <member name="button2_mask"
              value="512"
              c:identifier="EEK_BUTTON2_MASK"
              glib:nick="button2-mask">
        <doc xml:space="preserve">the second mouse button.</doc>
      </member>
      <member name="button3_mask"
              value="1024"
              c:identifier="EEK_BUTTON3_MASK"
              glib:nick="button3-mask">
        <doc xml:space="preserve">the third mouse button.</doc>
      </member>
      <member name="button4_mask"
              value="2048"
              c:identifier="EEK_BUTTON4_MASK"
              glib:nick="button4-mask">
        <doc xml:space="preserve">the fourth mouse button.</doc>
      </member>
      <member name="button5_mask"
              value="4096"
              c:identifier="EEK_BUTTON5_MASK"
              glib:nick="button5-mask">
        <doc xml:space="preserve">the fifth mouse button.</doc>
      </member>
      <member name="super_mask"
              value="67108864"
              c:identifier="EEK_SUPER_MASK"
              glib:nick="super-mask">
        <doc xml:space="preserve">the Super modifier. Since 2.10</doc>
      </member>
      <member name="hyper_mask"
              value="134217728"
              c:identifier="EEK_HYPER_MASK"
              glib:nick="hyper-mask">
        <doc xml:space="preserve">the Hyper modifier. Since 2.10</doc>
      </member>
      <member name="meta_mask"
              value="268435456"
              c:identifier="EEK_META_MASK"
              glib:nick="meta-mask">
        <doc xml:space="preserve">the Meta modifier. Since 2.10</doc>
      </member>
      <member name="release_mask"
              value="1073741824"
              c:identifier="EEK_RELEASE_MASK"
              glib:nick="release-mask">
        <doc xml:space="preserve">not used in EEK itself. GTK+ uses it to differentiate
 between (keyval, modifiers) pairs from key press and release events.</doc>
      </member>
      <member name="modifier_mask"
              value="1543512063"
              c:identifier="EEK_MODIFIER_MASK"
              glib:nick="modifier-mask">
        <doc xml:space="preserve">a mask covering all modifier types.</doc>
      </member>
    </bitfield>
    <enumeration name="Orientation"
                 glib:type-name="EekOrientation"
                 glib:get-type="eek_orientation_get_type"
                 c:type="EekOrientation">
      <doc xml:space="preserve">Orientation of rows in sections.  Elements in a row will be
arranged with the specified orientation.</doc>
      <member name="vertical"
              value="0"
              c:identifier="EEK_ORIENTATION_VERTICAL"
              glib:nick="vertical">
        <doc xml:space="preserve">the elements will be arranged vertically</doc>
      </member>
      <member name="horizontal"
              value="1"
              c:identifier="EEK_ORIENTATION_HORIZONTAL"
              glib:nick="horizontal">
        <doc xml:space="preserve">the elements will be arranged horizontally</doc>
      </member>
      <member name="invalid"
              value="-1"
              c:identifier="EEK_ORIENTATION_INVALID"
              glib:nick="invalid">
        <doc xml:space="preserve">used for error reporting</doc>
      </member>
    </enumeration>
    <record name="Outline"
            c:type="EekOutline"
            glib:type-name="EekOutline"
            glib:get-type="eek_outline_get_type"
            c:symbol-prefix="outline">
      <doc xml:space="preserve">2D rounded polygon used to draw key shape</doc>
      <field name="corner_radius" writable="1">
        <doc xml:space="preserve">radius of corners of rounded polygon</doc>
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="points" writable="1">
        <doc xml:space="preserve">an array of points represents a polygon</doc>
        <type name="Point" c:type="EekPoint*"/>
      </field>
      <field name="num_points" writable="1">
        <doc xml:space="preserve">the length of @points</doc>
        <type name="gint" c:type="gint"/>
      </field>
      <method name="copy" c:identifier="eek_outline_copy">
        <return-value transfer-ownership="full">
          <type name="Outline" c:type="EekOutline*"/>
        </return-value>
        <parameters>
          <instance-parameter name="outline" transfer-ownership="none">
            <type name="Outline" c:type="const EekOutline*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free" c:identifier="eek_outline_free">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="outline" transfer-ownership="none">
            <type name="Outline" c:type="EekOutline*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <record name="Point"
            c:type="EekPoint"
            glib:type-name="EekPoint"
            glib:get-type="eek_point_get_type"
            c:symbol-prefix="point">
      <doc xml:space="preserve">2D vertex</doc>
      <field name="x" writable="1">
        <doc xml:space="preserve">X coordinate of the point</doc>
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <field name="y" writable="1">
        <doc xml:space="preserve">Y coordinate of the point</doc>
        <type name="gdouble" c:type="gdouble"/>
      </field>
      <method name="copy" c:identifier="eek_point_copy">
        <return-value transfer-ownership="full">
          <type name="Point" c:type="EekPoint*"/>
        </return-value>
        <parameters>
          <instance-parameter name="point" transfer-ownership="none">
            <type name="Point" c:type="const EekPoint*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free" c:identifier="eek_point_free">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="point" transfer-ownership="none">
            <type name="Point" c:type="EekPoint*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="rotate" c:identifier="eek_point_rotate">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="point" transfer-ownership="none">
            <type name="Point" c:type="EekPoint*"/>
          </instance-parameter>
          <parameter name="angle" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
    </record>
    <constant name="SECTION_H" value="1" c:type="EEK_SECTION_H">
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="SERIALIZABLE_H" value="1" c:type="EEK_SERIALIZABLE_H">
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="SYMBOL_H" value="1" c:type="EEK_SYMBOL_H">
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="SYMBOL_MATRIX_H" value="1" c:type="EEK_SYMBOL_MATRIX_H">
      <type name="gint" c:type="gint"/>
    </constant>
    <class name="Section"
           c:symbol-prefix="section"
           c:type="EekSection"
           parent="Container"
           glib:type-name="EekSection"
           glib:get-type="eek_section_get_type"
           glib:type-struct="SectionClass">
      <doc xml:space="preserve">The #EekSection structure contains only private data and should
only be accessed using the provided API.</doc>
      <virtual-method name="add_row" invoker="add_row">
        <doc xml:space="preserve">Add a row which has @num_columns columns and whose orientation is
@orientation to @section.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Section" c:type="EekSection*"/>
          </instance-parameter>
          <parameter name="num_columns" transfer-ownership="none">
            <doc xml:space="preserve">the number of column in the row</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="orientation" transfer-ownership="none">
            <doc xml:space="preserve">#EekOrientation of the row</doc>
            <type name="Orientation" c:type="EekOrientation"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="create_key"
                      invoker="create_key"
                      introspectable="0">
        <doc xml:space="preserve">Create an #EekKey instance and append it to @section.  This
function is rarely called by application but called by #EekLayout
implementation.</doc>
        <return-value>
          <type name="Key" c:type="EekKey*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Section" c:type="EekSection*"/>
          </instance-parameter>
          <parameter name="keycode" transfer-ownership="none">
            <doc xml:space="preserve">a keycode</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="row" transfer-ownership="none">
            <doc xml:space="preserve">the row index of the key</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="column" transfer-ownership="none">
            <doc xml:space="preserve">the column index of the key</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_n_rows" invoker="get_n_rows">
        <doc xml:space="preserve">Get the number of rows in @section.</doc>
        <return-value transfer-ownership="none">
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Section" c:type="EekSection*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_row" invoker="get_row">
        <doc xml:space="preserve">Get the information about the @index-th row in @section.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Section" c:type="EekSection*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve">the index of row</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="num_columns" transfer-ownership="none">
            <doc xml:space="preserve">pointer where the number of column in the row will be stored</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="orientation" transfer-ownership="none">
            <doc xml:space="preserve">pointer where #EekOrientation of the row will be stored</doc>
            <type name="Orientation" c:type="EekOrientation*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="key_cancelled">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Section" c:type="EekSection*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <type name="Key" c:type="EekKey*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="key_locked">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Section" c:type="EekSection*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <type name="Key" c:type="EekKey*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="key_pressed">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Section" c:type="EekSection*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <type name="Key" c:type="EekKey*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="key_released">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Section" c:type="EekSection*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <type name="Key" c:type="EekKey*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="key_unlocked">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Section" c:type="EekSection*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <type name="Key" c:type="EekKey*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="add_row" c:identifier="eek_section_add_row">
        <doc xml:space="preserve">Add a row which has @num_columns columns and whose orientation is
@orientation to @section.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="section" transfer-ownership="none">
            <doc xml:space="preserve">an #EekSection</doc>
            <type name="Section" c:type="EekSection*"/>
          </instance-parameter>
          <parameter name="num_columns" transfer-ownership="none">
            <doc xml:space="preserve">the number of column in the row</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="orientation" transfer-ownership="none">
            <doc xml:space="preserve">#EekOrientation of the row</doc>
            <type name="Orientation" c:type="EekOrientation"/>
          </parameter>
        </parameters>
      </method>
      <method name="create_key"
              c:identifier="eek_section_create_key"
              introspectable="0">
        <doc xml:space="preserve">Create an #EekKey instance and append it to @section.  This
function is rarely called by application but called by #EekLayout
implementation.</doc>
        <return-value>
          <type name="Key" c:type="EekKey*"/>
        </return-value>
        <parameters>
          <instance-parameter name="section" transfer-ownership="none">
            <doc xml:space="preserve">an #EekSection</doc>
            <type name="Section" c:type="EekSection*"/>
          </instance-parameter>
          <parameter name="keycode" transfer-ownership="none">
            <doc xml:space="preserve">a keycode</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="column" transfer-ownership="none">
            <doc xml:space="preserve">the column index of the key</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="row" transfer-ownership="none">
            <doc xml:space="preserve">the row index of the key</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="find_key_by_keycode"
              c:identifier="eek_section_find_key_by_keycode"
              introspectable="0">
        <return-value>
          <type name="Key" c:type="EekKey*"/>
        </return-value>
        <parameters>
          <instance-parameter name="section" transfer-ownership="none">
            <type name="Section" c:type="EekSection*"/>
          </instance-parameter>
          <parameter name="keycode" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_angle" c:identifier="eek_section_get_angle">
        <doc xml:space="preserve">Get rotation angle of @section.</doc>
        <return-value transfer-ownership="none">
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="section" transfer-ownership="none">
            <doc xml:space="preserve">an #EekSection</doc>
            <type name="Section" c:type="EekSection*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_n_rows" c:identifier="eek_section_get_n_rows">
        <doc xml:space="preserve">Get the number of rows in @section.</doc>
        <return-value transfer-ownership="none">
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="section" transfer-ownership="none">
            <doc xml:space="preserve">an #EekSection</doc>
            <type name="Section" c:type="EekSection*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_row" c:identifier="eek_section_get_row">
        <doc xml:space="preserve">Get the information about the @index-th row in @section.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="section" transfer-ownership="none">
            <doc xml:space="preserve">an #EekSection</doc>
            <type name="Section" c:type="EekSection*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve">the index of row</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="num_columns" transfer-ownership="none">
            <doc xml:space="preserve">pointer where the number of column in the row will be stored</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="orientation" transfer-ownership="none">
            <doc xml:space="preserve">pointer where #EekOrientation of the row will be stored</doc>
            <type name="Orientation" c:type="EekOrientation*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_angle" c:identifier="eek_section_set_angle">
        <doc xml:space="preserve">Set rotation angle of @section to @angle.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="section" transfer-ownership="none">
            <doc xml:space="preserve">an #EekSection</doc>
            <type name="Section" c:type="EekSection*"/>
          </instance-parameter>
          <parameter name="angle" transfer-ownership="none">
            <doc xml:space="preserve">rotation angle</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <property name="angle" writable="1" transfer-ownership="none">
        <doc xml:space="preserve">The rotation angle of #EekSection.</doc>
        <type name="gint" c:type="gint"/>
      </property>
      <field name="parent" readable="0" private="1">
        <type name="Container" c:type="EekContainer"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="SectionPrivate" c:type="EekSectionPrivate*"/>
      </field>
      <glib:signal name="key-cancelled" when="last">
        <doc xml:space="preserve">The ::key-cancelled signal is emitted each time a key in @section
is shifted to the cancelled state.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve">an #EekKey</doc>
            <type name="Key"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="key-locked" when="last">
        <doc xml:space="preserve">The ::key-locked signal is emitted each time a key in @section
is shifted to the locked state.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve">an #EekKey</doc>
            <type name="Key"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="key-pressed" when="last">
        <doc xml:space="preserve">The ::key-pressed signal is emitted each time a key in @section
is shifted to the pressed state.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve">an #EekKey</doc>
            <type name="Key"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="key-released" when="last">
        <doc xml:space="preserve">The ::key-released signal is emitted each time a key in @section
is shifted to the released state.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve">an #EekKey</doc>
            <type name="Key"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="key-unlocked" when="last">
        <doc xml:space="preserve">The ::key-unlocked signal is emitted each time a key in @section
is shifted to the unlocked state.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve">an #EekKey</doc>
            <type name="Key"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="SectionClass"
            c:type="EekSectionClass"
            glib:is-gtype-struct-for="Section">
      <field name="parent_class" readable="0" private="1">
        <type name="ContainerClass" c:type="EekContainerClass"/>
      </field>
      <field name="get_n_rows">
        <callback name="get_n_rows">
          <return-value transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Section" c:type="EekSection*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="add_row">
        <callback name="add_row">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Section" c:type="EekSection*"/>
            </parameter>
            <parameter name="num_columns" transfer-ownership="none">
              <doc xml:space="preserve">the number of column in the row</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="orientation" transfer-ownership="none">
              <doc xml:space="preserve">#EekOrientation of the row</doc>
              <type name="Orientation" c:type="EekOrientation"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_row">
        <callback name="get_row">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Section" c:type="EekSection*"/>
            </parameter>
            <parameter name="index" transfer-ownership="none">
              <doc xml:space="preserve">the index of row</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="num_columns" transfer-ownership="none">
              <doc xml:space="preserve">pointer where the number of column in the row will be stored</doc>
              <type name="gint" c:type="gint*"/>
            </parameter>
            <parameter name="orientation" transfer-ownership="none">
              <doc xml:space="preserve">pointer where #EekOrientation of the row will be stored</doc>
              <type name="Orientation" c:type="EekOrientation*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="create_key" introspectable="0">
        <callback name="create_key" introspectable="0">
          <return-value>
            <type name="Key" c:type="EekKey*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Section" c:type="EekSection*"/>
            </parameter>
            <parameter name="keycode" transfer-ownership="none">
              <doc xml:space="preserve">a keycode</doc>
              <type name="guint" c:type="guint"/>
            </parameter>
            <parameter name="row" transfer-ownership="none">
              <doc xml:space="preserve">the row index of the key</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="column" transfer-ownership="none">
              <doc xml:space="preserve">the column index of the key</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="key_pressed">
        <callback name="key_pressed">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Section" c:type="EekSection*"/>
            </parameter>
            <parameter name="key" transfer-ownership="none">
              <type name="Key" c:type="EekKey*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="key_released">
        <callback name="key_released">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Section" c:type="EekSection*"/>
            </parameter>
            <parameter name="key" transfer-ownership="none">
              <type name="Key" c:type="EekKey*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="key_locked">
        <callback name="key_locked">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Section" c:type="EekSection*"/>
            </parameter>
            <parameter name="key" transfer-ownership="none">
              <type name="Key" c:type="EekKey*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="key_unlocked">
        <callback name="key_unlocked">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Section" c:type="EekSection*"/>
            </parameter>
            <parameter name="key" transfer-ownership="none">
              <type name="Key" c:type="EekKey*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="key_cancelled">
        <callback name="key_cancelled">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Section" c:type="EekSection*"/>
            </parameter>
            <parameter name="key" transfer-ownership="none">
              <type name="Key" c:type="EekKey*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="pdummy" readable="0" private="1">
        <array zero-terminated="0" c:type="gpointer" fixed-size="19">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <record name="SectionPrivate" c:type="EekSectionPrivate" disguised="1">
    </record>
    <interface name="Serializable"
               c:symbol-prefix="serializable"
               c:type="EekSerializable"
               glib:type-name="EekSerializable"
               glib:get-type="eek_serializable_get_type"
               glib:type-struct="SerializableIface">
      <function name="deserialize"
                c:identifier="eek_serializable_deserialize"
                introspectable="0">
        <return-value>
          <type name="Serializable" c:type="EekSerializable*"/>
        </return-value>
        <parameters>
          <parameter name="variant" transfer-ownership="none">
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
        </parameters>
      </function>
      <virtual-method name="deserialize">
        <return-value transfer-ownership="none">
          <type name="gsize" c:type="gsize"/>
        </return-value>
        <parameters>
          <instance-parameter name="object" transfer-ownership="none">
            <type name="Serializable" c:type="EekSerializable*"/>
          </instance-parameter>
          <parameter name="variant" transfer-ownership="none">
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
          <parameter name="index" transfer-ownership="none">
            <type name="gsize" c:type="gsize"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="serialize">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="object" transfer-ownership="none">
            <type name="Serializable" c:type="EekSerializable*"/>
          </instance-parameter>
          <parameter name="builder" transfer-ownership="none">
            <type name="GLib.VariantBuilder" c:type="GVariantBuilder*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="serialize" c:identifier="eek_serializable_serialize">
        <return-value transfer-ownership="full">
          <type name="GLib.Variant" c:type="GVariant*"/>
        </return-value>
        <parameters>
          <instance-parameter name="object" transfer-ownership="none">
            <type name="Serializable" c:type="EekSerializable*"/>
          </instance-parameter>
        </parameters>
      </method>
    </interface>
    <record name="SerializableIface"
            c:type="EekSerializableIface"
            glib:is-gtype-struct-for="Serializable">
      <field name="parent_iface" readable="0" private="1">
        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
      </field>
      <field name="serialize">
        <callback name="serialize">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="object" transfer-ownership="none">
              <type name="Serializable" c:type="EekSerializable*"/>
            </parameter>
            <parameter name="builder" transfer-ownership="none">
              <type name="GLib.VariantBuilder" c:type="GVariantBuilder*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="deserialize">
        <callback name="deserialize">
          <return-value transfer-ownership="none">
            <type name="gsize" c:type="gsize"/>
          </return-value>
          <parameters>
            <parameter name="object" transfer-ownership="none">
              <type name="Serializable" c:type="EekSerializable*"/>
            </parameter>
            <parameter name="variant" transfer-ownership="none">
              <type name="GLib.Variant" c:type="GVariant*"/>
            </parameter>
            <parameter name="index" transfer-ownership="none">
              <type name="gsize" c:type="gsize"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="pdummy" readable="0" private="1">
        <array zero-terminated="0" c:type="gpointer" fixed-size="24">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <class name="Symbol"
           c:symbol-prefix="symbol"
           c:type="EekSymbol"
           parent="GObject.Object"
           glib:type-name="EekSymbol"
           glib:get-type="eek_symbol_get_type"
           glib:type-struct="SymbolClass">
      <doc xml:space="preserve">The #EekSymbol structure contains only private data and should only
be accessed using the provided API.</doc>
      <implements name="Serializable"/>
      <constructor name="new" c:identifier="eek_symbol_new">
        <doc xml:space="preserve">Create a new #EekSymbol with @name.</doc>
        <return-value transfer-ownership="full">
          <type name="Symbol" c:type="EekSymbol*"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">name of the symbol</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="get_category" c:identifier="eek_symbol_get_category">
        <doc xml:space="preserve">Get symbol category of @symbol.</doc>
        <return-value transfer-ownership="none">
          <type name="SymbolCategory" c:type="EekSymbolCategory"/>
        </return-value>
        <parameters>
          <instance-parameter name="symbol" transfer-ownership="none">
            <doc xml:space="preserve">an #EekSymbol</doc>
            <type name="Symbol" c:type="EekSymbol*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_icon_name" c:identifier="eek_symbol_get_icon_name">
        <doc xml:space="preserve">Get the icon name of @symbol.</doc>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="symbol" transfer-ownership="none">
            <doc xml:space="preserve">an #EekSymbol</doc>
            <type name="Symbol" c:type="EekSymbol*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_label" c:identifier="eek_symbol_get_label">
        <doc xml:space="preserve">Get the label text of @symbol.</doc>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="symbol" transfer-ownership="none">
            <doc xml:space="preserve">an #EekSymbol</doc>
            <type name="Symbol" c:type="EekSymbol*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_modifier_mask"
              c:identifier="eek_symbol_get_modifier_mask">
        <doc xml:space="preserve">Get modifier mask that @symbol can trigger.</doc>
        <return-value transfer-ownership="none">
          <type name="ModifierType" c:type="EekModifierType"/>
        </return-value>
        <parameters>
          <instance-parameter name="symbol" transfer-ownership="none">
            <doc xml:space="preserve">an #EekSymbol</doc>
            <type name="Symbol" c:type="EekSymbol*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_name" c:identifier="eek_symbol_get_name">
        <doc xml:space="preserve">Get the name of @symbol.</doc>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="symbol" transfer-ownership="none">
            <doc xml:space="preserve">an #EekSymbol</doc>
            <type name="Symbol" c:type="EekSymbol*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_tooltip" c:identifier="eek_symbol_get_tooltip">
        <doc xml:space="preserve">Get the tooltip text of @symbol.</doc>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="symbol" transfer-ownership="none">
            <doc xml:space="preserve">an #EekSymbol</doc>
            <type name="Symbol" c:type="EekSymbol*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_modifier" c:identifier="eek_symbol_is_modifier">
        <doc xml:space="preserve">Check if @symbol is a modifier.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if @symbol is a modifier.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="symbol" transfer-ownership="none">
            <doc xml:space="preserve">an #EekSymbol</doc>
            <type name="Symbol" c:type="EekSymbol*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_category" c:identifier="eek_symbol_set_category">
        <doc xml:space="preserve">Set symbol category of @symbol to @category.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="symbol" transfer-ownership="none">
            <doc xml:space="preserve">an #EekSymbol</doc>
            <type name="Symbol" c:type="EekSymbol*"/>
          </instance-parameter>
          <parameter name="category" transfer-ownership="none">
            <doc xml:space="preserve">an #EekSymbolCategory</doc>
            <type name="SymbolCategory" c:type="EekSymbolCategory"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_icon_name" c:identifier="eek_symbol_set_icon_name">
        <doc xml:space="preserve">Set the icon name of @symbol to @icon_name.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="symbol" transfer-ownership="none">
            <doc xml:space="preserve">an #EekSymbol</doc>
            <type name="Symbol" c:type="EekSymbol*"/>
          </instance-parameter>
          <parameter name="icon_name" transfer-ownership="none">
            <doc xml:space="preserve">icon name of @symbol</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_label" c:identifier="eek_symbol_set_label">
        <doc xml:space="preserve">Set the label text of @symbol to @label.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="symbol" transfer-ownership="none">
            <doc xml:space="preserve">an #EekSymbol</doc>
            <type name="Symbol" c:type="EekSymbol*"/>
          </instance-parameter>
          <parameter name="label" transfer-ownership="none">
            <doc xml:space="preserve">label text of @symbol</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_modifier_mask"
              c:identifier="eek_symbol_set_modifier_mask">
        <doc xml:space="preserve">Set modifier mask that @symbol can trigger.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="symbol" transfer-ownership="none">
            <doc xml:space="preserve">an #EekSymbol</doc>
            <type name="Symbol" c:type="EekSymbol*"/>
          </instance-parameter>
          <parameter name="mask" transfer-ownership="none">
            <doc xml:space="preserve">an #EekModifierType</doc>
            <type name="ModifierType" c:type="EekModifierType"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_name" c:identifier="eek_symbol_set_name">
        <doc xml:space="preserve">Set the name of @symbol to @name.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="symbol" transfer-ownership="none">
            <doc xml:space="preserve">an #EekSymbol</doc>
            <type name="Symbol" c:type="EekSymbol*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">name of the symbol</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_tooltip" c:identifier="eek_symbol_set_tooltip">
        <doc xml:space="preserve">Set the tooltip text of @symbol to @tooltip.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="symbol" transfer-ownership="none">
            <doc xml:space="preserve">an #EekSymbol</doc>
            <type name="Symbol" c:type="EekSymbol*"/>
          </instance-parameter>
          <parameter name="tooltip" transfer-ownership="none">
            <doc xml:space="preserve">icon name of @symbol</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <property name="category"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="SymbolCategory"/>
      </property>
      <property name="icon-name"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="label"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="modifier-mask"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="ModifierType"/>
      </property>
      <property name="name"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="tooltip"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <field name="parent" readable="0" private="1">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="SymbolPrivate" c:type="EekSymbolPrivate*"/>
      </field>
    </class>
    <enumeration name="SymbolCategory"
                 glib:type-name="EekSymbolCategory"
                 glib:get-type="eek_symbol_category_get_type"
                 c:type="EekSymbolCategory">
      <doc xml:space="preserve">Category of the key symbols.</doc>
      <member name="letter"
              value="0"
              c:identifier="EEK_SYMBOL_CATEGORY_LETTER"
              glib:nick="letter">
        <doc xml:space="preserve">the symbol represents an alphabet letter</doc>
      </member>
      <member name="function"
              value="1"
              c:identifier="EEK_SYMBOL_CATEGORY_FUNCTION"
              glib:nick="function">
        <doc xml:space="preserve">the symbol represents a function</doc>
      </member>
      <member name="keyname"
              value="2"
              c:identifier="EEK_SYMBOL_CATEGORY_KEYNAME"
              glib:nick="keyname">
        <doc xml:space="preserve">the symbol does not have meaning but
have a name</doc>
      </member>
      <member name="user0"
              value="3"
              c:identifier="EEK_SYMBOL_CATEGORY_USER0"
              glib:nick="user0">
        <doc xml:space="preserve">reserved for future use</doc>
      </member>
      <member name="user1"
              value="4"
              c:identifier="EEK_SYMBOL_CATEGORY_USER1"
              glib:nick="user1">
        <doc xml:space="preserve">reserved for future use</doc>
      </member>
      <member name="user2"
              value="5"
              c:identifier="EEK_SYMBOL_CATEGORY_USER2"
              glib:nick="user2">
        <doc xml:space="preserve">reserved for future use</doc>
      </member>
      <member name="user3"
              value="6"
              c:identifier="EEK_SYMBOL_CATEGORY_USER3"
              glib:nick="user3">
        <doc xml:space="preserve">reserved for future use</doc>
      </member>
      <member name="user4"
              value="7"
              c:identifier="EEK_SYMBOL_CATEGORY_USER4"
              glib:nick="user4">
        <doc xml:space="preserve">reserved for future use</doc>
      </member>
      <member name="unknown"
              value="8"
              c:identifier="EEK_SYMBOL_CATEGORY_UNKNOWN"
              glib:nick="unknown">
        <doc xml:space="preserve">used for error reporting</doc>
      </member>
      <member name="last"
              value="8"
              c:identifier="EEK_SYMBOL_CATEGORY_LAST"
              glib:nick="last">
        <doc xml:space="preserve">the last symbol category</doc>
      </member>
      <function name="from_name" c:identifier="eek_symbol_category_from_name">
        <return-value transfer-ownership="none">
          <type name="SymbolCategory" c:type="EekSymbolCategory"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </function>
      <function name="get_name" c:identifier="eek_symbol_category_get_name">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <parameter name="category" transfer-ownership="none">
            <type name="SymbolCategory" c:type="EekSymbolCategory"/>
          </parameter>
        </parameters>
      </function>
    </enumeration>
    <record name="SymbolClass"
            c:type="EekSymbolClass"
            glib:is-gtype-struct-for="Symbol">
      <field name="parent_class" readable="0" private="1">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <record name="SymbolMatrix"
            c:type="EekSymbolMatrix"
            glib:type-name="EekSymbolMatrix"
            glib:get-type="eek_symbol_matrix_get_type"
            c:symbol-prefix="symbol_matrix">
      <doc xml:space="preserve">Symbol matrix of a key.</doc>
      <field name="num_groups" writable="1">
        <doc xml:space="preserve">the number of groups (rows)</doc>
        <type name="gint" c:type="gint"/>
      </field>
      <field name="num_levels" writable="1">
        <doc xml:space="preserve">the number of levels (columns)</doc>
        <type name="gint" c:type="gint"/>
      </field>
      <field name="data" writable="1">
        <doc xml:space="preserve">array of symbols</doc>
        <type name="Symbol" c:type="EekSymbol**"/>
      </field>
      <constructor name="new" c:identifier="eek_symbol_matrix_new">
        <return-value transfer-ownership="full">
          <type name="SymbolMatrix" c:type="EekSymbolMatrix*"/>
        </return-value>
        <parameters>
          <parameter name="num_groups" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="num_levels" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="copy" c:identifier="eek_symbol_matrix_copy">
        <return-value transfer-ownership="full">
          <type name="SymbolMatrix" c:type="EekSymbolMatrix*"/>
        </return-value>
        <parameters>
          <instance-parameter name="matrix" transfer-ownership="none">
            <type name="SymbolMatrix" c:type="const EekSymbolMatrix*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free" c:identifier="eek_symbol_matrix_free">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="matrix" transfer-ownership="none">
            <type name="SymbolMatrix" c:type="EekSymbolMatrix*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_symbol" c:identifier="eek_symbol_matrix_get_symbol">
        <doc xml:space="preserve">Get an #EekSymbol stored in the cell selected by (@group, @level)
in @matrix.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">an #EekSymbol.</doc>
          <type name="Symbol" c:type="EekSymbol*"/>
        </return-value>
        <parameters>
          <instance-parameter name="matrix" transfer-ownership="none">
            <doc xml:space="preserve">an #EekSymbolMatrix</doc>
            <type name="SymbolMatrix" c:type="EekSymbolMatrix*"/>
          </instance-parameter>
          <parameter name="group" transfer-ownership="none">
            <doc xml:space="preserve">group index of @matrix</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="level" transfer-ownership="none">
            <doc xml:space="preserve">level index of @matrix</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_symbol" c:identifier="eek_symbol_matrix_set_symbol">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="matrix" transfer-ownership="none">
            <type name="SymbolMatrix" c:type="EekSymbolMatrix*"/>
          </instance-parameter>
          <parameter name="group" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="level" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="symbol" transfer-ownership="none">
            <type name="Symbol" c:type="EekSymbol*"/>
          </parameter>
        </parameters>
      </method>
    </record>
    <record name="SymbolPrivate" c:type="EekSymbolPrivate" disguised="1">
    </record>
    <constant name="TEXT_H" value="1" c:type="EEK_TEXT_H">
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="TYPES_H" value="1" c:type="EEK_TYPES_H">
      <type name="gint" c:type="gint"/>
    </constant>
    <class name="Text"
           c:symbol-prefix="text"
           c:type="EekText"
           parent="Symbol"
           glib:type-name="EekText"
           glib:get-type="eek_text_get_type"
           glib:type-struct="TextClass">
      <doc xml:space="preserve">The #EekText structure contains only private data and should only
be accessed using the provided API.</doc>
      <implements name="Serializable"/>
      <constructor name="new" c:identifier="eek_text_new">
        <return-value transfer-ownership="full">
          <type name="Text" c:type="EekText*"/>
        </return-value>
        <parameters>
          <parameter name="text" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="get_text" c:identifier="eek_text_get_text">
        <doc xml:space="preserve">Get a text value associated with @text</doc>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="text" transfer-ownership="none">
            <doc xml:space="preserve">an #EekText</doc>
            <type name="Text" c:type="EekText*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="text"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <field name="parent" readable="0" private="1">
        <type name="Symbol" c:type="EekSymbol"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="TextPrivate" c:type="EekTextPrivate*"/>
      </field>
    </class>
    <record name="TextClass"
            c:type="EekTextClass"
            glib:is-gtype-struct-for="Text">
      <field name="parent_class" readable="0" private="1">
        <type name="SymbolClass" c:type="EekSymbolClass"/>
      </field>
    </record>
    <record name="TextPrivate" c:type="EekTextPrivate" disguised="1">
    </record>
    <class name="Theme"
           c:symbol-prefix="theme"
           c:type="EekTheme"
           parent="GObject.Object"
           glib:type-name="EekTheme"
           glib:get-type="eek_theme_get_type"
           glib:type-struct="ThemeClass">
      <constructor name="new" c:identifier="eek_theme_new">
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the newly created theme object</doc>
          <type name="Theme" c:type="EekTheme*"/>
        </return-value>
        <parameters>
          <parameter name="application_stylesheet"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">The highest priority stylesheet, representing application-specific
  styling; this is associated with the CSS "author" stylesheet, may be %NULL</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="theme_stylesheet"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">The second priority stylesheet, representing theme-specific styling ;
  this is associated with the CSS "user" stylesheet, may be %NULL</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="default_stylesheet"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">The lowest priority stylesheet, representing global default styling;
  this is associated with the CSS "user agent" stylesheet, may be %NULL</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="load_stylesheet"
              c:identifier="eek_theme_load_stylesheet"
              throws="1">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="theme" transfer-ownership="none">
            <type name="Theme" c:type="EekTheme*"/>
          </instance-parameter>
          <parameter name="path" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="unload_stylesheet"
              c:identifier="eek_theme_unload_stylesheet">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="theme" transfer-ownership="none">
            <type name="Theme" c:type="EekTheme*"/>
          </instance-parameter>
          <parameter name="path" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <property name="application-stylesheet"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <doc xml:space="preserve">The highest priority stylesheet, representing application-specific
styling; this is associated with the CSS "author" stylesheet.</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="default-stylesheet"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <doc xml:space="preserve">The lowest priority stylesheet, representing global default
styling; this is associated with the CSS "user agent" stylesheet.</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="theme-stylesheet"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <doc xml:space="preserve">The second priority stylesheet, representing theme-specific styling;
this is associated with the CSS "user" stylesheet.</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
    </class>
    <record name="ThemeClass"
            c:type="EekThemeClass"
            disguised="1"
            glib:is-gtype-struct-for="Theme">
    </record>
    <record name="ThemeContext" c:type="EekThemeContext" disguised="1">
    </record>
    <record name="ThemeNode" c:type="EekThemeNode" disguised="1">
    </record>
    <constant name="XML_H" value="1" c:type="EEK_XML_H">
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="XML_LAYOUT_H" value="1" c:type="EEK_XML_LAYOUT_H">
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="XML_SCHEMA_VERSION"
              value="0.90"
              c:type="EEK_XML_SCHEMA_VERSION">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <record name="XmlKeyboardDesc" c:type="EekXmlKeyboardDesc">
      <field name="id" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="name" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="geometry" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="symbols" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="language" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="longname" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <method name="copy"
              c:identifier="eek_xml_keyboard_desc_copy"
              introspectable="0">
        <return-value>
          <type name="XmlKeyboardDesc" c:type="EekXmlKeyboardDesc*"/>
        </return-value>
        <parameters>
          <instance-parameter name="desc" transfer-ownership="none">
            <type name="XmlKeyboardDesc" c:type="EekXmlKeyboardDesc*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free" c:identifier="eek_xml_keyboard_desc_free">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="desc" transfer-ownership="none">
            <type name="XmlKeyboardDesc" c:type="EekXmlKeyboardDesc*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <class name="XmlLayout"
           c:symbol-prefix="xml_layout"
           c:type="EekXmlLayout"
           parent="Layout"
           glib:type-name="EekXmlLayout"
           glib:get-type="eek_xml_layout_get_type"
           glib:type-struct="XmlLayoutClass">
      <doc xml:space="preserve">The #EekXmlLayout structure contains only private data and should
only be accessed using the provided API.</doc>
      <implements name="Gio.Initable"/>
      <constructor name="new" c:identifier="eek_xml_layout_new" throws="1">
        <return-value transfer-ownership="full">
          <type name="Layout" c:type="EekLayout*"/>
        </return-value>
        <parameters>
          <parameter name="id" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <property name="id"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <field name="parent" readable="0" private="1">
        <type name="Layout" c:type="EekLayout"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="XmlLayoutPrivate" c:type="EekXmlLayoutPrivate*"/>
      </field>
    </class>
    <record name="XmlLayoutClass"
            c:type="EekXmlLayoutClass"
            glib:is-gtype-struct-for="XmlLayout">
      <field name="parent_class" readable="0" private="1">
        <type name="LayoutClass" c:type="EekLayoutClass"/>
      </field>
      <field name="pdummy" readable="0" private="1">
        <array zero-terminated="0" c:type="gpointer" fixed-size="24">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <record name="XmlLayoutPrivate" c:type="EekXmlLayoutPrivate" disguised="1">
    </record>
    <function name="error_quark" c:identifier="eek_error_quark">
      <return-value transfer-ownership="none">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="init" c:identifier="eek_init">
      <doc xml:space="preserve">Initialize the Libeek library.  This must be called before using
functions provided by Libeek.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
    </function>
    <function name="symbol_category_from_name"
              c:identifier="eek_symbol_category_from_name"
              moved-to="SymbolCategory.from_name">
      <return-value transfer-ownership="none">
        <type name="SymbolCategory" c:type="EekSymbolCategory"/>
      </return-value>
      <parameters>
        <parameter name="name" transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="symbol_category_get_name"
              c:identifier="eek_symbol_category_get_name"
              moved-to="SymbolCategory.get_name">
      <return-value transfer-ownership="none">
        <type name="utf8" c:type="const gchar*"/>
      </return-value>
      <parameters>
        <parameter name="category" transfer-ownership="none">
          <type name="SymbolCategory" c:type="EekSymbolCategory"/>
        </parameter>
      </parameters>
    </function>
    <function name="xml_list_keyboards" c:identifier="eek_xml_list_keyboards">
      <doc xml:space="preserve">List available keyboards.</doc>
      <return-value transfer-ownership="container">
        <doc xml:space="preserve">the list of keyboards</doc>
        <type name="GLib.List" c:type="GList*">
          <type name="utf8"/>
        </type>
      </return-value>
    </function>
  </namespace>
</repository>
