Input Methods support for internationalized text input. Input Methods provide a way for complex character sets to be used in GTK+. Languages such as Chinese, Japanese, and Korean (often abbreviated to CJK) use a large number of ideographs, making it impossible to support all characters with a simple keyboard. Instead, text is usually pre-edited using a phonetic alphabet and then composed to form the ideographs. GTK+ makes use of the input method mechanism provided by the X Windows platform. When a GTK+ application is started, it opens a connection to the input method appropriate for the current locale (if any). Widgets which handle textual input, such as #GtkEntry, need to do a number of things to support internationalized text input: When the widget is realized: Check if an input method is being used with gdk_im_ready(). If it is, create a new Input Context using gdk_ic_new(). Find out which events the Input Context needs to receive with gdk_ic_get_events(), and make sure that the widget's window receives these events using gdk_window_set_events(). When the widget's size, state or cursor position changes: Update the appropriate Input Context attributes using gdk_ic_set_attr(). When the keyboard focus enters or leaves the widget: Call gdk_im_begin() or gdk_im_end() to start or finish editing the text. When the widget receives a key_press event: The string and length fields of the #GdkEventKey struct should be used to insert the composed text into the widget. When the widget is unrealized: Destroy the Input Context. See the XLib reference manual for more detailed information on input methods, and the #GtkEntry and #GtkText widgets for some example code. Input Contexts Used for each widget that handles internationalized text input using the global input method.