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

  <copyright>
    Copyright © 2014      Jonas Ådahl
    Copyright © 2015      Red Hat Inc.

    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>

  <description summary="protocol for relative pointer motion events">
    This protocol specifies a set of interfaces used for making clients able to
    receive relative pointer events not obstructed by barriers (such as the
    monitor edge or other pointer barriers).

    To start receiving relative pointer events, a client must first bind the
    global interface "wp_relative_pointer_manager" which, if a compositor
    supports relative pointer motion events, is exposed by the registry. After
    having created the relative pointer manager proxy object, the client uses
    it to create the actual relative pointer object using the
    "get_relative_pointer" request given a wl_pointer. The relative pointer
    motion events will then, when applicable, be transmitted via the proxy of
    the newly created relative pointer object. See the documentation of the
    relative pointer interface for more details.

    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>

  <interface name="zwp_relative_pointer_manager_v1" version="1">
    <description summary="get relative pointer objects">
      A global interface used for getting the relative pointer object for a
      given pointer.
    </description>

    <request name="destroy" type="destructor">
      <description summary="destroy the relative pointer manager object">
	Used by the client to notify the server that it will no longer use this
	relative pointer manager object.
      </description>
    </request>

    <request name="get_relative_pointer">
      <description summary="get a relative pointer object">
	Create a relative pointer interface given a wl_pointer object. See the
	wp_relative_pointer interface for more details.
      </description>

      <arg name="id" type="new_id" interface="zwp_relative_pointer_v1"/>
      <arg name="pointer" type="object" interface="wl_pointer"/>
    </request>
  </interface>

  <interface name="zwp_relative_pointer_v1" version="1">
    <description summary="relative pointer object">
      A wp_relative_pointer object is an extension to the wl_pointer interface
      used for emitting relative pointer events. It shares the same focus as
      wl_pointer objects of the same seat and will only emit events when it has
      focus.
    </description>

    <request name="destroy" type="destructor">
      <description summary="release the relative pointer object"/>
    </request>

    <event name="relative_motion">
      <description summary="relative pointer motion">
	Relative x/y pointer motion from the pointer of the seat associated with
	this object.

	A relative motion is in the same dimension as regular wl_pointer motion
	events, except they do not represent an absolute position. For example,
	moving a pointer from (x, y) to (x', y') would have the equivalent
	relative motion (x' - x, y' - y). If a pointer motion caused the
	absolute pointer position to be clipped by for example the edge of the
	monitor, the relative motion is unaffected by the clipping and will
	represent the unclipped motion.

	This event also contains non-accelerated motion deltas. The
	non-accelerated delta is, when applicable, the regular pointer motion
	delta as it was before having applied motion acceleration and other
	transformations such as normalization.

	Note that the non-accelerated delta does not represent 'raw' events as
	they were read from some device. Pointer motion acceleration is device-
	and configuration-specific and non-accelerated deltas and accelerated
	deltas may have the same value on some devices.

	Relative motions are not coupled to wl_pointer.motion events, and can be
	sent in combination with such events, but also independently. There may
	also be scenarios where wl_pointer.motion is sent, but there is no
	relative motion. The order of an absolute and relative motion event
	originating from the same physical motion is not guaranteed.

	If the client needs button events or focus state, it can receive them
	from a wl_pointer object of the same seat that the wp_relative_pointer
	object is associated with.
      </description>

      <arg name="utime_hi" type="uint"
	   summary="high 32 bits of a 64 bit timestamp with microsecond granularity"/>
      <arg name="utime_lo" type="uint"
	   summary="low 32 bits of a 64 bit timestamp with microsecond granularity"/>
      <arg name="dx" type="fixed"
	   summary="the x component of the motion vector"/>
      <arg name="dy" type="fixed"
	   summary="the y component of the motion vector"/>
      <arg name="dx_unaccel" type="fixed"
	   summary="the x component of the unaccelerated motion vector"/>
      <arg name="dy_unaccel" type="fixed"
	   summary="the y component of the unaccelerated motion vector"/>
    </event>
  </interface>

</protocol>
