## Types Types |

## Functions

NimfKey * | nimf_key_new ()
NimfKey * | nimf_key_new_from_nicks ()
void | nimf_key_free ()
NimfKey ** | nimf_key_newv ()
void | nimf_key_freev ()
NimfPreeditAttr * | nimf_preedit_attr_new ()
NimfPreeditAttr ** | nimf_preedit_attrs_copy ()
void | nimf_preedit_attr_free ()
void | nimf_preedit_attr_freev ()
NimfMethodInfo * | nimf_method_info_new ()
void | nimf_method_info_free ()
void | nimf_method_info_freev ()

## Types and Values

enum | NimfModifierType
| NimfRectangle
| NimfKey
enum | NimfPreeditState
enum | NimfPreeditAttrType
| NimfPreeditAttr

## Description

## Functions

### nimf_key_new ()

    NimfKey *
    nimf_key_new (void);

Creates a new NimfKey. All fields are set to 0.

Return: a new NimfKey, which should be freed with `nimf_key_free()`.

### nimf_key_new_from_nicks ()

    NimfKey *
    nimf_key_new_from_nicks (const gchar **nicks);

Return: a new NimfKey, which should be freed with `nimf_key_free()`.

#### Parameters

nicks | an array of gchar |

### nimf_key_free ()

    void
    nimf_key_free (NimfKey *key);

Frees a `key`

#### Parameters

key | a NimfKey |

### nimf_key_newv ()

    NimfKey **
    nimf_key_newv (const gchar **keys);

Creates a new array of NimfKey.

#### Parameters

keys | an array of gchar |

#### Returns

a new array of NimfKey, which should be freed with `nimf_key_freev()`.

### nimf_key_freev ()

    void
    nimf_key_freev (NimfKey **keys);

Frees an array of `keys`

#### Parameters

keys | an array of NimfKey |

### nimf_preedit_attr_new ()

    NimfPreeditAttr *
    nimf_preedit_attr_new (NimfPreeditAttrType type,
                           guint start_index,
                           guint end_index);

#### Parameters

type | a NimfPreeditAttrType |
start_index | start index in characters |
end_index | end index in characters; The character at this index is not included. |

#### Returns

a new NimfPreeditAttr, which should be freed with `nimf_preedit_attr_free()`.

### nimf_preedit_attrs_copy ()

    NimfPreeditAttr **
    nimf_preedit_attrs_copy (NimfPreeditAttr **attrs);

#### Parameters

attrs | an array of NimfPreeditAttr |

#### Returns

a new array of NimfPreeditAttr, which should be freed with `nimf_preedit_attr_freev()`.

### nimf_preedit_attr_free ()

    void
    nimf_preedit_attr_free (NimfPreeditAttr *attr);

Frees a `attr`

#### Parameters

attr | a NimfPreeditAttr |

### nimf_preedit_attr_freev ()

    void
    nimf_preedit_attr_freev (NimfPreeditAttr **attrs);

Frees an array of `attrs`

#### Parameters

attrs | an array of NimfPreeditAttr |

### nimf_method_info_new ()

    NimfMethodInfo *
    nimf_method_info_new (void);

#### Returns

a new NimfMethodInfo, which should be freed with `nimf_method_info_free()`.

### nimf_method_info_free ()

    void
    nimf_method_info_free (NimfMethodInfo *info);

Frees an `info` .

#### Parameters

info | a NimfMethodInfo |

### nimf_method_info_freev ()

    void
    nimf_method_info_freev (NimfMethodInfo **infos);

Frees an array of `infos` .

#### Parameters

infos | an array of NimfMethodInfo |

## Types and Values

### enum NimfModifierType

A set of bit-flags to indicate the state of modifier keys and mouse buttons in various event types. Typical modifier keys are Shift, Control, Meta, Super, Hyper, Alt, Compose, Apple, CapsLock or ShiftLock.

#### Members

