# Input Method (GUI)
[GUI API]

Input method support on window systems. More...

## Data Structures

struct | MInputGUIArgIC
| Type of the argument to the function minput_create_ic(). More...
struct | MInputXIMArgIM
| Structure pointed to by the argument arg of the function minput_open_im(). More...
struct | MInputXIMArgIC
| Structure pointed to by the argument arg of the function minput_create_ic(). More...

## Functions

MSymbol | minput_event_to_key (MFrame *frame, void *event)
| Convert an event to an input key.

## Variables

MInputDriver | minput_gui_driver
| Input driver for internal input methods on window systems.
MSymbol | Mxim
| Symbol of the name "xim".

## Detailed Description

Input method support on window systems.

The input driver `minput_gui_driver` is provided for internal input methods that is useful on window systems. It displays preedit text and status text at the inputting spot. See the documentation of `minput_gui_driver` for more details.

In the m17n-X library, the foreign input method of name `Mxim` is provided. It uses XIM (X Input Method) as a background input engine. The symbol `Mxim` has a property `Minput_driver` whose value is a pointer to the input driver `minput_xim_driver`. See the documentation of `minput_xim_driver` for more details.

## Function Documentation

MSymbol minput_event_to_key | ( | MFrame * | frame,
|  | void * | event |
| ) |  |  |

Convert an event to an input key.

The minput_event_to_key() function returns the input key corresponding to event event on frame by a window system dependent manner.

In the m17n-X library, event must be a pointer to the structure `XKeyEvent`, and it is handled as below.

At first, the keysym name of event is acquired by the function `XKeysymToString`. Then, the name is modified as below.

If the name is one of "a" .. "z" and event has a Shift modifier, the name is converted to "A" .. "Z" respectively, and the Shift modifier is cleared.

If the name is one byte length and event has a Control modifier, the byte is bitwise anded by 0x1F and the Control modifier is cleared.

If event still has modifiers, the name is preceded by "S-" (Shift), "C-" (Control), "M-" (Meta), "A-" (Alt), "G-" (AltGr), "s-" (Super), and "H-" (Hyper) in this order.

For instance, if the keysym name is "a" and the event has Shift, Meta, and Hyper modifiers, the resulting name is "M-H-A".

At last, a symbol who has the name is returned.

## Variable Documentation

MInputDriver minput_gui_driver

Input driver for internal input methods on window systems.

The input driver `minput_gui_driver` is for internal input methods to be used on window systems.

It creates sub-windows for a preedit text and a status text, and displays them at the input spot set by the function minput_set_spot().

The macro M17N_INIT() set the variable `minput_driver` to the pointer to this driver so that all internal input methods use it.

Therefore, unless `minput_driver` is changed from the default, the driver dependent arguments to the functions whose name begin with minput_ must are treated as follows.

The argument arg of the function minput_open_im() is ignored.

The argument arg of the function minput_create_ic() must be a pointer to the structure `MInputGUIArgIC`. See the documentation of `MInputGUIArgIC` for more details.

If the argument key of function minput_filter() is `Mnil`, the argument arg must be a pointer to the object of type `XEvent`. In that case, key is generated from arg.

The argument arg of the function minput_lookup() must be the same one as that of the function minput_filter().

MSymbol Mxim

Symbol of the name "xim".

The variable Mxim is a symbol of name "xim". It is a name of the input method driver minput_xim_driver.

All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines