<?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 an 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>
