Copyright © 2012 Intel Corporation
    Permission to use, copy, modify, distribute, and sell this
    software and its documentation for any purpose is hereby granted
    without fee, provided that the above copyright notice appear in
    all copies and that both that copyright notice and this permission
    notice appear in supporting documentation, and that the name of
    the copyright holders not be used in advertising or publicity
    pertaining to distribution of the software without specific,
    written prior permission.  The copyright holders make no
    representations about the suitability of this software for any
    purpose.  It is provided "as is" without express or implied
    warranty.
    THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
    SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
    FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
    SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
    WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
    AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
    ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
    THIS SOFTWARE.
  
  
    
      A model for text input. Adds support for text input and input methods to
      applications. A text_model object is created from a text_model_factory and
      corresponds typically to a text entry in an application. Requests are used
      to activate/deactivate the model and set information like surrounding and
      selected text or the content type. The information about entered text is
      sent to the model via the pre-edit and commit events. Using this interface
      removes the need for applications to directly process hardware key events
      and compose text out of them.
    
    
      
        Sets the plain surrounding text around the input position. Cursor is the
        byte index within the surrounding text. Anchor is the byte index of the
        selection anchor within the surrounding text. If there is no selected
        text anchor is the same as cursor.
      
      
      
      
    
    
      
        Requests the model to be activated (typically when the text entry gets
        focus). The seat argument is a wl_seat which maintains the focus for
        this activation. The surface argument is a wl_surface assigned to the
        model and tracked for focus lost. The activated event is emitted on
        successful activation.
      
      
      
      
    
    
      
        Requests the model to be deactivated (typically when the text entry
        lost focus). The seat argument is a wl_seat which was used for
        activation.
      
      
    
    
      
        Should be called by an editor widget when the input state should
        be reseted, for example after the text was changed outside of the
        normal input method flow.
      
      
    
    
      
      
      
      
    
    
      
        Content hint is a bitmask to allow to modify the behavior of the text input
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    
      
        The content purpose allows to specify the primary purpose of a text input.
	This allows an input method to show special purpose input panels with extra 
	characters or to disallow some characters.
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    
      
        Sets the content purpose and content hint. While the purpose is the
        basic purpose of an input field, the hint flags allow to modify some
        of the behavior.
        When no content type is explicitly set, a normal content purpose with
        default hints (auto completion, auto correction, auto capitalization)
        should be assumed.
      
      
      
    
    
      
      
    
    
    
    
      
        Requests input panels (virtual keyboard) to show.
      
    
    
      
        Requests input panels (virtual keyboard) to hide.
      
    
    
      
        Notify when text should be inserted into the editor widget. The text
        to commit could be either just a single character after a key press
        or the result of some composing (pre-edit). It also sets the new
        cursor position (as byte index) relative to the inserted text.
        Any previously set composing text should be removed.
      
      
      
    
    
      
        Notify when a new composing text (pre-edit) should be set around the
        current cursor position. Any previously set composing text should
        be removed.
        The commit text can be used to replace the preedit text on reset
        (for example on unfocus).
      
      
      
      
    
    
      
        Notify when the text around the current cursor position should be
        deleted. Index is relative to the current cursor (as byte index).
        Length is the length of deleted text (as bytes).
      
      
      
      
    
    
      
        Notify when the cursor or anchor position should be modified. It
        should take effect after the next commit_string event.
      
      
      
      
    
    
      
      
      
      
      
      
      
    
    
      
        Sets styling information on composing text. The style is applied for
        length (in bytes) characters from index relative to the beginning of
        the composing text (as byte index). Multiple styles can be applied
        to a composing text.
        This event should be handled as part of a following preedit_string
        event.
      
      
      
      
      
    
    
      
        Sets the cursor position inside the composing text (as byte index)
        relative to the start of the composing text.
        This event should be handled as part of a following preedit_string
        event.
      
      
      
    
    
      
        Transfer an array of 0-terminated modifiers names. The position in
        the array is the index of the modifier as used in the modifiers
        bitmask in the keysym event.
      
      
    
    
      
        Notify when a key event was sent. Key events should not be used
        for normal text input operations, which should be done with
        commit_string, delete_surrounfing_text, etc. The key event follows
        the wl_keyboard key event convention. State is a XKB keysym, state a
        wl_keyboard key_state. Modifiers are a mask for effective modifiers
        (where the modfier indices are set by the modifiers_map event)
      
      
      
      
      
      
    
    
      
        Notify the model when it is activated. Typically in response to an
        activate request.
      
      
    
    
      
        Notify the model when it is deactivated. Either in response to a
        deactivate request or when the assigned surface lost focus or was
        destroyed.
      
    
    
      
        Notify when the visibility state of the input panel changed.
      
      
    
  
  
    
      A factory for text models. This object is a singleton global.
    
    
      
        Creates a new text model object.