You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							273 lines
						
					
					
						
							12 KiB
						
					
					
				
			
		
		
	
	
							273 lines
						
					
					
						
							12 KiB
						
					
					
				<?xml version="1.0" encoding="UTF-8"?>
 | 
						|
<protocol name="input_method">
 | 
						|
  <copyright>
 | 
						|
    Copyright © 2012, 2013 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.
 | 
						|
  </copyright>
 | 
						|
 | 
						|
 | 
						|
  <interface name="wl_input_method_context" version="1">
 | 
						|
    <description summary="input method context">
 | 
						|
      Corresponds to a text model on input method side. An input method context
 | 
						|
      is created on text mode activation on the input method side. It allows to
 | 
						|
      receive information about the text model from the application via events.
 | 
						|
      Input method contexts do not keep state after deactivation and should be
 | 
						|
      destroyed after deactivation is handled.
 | 
						|
 | 
						|
      Text is generally UTF-8 encoded, indices and lengths are in bytes.
 | 
						|
 | 
						|
      Serials are used to synchronize the state between the text input and
 | 
						|
      an input method. New serials are sent by the text input in the
 | 
						|
      commit_state request and are used by the input method to indicate
 | 
						|
      the known text input state in events like preedit_string, commit_string,
 | 
						|
      and keysym. The text input can then ignore events from the input method
 | 
						|
      which are based on an outdated state (for example after a reset).
 | 
						|
    </description>
 | 
						|
    <request name="destroy" type="destructor"/>
 | 
						|
    <request name="commit_string">
 | 
						|
      <description summary="commit string">
 | 
						|
        Send the commit string text for insertion to the application.
 | 
						|
 | 
						|
        The text to commit could be either just a single character after a key
 | 
						|
        press or the result of some composing (pre-edit). It could be also an
 | 
						|
        empty text when some text should be removed (see
 | 
						|
        delete_surrounding_text) or when the input cursor should be moved (see
 | 
						|
        cursor_position).
 | 
						|
 | 
						|
        Any previously set composing text will be removed.
 | 
						|
      </description>
 | 
						|
      <arg name="serial" type="uint" summary="serial of the latest known text input state"/>
 | 
						|
      <arg name="text" type="string"/>
 | 
						|
    </request>
 | 
						|
    <request name="preedit_string">
 | 
						|
      <description summary="pre-edit string">
 | 
						|
        Send the pre-edit string text to the application text input.
 | 
						|
 | 
						|
        The commit text can be used to replace the preedit text on reset (for
 | 
						|
        example on unfocus).
 | 
						|
 | 
						|
        Also previously sent preedit_style and preedit_cursor requests are
 | 
						|
        processed bt the text_input also.
 | 
						|
      </description>
 | 
						|
      <arg name="serial" type="uint" summary="serial of the latest known text input state"/>
 | 
						|
      <arg name="text" type="string"/>
 | 
						|
      <arg name="commit" type="string"/>
 | 
						|
    </request>
 | 
						|
    <request name="preedit_styling">
 | 
						|
      <description summary="pre-edit styling">
 | 
						|
        Sets styling information on composing text. The style is applied for
 | 
						|
	length in bytes from index relative to the beginning of
 | 
						|
	the composing text (as byte offset). Multiple styles can
 | 
						|
	be applied to a composing text.
 | 
						|
 | 
						|
        This request should be sent before sending preedit_string request.
 | 
						|
      </description>
 | 
						|
      <arg name="index" type="uint"/>
 | 
						|
      <arg name="length" type="uint"/>
 | 
						|
      <arg name="style" type="uint"/>
 | 
						|
    </request>
 | 
						|
    <request name="preedit_cursor">
 | 
						|
      <description summary="pre-edit cursor">
 | 
						|
        Sets the cursor position inside the composing text (as byte offset)
 | 
						|
        relative to the start of the composing text.
 | 
						|
 | 
						|
        When index is negative no cursor should be displayed.
 | 
						|
 | 
						|
        This request should be sent before sending preedit_string request.
 | 
						|
      </description>
 | 
						|
      <arg name="index" type="int"/>
 | 
						|
    </request>
 | 
						|
    <request name="delete_surrounding_text">
 | 
						|
      <description summary="delete text">
 | 
						|
 | 
						|
 | 
						|
        This request will be handled on text_input side as part of a directly
 | 
						|
        following commit_string request.
 | 
						|
      </description>
 | 
						|
      <arg name="index" type="int"/>
 | 
						|
      <arg name="length" type="uint"/>
 | 
						|
    </request>
 | 
						|
    <request name="cursor_position">
 | 
						|
      <description summary="set cursor to a new position">
 | 
						|
        Sets the cursor and anchor to a new position. Index is the new cursor
 | 
						|
        position in bytess (when >= 0 relative to the end of inserted text
 | 
						|
        else relative to beginning of inserted text). Anchor is the new anchor
 | 
						|
        position in bytes (when >= 0 relative to the end of inserted text, else
 | 
						|
        relative to beginning of inserted text). When there should be no
 | 
						|
        selected text anchor should be the same as index.
 | 
						|
 | 
						|
        This request will be handled on text_input side as part of a directly
 | 
						|
        following commit_string request.
 | 
						|
      </description>
 | 
						|
      <arg name="index" type="int"/>
 | 
						|
      <arg name="anchor" type="int"/>
 | 
						|
    </request>
 | 
						|
    <request name="modifiers_map">
 | 
						|
      <arg name="map" type="array"/>
 | 
						|
    </request>
 | 
						|
    <request name="keysym">
 | 
						|
      <description summary="keysym">
 | 
						|
        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. Sym is a XKB keysym, state a wl_keyboard key_state.
 | 
						|
      </description>
 | 
						|
      <arg name="serial" type="uint" summary="serial of the latest known text input state"/>
 | 
						|
      <arg name="time" type="uint"/>
 | 
						|
      <arg name="sym" type="uint"/>
 | 
						|
      <arg name="state" type="uint"/>
 | 
						|
      <arg name="modifiers" type="uint"/>
 | 
						|
    </request>
 | 
						|
    <request name="grab_keyboard">
 | 
						|
      <description summary="grab hardware keyboard">
 | 
						|
        Allows an input method to receive hardware keyboard input and process
 | 
						|
        key events to generate text events (with pre-edit) over the wire. This
 | 
						|
        allows input methods which compose multiple key events for inputting
 | 
						|
        text like it is done for CJK languages.
 | 
						|
      </description>
 | 
						|
       <arg name="keyboard" type="new_id" interface="wl_keyboard"/>
 | 
						|
    </request>
 | 
						|
    <request name="key">
 | 
						|
      <description summary="forward key event">
 | 
						|
        Should be used when filtering key events with grab_keyboard.
 | 
						|
 | 
						|
        When the wl_keyboard::key event is not processed by the input
 | 
						|
        method itself and should be sent to the client instead, forward it
 | 
						|
        with this request. The arguments should be the ones from the
 | 
						|
        wl_keyboard::key event.
 | 
						|
 | 
						|
        For generating custom key events use the keysym request instead.
 | 
						|
      </description>
 | 
						|
      <arg name="serial" type="uint" summary="serial from wl_keyboard::key"/>
 | 
						|
      <arg name="time" type="uint" summary="time from wl_keyboard::key"/>
 | 
						|
      <arg name="key" type="uint" summary="key from wl_keyboard::key"/>
 | 
						|
      <arg name="state" type="uint" summary="state from wl_keyboard::key"/>
 | 
						|
    </request>
 | 
						|
    <request name="modifiers">
 | 
						|
      <description summary="forward modifiers event">
 | 
						|
        Should be used when filtering key events with grab_keyboard.
 | 
						|
 | 
						|
        When the wl_keyboard::modifiers event should be also send to the
 | 
						|
        client, forward it with this request. The arguments should be the ones
 | 
						|
        from the wl_keyboard::modifiers event.
 | 
						|
      </description>
 | 
						|
      <arg name="serial" type="uint" summary="serial from wl_keyboard::modifiers"/>
 | 
						|
      <arg name="mods_depressed" type="uint" summary="mods_depressed from wl_keyboard::modifiers"/>
 | 
						|
      <arg name="mods_latched" type="uint" summary="mods_latched from wl_keyboard::modifiers"/>
 | 
						|
      <arg name="mods_locked" type="uint" summary="mods_locked from wl_keyboard::modifiers"/>
 | 
						|
      <arg name="group" type="uint" summary="group from wl_keyboard::modifiers"/>
 | 
						|
    </request>
 | 
						|
    <request name="language">
 | 
						|
      <arg name="serial" type="uint" summary="serial of the latest known text input state"/>
 | 
						|
      <arg name="language" type="string"/>
 | 
						|
    </request>
 | 
						|
    <request name="text_direction">
 | 
						|
      <arg name="serial" type="uint" summary="serial of the latest known text input state"/>
 | 
						|
      <arg name="direction" type="uint"/>
 | 
						|
    </request>
 | 
						|
    <event name="surrounding_text">
 | 
						|
      <description summary="surrounding text event">
 | 
						|
        The plain surrounding text around the input position. Cursor is the
 | 
						|
        position in bytes within the surrounding text relative to the beginning
 | 
						|
        of the text. Anchor is the position in bytes of the selection anchor
 | 
						|
        within the surrounding text relative to the beginning of the text. If
 | 
						|
        there is no selected text anchor is the same as cursor.
 | 
						|
      </description>
 | 
						|
      <arg name="text" type="string"/>
 | 
						|
      <arg name="cursor" type="uint"/>
 | 
						|
      <arg name="anchor" type="uint"/>
 | 
						|
    </event>
 | 
						|
    <event name="reset">
 | 
						|
    </event>
 | 
						|
    <event name="content_type">
 | 
						|
      <arg name="hint" type="uint"/>
 | 
						|
      <arg name="purpose" type="uint"/>
 | 
						|
    </event>
 | 
						|
    <event name="invoke_action">
 | 
						|
      <arg name="button" type="uint"/>
 | 
						|
      <arg name="index" type="uint"/>
 | 
						|
    </event>
 | 
						|
    <event name="commit_state">
 | 
						|
      <arg name="serial" type="uint" summary="serial of text input state"/>
 | 
						|
    </event>
 | 
						|
    <event name="preferred_language">
 | 
						|
      <arg name="language" type="string"/>
 | 
						|
    </event>
 | 
						|
  </interface>
 | 
						|
 | 
						|
  <interface name="wl_input_method" version="1">
 | 
						|
    <description summary="input method">
 | 
						|
      An input method object is responsible to compose text in response to
 | 
						|
      input from hardware or virtual keyboards. There is one input method
 | 
						|
      object per seat. On activate there is a new input method context object
 | 
						|
      created which allows the input method to communicate with the text model.
 | 
						|
    </description>
 | 
						|
    <event name="activate">
 | 
						|
      <description summary="activate event">
 | 
						|
        A text model was activated. Creates an input method context object
 | 
						|
        which allows communication with the text model.
 | 
						|
      </description>
 | 
						|
      <arg name="id" type="new_id" interface="wl_input_method_context"/>
 | 
						|
    </event>
 | 
						|
    <event name="deactivate">
 | 
						|
      <description summary="activate event">
 | 
						|
        The text model corresponding to the context argument was deactivated.
 | 
						|
        The input method context should be destroyed after deactivation is
 | 
						|
        handled.
 | 
						|
      </description>
 | 
						|
      <arg name="context" type="object" interface="wl_input_method_context"/>
 | 
						|
    </event>
 | 
						|
  </interface>
 | 
						|
 | 
						|
  <interface name="wl_input_panel" version="1">
 | 
						|
    <description summary="interface for implementing keyboards">
 | 
						|
      Only one client can bind this interface at a time.
 | 
						|
    </description>
 | 
						|
 | 
						|
    <request name="get_input_panel_surface">
 | 
						|
      <arg name="id" type="new_id" interface="wl_input_panel_surface"/>
 | 
						|
      <arg name="surface" type="object" interface="wl_surface"/>
 | 
						|
    </request>
 | 
						|
  </interface>
 | 
						|
 | 
						|
  <interface name="wl_input_panel_surface" version="1">
 | 
						|
    <enum name="position">
 | 
						|
      <entry name="center_bottom" value="0"/>
 | 
						|
    </enum>
 | 
						|
 | 
						|
    <request name="set_toplevel">
 | 
						|
      <description summary="set the surface type as a keyboard">
 | 
						|
	A keybaord surface is only shown, when a text model is active
 | 
						|
      </description>
 | 
						|
      <arg name="output" type="object" interface="wl_output"/>
 | 
						|
      <arg name="position" type="uint"/>
 | 
						|
    </request>
 | 
						|
 | 
						|
    <request name="set_overlay_panel">
 | 
						|
      <description summary="set the surface type as an overlay panel">
 | 
						|
        An overlay panel is shown near the input cursor above the application
 | 
						|
        window when a text model is active.
 | 
						|
      </description>
 | 
						|
    </request>
 | 
						|
  </interface>
 | 
						|
</protocol>
 | 
						|
 |