<?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
      receiving 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 this is relative to the end of the inserted text,
	otherwise it is relative to the beginning of the inserted text). Anchor is
	the new anchor position in bytes (when >= 0 this is relative to the end of the
	inserted text, otherwise it is 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 is 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 then 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>
