<?xml version="1.0" encoding="UTF-8"?>
<protocol name="input_method_unstable_v1">

  <copyright>
    Copyright © 2012, 2013 Intel Corporation

    Permission is hereby granted, free of charge, to any person obtaining a
    copy of this software and associated documentation files (the "Software"),
    to deal in the Software without restriction, including without limitation
    the rights to use, copy, modify, merge, publish, distribute, sublicense,
    and/or sell copies of the Software, and to permit persons to whom the
    Software is furnished to do so, subject to the following conditions:

    The above copyright notice and this permission notice (including the next
    paragraph) shall be included in all copies or substantial portions of the
    Software.

    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
    THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
    FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
    DEALINGS IN THE SOFTWARE.
  </copyright>

  <interface name="zwp_input_method_context_v1" version="1">
    <description summary="input method context">
      Corresponds to a text input on the input method side. An input method context
      is created on text input activation on the input method side. It allows to
      receive information about the text input 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).

      Warning! The protocol described in this file is experimental and
      backward incompatible changes may be made. Backward compatible changes
      may be added together with the corresponding interface version bump.
      Backward incompatible changes are done by bumping the version number in
      the protocol and interface names and resetting the interface version.
      Once the protocol is to be declared stable, the 'z' prefix and the
      version number in the protocol and interface names are removed and the
      interface version number is 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 pre-edit text on reset (for
	example on unfocus).

	Previously sent preedit_style and preedit_cursor requests are also
	processed by the text_input.
      </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 a 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 a 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 the text_input side directly following
	a 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 bytes (when >= 0 relative to the end of inserted text,
	otherwise relative to the beginning of the inserted text). Anchor is
	the new anchor position in bytes (when >= 0 relative to the end of the
	inserted text, otherwise relative to the beginning of the inserted
	text). When there should be no selected text, anchor should be the same
	as index.

	This request will be handled on the text_input side directly following
	a 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_surrounding_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 also be sent 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="zwp_input_method_v1" version="1">
    <description summary="input method">
      An input method object is responsible for composing 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 input.
    </description>

    <event name="activate">
      <description summary="activate event">
	A text input was activated. Creates an input method context object
	which allows communication with the text input.
      </description>
      <arg name="id" type="new_id" interface="zwp_input_method_context_v1"/>
    </event>

    <event name="deactivate">
      <description summary="deactivate event">
	The text input 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="zwp_input_method_context_v1"/>
    </event>
  </interface>

  <interface name="zwp_input_panel_v1" 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="zwp_input_panel_surface_v1"/>
      <arg name="surface" type="object" interface="wl_surface"/>
    </request>
  </interface>

  <interface name="zwp_input_panel_surface_v1" 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 keyboard surface is only shown when a text input 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 input is active.
      </description>
    </request>
  </interface>

</protocol>
