<Type Name="Keymap" FullName="Gdk.Keymap">
  <TypeSignature Language="C#" Value="public class Keymap : GLib.Object, IWrapper, IDisposable" Maintainer="ct" />
  <AssemblyInfo>
    <AssemblyName>gdk-sharp</AssemblyName>
    <AssemblyVersion>0.0.0.0</AssemblyVersion>
    <Attributes />
  </AssemblyInfo>
  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
  <Docs>
    <summary>Object for keyboard code manipulation</summary>
    <remarks>
      <para>
    Defines translations from keyboard states to a `keyval`. Two phase translation: determine keyboard group and level 
    for keyboard state, then lookup the keycode/group/level triplet in the keymap and get the corresponding keyval.
    Keycode is the hardware/keyboard code for that key. Keygroup is used for language and horizontal tracking [ "group 1" is english, 
    "group 2" is hebrew]. Keylevel is used to track letter case/alternate representation and vertical movement [ level 0 is "a", 
    level 1 is "A" ; alternately, level 0 is "1" and level 1 is "!" ].
    </para>
    </remarks>
  </Docs>
  <Base>
    <BaseTypeName>GLib.Object</BaseTypeName>
  </Base>
  <Interfaces>
    <Interface>
      <InterfaceName>GLib.IWrapper</InterfaceName>
    </Interface>
    <Interface>
      <InterfaceName>System.IDisposable</InterfaceName>
    </Interface>
  </Interfaces>
  <Attributes />
  <Members>
    <Member MemberName="GetEntriesForKeyval">
      <MemberSignature Language="C#" Value="public bool GetEntriesForKeyval (uint keyval, Gdk.KeymapKey keys, int n_keys);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Boolean</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="keyval" Type="System.UInt32" />
        <Parameter Name="keys" Type="Gdk.KeymapKey" />
        <Parameter Name="n_keys" Type="System.Int32" />
      </Parameters>
      <Docs>
        <summary>
        Gets a list of keycode/group/level combinations that generate a `keyval`. 
        The returned list is stored in the `Gdk.KeymapKey keys` parameter/reference. 
        `uint keyval` is the final value for the combinations being collected.
        `int n_keys` is the total number of combinations found and returned in `Gdk.KeymapKey keys`.
        Level determining the top/bottom symbol and group determining the left/right symbol. 
        On US keyboards, shift changes level and there are no groups. Group can determine language mode, for example, Hebrew/English.
        </summary>
        <param name="keyval">An object of type 'uint', such as GDK_a, GDK_up, GDK_RETURN, etc.</param>
        <param name="keys">An object of type 'Gdk.KeymapKey', the list of key sequences.</param>
        <param name="n_keys">An object of type 'int', number of elements returned.</param>
        <returns>An object of type 'bool', returns true if keys were found and returned.</returns>
        <remarks>
        None
        </remarks>
      </Docs>
    </Member>
    <Member MemberName="GetEntriesForKeycode">
      <MemberSignature Language="C#" Value="public bool GetEntriesForKeycode (uint hardware_keycode, Gdk.KeymapKey keys, uint keyvals, int n_entries);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Boolean</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="hardware_keycode" Type="System.UInt32" />
        <Parameter Name="keys" Type="Gdk.KeymapKey" />
        <Parameter Name="keyvals" Type="System.UInt32" />
        <Parameter Name="n_entries" Type="System.Int32" />
      </Parameters>
      <Docs>
        <summary>
        Stores in `Gdk.KeymapKey keys` a reference to a list of the keys bound to `hardware_keycode`. The nth Gdk.KeymapKey in `keys` is associated
        with the nth keyval in `keyvals`. When a keycode is pressed by the user, the keyval from `keys` is selected.
        </summary>
        <param name="hardware_keycode">An object of type 'uint', a keyboard code</param>
        <param name="keys">An object of type 'Gdk.KeymapKey', return reference for the list of keys</param>
        <param name="keyvals">An object of type 'uint', return reference for the list of corresponding keyvals for `keys`</param>
        <param name="n_entries">An object of type 'int', number of values stored in `keys` and `keyvals`</param>
        <returns>An object of type 'bool', true if entries were found.</returns>
        <remarks>
        None
        </remarks>
      </Docs>
    </Member>
    <Member MemberName="LookupKey">
      <MemberSignature Language="C#" Value="public uint LookupKey (Gdk.KeymapKey key);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.UInt32</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="key" Type="Gdk.KeymapKey" />
      </Parameters>
      <Docs>
        <summary>
        Looks up a keyval mapped to a keycode/group/level triplet. If no keyval is bound to `key`, the method returns 0.
        </summary>
        <param name="key">An object of type 'Gdk.KeymapKey', initalized keycode/group/level triplet.</param>
        <returns>An object of type 'uint', a keyval or 0 if none was found.</returns>
        <remarks>
        None
        </remarks>
      </Docs>
    </Member>
    <Member MemberName="TranslateKeyboardState">
      <MemberSignature Language="C#" Value="public bool TranslateKeyboardState (uint hardware_keycode, Gdk.ModifierType state, int group, uint keyval, int effective_group, int level, Gdk.ModifierType consumed_modifiers);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Boolean</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="hardware_keycode" Type="System.UInt32" />
        <Parameter Name="state" Type="Gdk.ModifierType" />
        <Parameter Name="group" Type="System.Int32" />
        <Parameter Name="keyval" Type="System.UInt32" />
        <Parameter Name="effective_group" Type="System.Int32" />
        <Parameter Name="level" Type="System.Int32" />
        <Parameter Name="consumed_modifiers" Type="Gdk.ModifierType" />
      </Parameters>
      <Docs>
        <summary>
        Translates the contents of a Gdk.KeymapKey into a keyval/group/level. Modifiers affecting the translation are returned 
        in `consumed_modifiers`. `effective_group` is the group used in translation. Key level is determined by `state`.
        </summary>
        <param name="hardware_keycode">An object of type 'uint', a keyboard code.</param>
        <param name="state">An object of type 'Gdk.ModifierType', a modifier state.</param>
        <param name="group">An object of type 'int', active keyboard group.</param>
        <param name="keyval">An object of type 'uint', return reference for `keyval`.</param>
        <param name="effective_group">An object of type 'int', return reference for `effective group`.</param>
        <param name="level">An object of type 'int', return reference for the new level.</param>
        <param name="consumed_modifiers">An object of type 'Gdk.ModifierType', return reference for modifiers used to determine group/level.</param>
        <returns>An object of type 'bool', return `true` if keys were found and returned.</returns>
        <remarks>
        None
        </remarks>
      </Docs>
    </Member>
    <Member MemberName="Finalize">
      <MemberSignature Language="C#" Value="protected virtual void Finalize ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>Disposes the resources associated with the object.</summary>
        <remarks />
      </Docs>
    </Member>
    <Member MemberName=".ctor">
      <MemberSignature Language="C#" Value="protected Keymap (uint gtype);" />
      <MemberType>Constructor</MemberType>
      <ReturnValue />
      <Parameters>
        <Parameter Name="gtype" Type="System.UInt32" />
      </Parameters>
      <Docs>
        <summary>Internal constructor</summary>
        <param name="gtype">GLib type for the type</param>
        <returns>Creates a new instance of Keymap, using the GLib-provided type</returns>
        <remarks>
          <para>This is a constructor used by derivative types of <see cref="T:Gdk.Keymap" /> that would have their own GLib type assigned to it.  This is not typically used by C# code.</para>
        </remarks>
      </Docs>
    </Member>
    <Member MemberName=".ctor">
      <MemberSignature Language="C#" Value="public Keymap (IntPtr raw);" />
      <MemberType>Constructor</MemberType>
      <ReturnValue />
      <Parameters>
        <Parameter Name="raw" Type="System.IntPtr" />
      </Parameters>
      <Docs>
        <summary>Internal constructor</summary>
        <param name="raw">Pointer to the C object.</param>
        <returns>An instance of Keymap, wrapping the C object.</returns>
        <remarks>
          <para>This is an internal constructor, and should not be used by user code.</para>
        </remarks>
      </Docs>
    </Member>
    <Member MemberName=".ctor">
      <MemberSignature Language="C#" Value="protected Keymap ();" />
      <MemberType>Constructor</MemberType>
      <ReturnValue />
      <Parameters />
      <Docs>
        <summary>Default constructor</summary>
        <returns>An object of type 'Gdk.Keymap'</returns>
        <remarks>
        None
        </remarks>
      </Docs>
    </Member>
    <Member MemberName="Default">
      <MemberSignature Language="C#" Value="public static Gdk.Keymap Default { get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>Gdk.Keymap</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>To be added</summary>
        <returns>To be added: an object of type 'Gdk.Keymap'</returns>
        <remarks>To be added</remarks>
      </Docs>
    </Member>
    <Member MemberName="GType">
      <MemberSignature Language="C#" Value="public static uint GType { get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>System.UInt32</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>The GLib Type for Gdk.Keymap</summary>
        <returns>The GLib TYpe for the Gdk.Keymap class.</returns>
        <remarks />
      </Docs>
    </Member>
    <Member MemberName="Direction">
      <MemberSignature Language="C#" Value="public Pango.Direction Direction { get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>Pango.Direction</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>
        Member that represents the current direction of the keymap.
        </summary>
        <returns>An object of type 'Pango.Direction', current keymap direction.</returns>
        <remarks>
        None
        </remarks>
      </Docs>
    </Member>
    <Member MemberName="DirectionChanged">
      <MemberSignature Language="C#" Value="public event EventHandler DirectionChanged;" />
      <MemberType>Event</MemberType>
      <ReturnValue />
      <Parameters />
      <Docs>
        <summary>
        An event handler that fires when the direction of a keymap has been changed.
        </summary>
        <remarks>
        None
        </remarks>
      </Docs>
    </Member>
  </Members>
</Type>