NIMF_SHIFT_MASK | the Shift key. |
NIMF_LOCK_MASK | a Lock key (depending on the modifier mapping of the X server this may either be CapsLock or ShiftLock). |
NIMF_CONTROL_MASK | the Control key. |
NIMF_MOD1_MASK | 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). |
NIMF_MOD2_MASK | the fifth modifier key (it depends on the modifier mapping of the X server which key is interpreted as this modifier). |
NIMF_MOD3_MASK | the sixth modifier key (it depends on the modifier mapping of the X server which key is interpreted as this modifier). |
NIMF_MOD4_MASK | the seventh modifier key (it depends on the modifier mapping of the X server which key is interpreted as this modifier). |
NIMF_MOD5_MASK | the eighth modifier key (it depends on the modifier mapping of the X server which key is interpreted as this modifier). |
NIMF_BUTTON1_MASK | the first mouse button. |
NIMF_BUTTON2_MASK | the second mouse button. |
NIMF_BUTTON3_MASK | the third mouse button. |
NIMF_BUTTON4_MASK | the fourth mouse button. |
NIMF_BUTTON5_MASK | the fifth mouse button. |
NIMF_MODIFIER_RESERVED_13_MASK | A reserved bit flag; do not use in your own code |
NIMF_MODIFIER_RESERVED_14_MASK | A reserved bit flag; do not use in your own code |
NIMF_MODIFIER_RESERVED_15_MASK | A reserved bit flag; do not use in your own code |
NIMF_MODIFIER_RESERVED_16_MASK | A reserved bit flag; do not use in your own code |
NIMF_MODIFIER_RESERVED_17_MASK | A reserved bit flag; do not use in your own code |
NIMF_MODIFIER_RESERVED_18_MASK | A reserved bit flag; do not use in your own code |
NIMF_MODIFIER_RESERVED_19_MASK | A reserved bit flag; do not use in your own code |
NIMF_MODIFIER_RESERVED_20_MASK | A reserved bit flag; do not use in your own code |
NIMF_MODIFIER_RESERVED_21_MASK | A reserved bit flag; do not use in your own code |
NIMF_MODIFIER_RESERVED_22_MASK | A reserved bit flag; do not use in your own code |
NIMF_MODIFIER_RESERVED_23_MASK | A reserved bit flag; do not use in your own code |
NIMF_MODIFIER_RESERVED_24_MASK | A reserved bit flag; do not use in your own code |
NIMF_MODIFIER_RESERVED_25_MASK | A reserved bit flag; do not use in your own code |
NIMF_SUPER_MASK | the Super modifier. |
NIMF_HYPER_MASK | the Hyper modifier. |
NIMF_META_MASK | the Meta modifier. |
NIMF_MODIFIER_RESERVED_29_MASK | A reserved bit flag; do not use in your own code |
NIMF_RELEASE_MASK | exists because of compatibility. |
NIMF_MODIFIER_MASK | a mask covering all modifier types. |

### NimfRectangle

    typedef struct {
      int x, y;
      int width, height;
    } NimfRectangle;

Defines the position and size of a rectangle.

#### Members

int `x`; | x |
int `y`; | y |
int `width`; | width |
int `height`; | height |

### NimfKey

    typedef struct {
      guint32 state;
      guint32 keyval;
    } NimfKey;

#### Members

guint32 `state`; | a bit-mask representing the state of the modifier keys |
guint32 `keyval`; | the key that was pressed or released. |

### enum NimfPreeditState

#### Members

NIMF_PREEDIT_STATE_START | presents preedit-start state. |
NIMF_PREEDIT_STATE_END | presents preedit-end state. |

### enum NimfPreeditAttrType

#### Members

NIMF_PREEDIT_ATTR_UNDERLINE | whether the text has an underline |
NIMF_PREEDIT_ATTR_HIGHLIGHT | whether the text has a highlight |

### NimfPreeditAttr

    typedef struct {
      NimfPreeditAttrType type;
      guint start_index; /* in characters */
      guint end_index; /* in characters. The character at this index is not included */
    } NimfPreeditAttr;

#### Members

NimfPreeditAttrType `type`; | a NimfPreeditAttrType |
guint `start_index`; | the start index of the range (in characters). |
guint `end_index`; | end index of the range (in characters). The character at this index is not included in the range. |