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

  <copyright>
    Copyright 2014 © Stephen "Lyude" Chandler Paul
    Copyright 2015-2016 © 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="Wayland protocol for graphics tablets">
    This description provides a high-level overview of the interplay between
    the interfaces defined this protocol. For details, see the protocol
    specification.

    More than one tablet may exist, and device-specifics matter. Tablets are
    not represented by a single virtual device like wl_pointer. A client
    binds to the tablet manager object which is just a proxy object. From
    that, the client requests wp_tablet_manager.get_tablet_seat(wl_seat)
    and that returns the actual interface that has all the tablets. With
    this indirection, we can avoid merging wp_tablet into the actual Wayland
    protocol, a long-term benefit.

    The wp_tablet_seat sends a "tablet added" event for each tablet
    connected. That event is followed by descriptive events about the
    hardware; currently that includes events for name, vid/pid and
    a wp_tablet.path event that describes a local path. This path can be
    used to uniquely identify a tablet or get more information through
    libwacom. Emulated or nested tablets can skip any of those, e.g. a
    virtual tablet may not have a vid/pid. The sequence of descriptive
    events is terminated by a wp_tablet.done event to signal that a client
    may now finalize any initialization for that tablet.

    Events from tablets require a tool in proximity. Tools are also managed
    by the tablet seat; a "tool added" event is sent whenever a tool is new
    to the compositor. That event is followed by a number of descriptive
    events about the hardware; currently that includes capabilities,
    hardware id and serial number, and tool type. Similar to the tablet
    interface, a wp_tablet_tool.done event is sent to terminate that initial
    sequence.

    Any event from a tool happens on the wp_tablet_tool interface. When the
    tool gets into proximity of the tablet, a proximity_in event is sent on
    the wp_tablet_tool interface, listing the tablet and the surface. That
    event is followed by a motion event with the coordinates. After that,
    it's the usual motion, axis, button, etc. events. The protocol's
    serialisation means events are grouped by wp_tablet_tool.frame events.

    Two special events (that don't exist in X) are down and up. They signal
    "tip touching the surface". For tablets without real proximity
    detection, the sequence is: proximity_in, motion, down, frame.

    When the tool leaves proximity, a proximity_out event is sent. If any
    button is still down, a button release event is sent before this
    proximity event. These button events are sent in the same frame as the
    proximity event to signal to the client that the buttons were held when
    the tool left proximity.

    If the tool moves out of the surface but stays in proximity (i.e.
    between windows), compositor-specific grab policies apply. This usually
    means that the proximity-out is delayed until all buttons are released.

    Moving a tool physically from one tablet to the other has no real effect
    on the protocol, since we already have the tool object from the "tool
    added" event. All the information is already there and the proximity
    events on both tablets are all a client needs to reconstruct what
    happened.

    Some extra axes are normalized, i.e. the client knows the range as
    specified in the protocol (e.g. [0, 65535]), the granularity however is
    unknown. The current normalized axes are pressure, distance, and slider.

    Other extra axes are in physical units as specified in the protocol.
    The current extra axes with physical units are tilt, rotation and
    wheel rotation.

    Since tablets work independently of the pointer controlled by the mouse,
    the focus handling is independent too and controlled by proximity.
    The wp_tablet_tool.set_cursor request sets a tool-specific cursor.
    This cursor surface may be the same as the mouse cursor, and it may be
    the same across tools but it is possible to be more fine-grained. For
    example, a client may set different cursors for the pen and eraser.

    Tools are generally independent of tablets and it is
    compositor-specific policy when a tool can be removed. Common approaches
    will likely include some form of removing a tool when all tablets the
    tool was used on are removed.

    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_tablet_manager_v2" version="1">
    <description summary="controller object for graphic tablet devices">
      An object that provides access to the graphics tablets available on this
      system. All tablets are associated with a seat, to get access to the
      actual tablets, use wp_tablet_manager.get_tablet_seat.
    </description>

    <request name="get_tablet_seat">
      <description summary="get the tablet seat">
	Get the wp_tablet_seat object for the given seat. This object
	provides access to all graphics tablets in this seat.
      </description>
      <arg name="tablet_seat" type="new_id" interface="zwp_tablet_seat_v2"/>
      <arg name="seat" type="object" interface="wl_seat" summary="The wl_seat object to retrieve the tablets for" />
    </request>

    <request name="destroy" type="destructor">
      <description summary="release the memory for the tablet manager object">
	Destroy the wp_tablet_manager object. Objects created from this
	object are unaffected and should be destroyed separately.
      </description>
    </request>
  </interface>

  <interface name="zwp_tablet_seat_v2" version="1">
    <description summary="controller object for graphic tablet devices of a seat">
      An object that provides access to the graphics tablets available on this
      seat. After binding to this interface, the compositor sends a set of
      wp_tablet_seat.tablet_added and wp_tablet_seat.tool_added events.
    </description>

    <request name="destroy" type="destructor">
      <description summary="release the memory for the tablet seat object">
	Destroy the wp_tablet_seat object. Objects created from this
	object are unaffected and should be destroyed separately.
      </description>
    </request>

    <event name="tablet_added">
      <description summary="new device notification">
	This event is sent whenever a new tablet becomes available on this
	seat. This event only provides the object id of the tablet, any
	static information about the tablet (device name, vid/pid, etc.) is
	sent through the wp_tablet interface.
      </description>
      <arg name="id" type="new_id" interface="zwp_tablet_v2" summary="the newly added graphics tablet"/>
    </event>

    <event name="tool_added">
      <description summary="a new tool has been used with a tablet">
	This event is sent whenever a tool that has not previously been used
	with a tablet comes into use. This event only provides the object id
	of the tool; any static information about the tool (capabilities,
	type, etc.) is sent through the wp_tablet_tool interface.
      </description>
      <arg name="id" type="new_id" interface="zwp_tablet_tool_v2" summary="the newly added tablet tool"/>
    </event>
  </interface>

  <interface name="zwp_tablet_tool_v2" version="1">
    <description summary="a physical tablet tool">
      An object that represents a physical tool that has been, or is
      currently in use with a tablet in this seat. Each wp_tablet_tool
      object stays valid until the client destroys it; the compositor
      reuses the wp_tablet_tool object to indicate that the object's
      respective physical tool has come into proximity of a tablet again.

      A wp_tablet_tool object's relation to a physical tool depends on the
      tablet's ability to report serial numbers. If the tablet supports
      this capability, then the object represents a specific physical tool
      and can be identified even when used on multiple tablets.

      A tablet tool has a number of static characteristics, e.g. tool type,
      hardware_serial and capabilities. These capabilities are sent in an
      event sequence after the wp_tablet_seat.tool_added event before any
      actual events from this tool. This initial event sequence is
      terminated by a wp_tablet_tool.done event.

      Tablet tool events are grouped by wp_tablet_tool.frame events.
      Any events received before a wp_tablet_tool.frame event should be
      considered part of the same hardware state change.
    </description>

    <request name="set_cursor">
      <description summary="set the tablet tool's surface">
	Sets the surface of the cursor used for this tool on the given
	tablet. This request only takes effect if the tool is in proximity
	of one of the requesting client's surfaces or the surface parameter
	is the current pointer surface. If there was a previous surface set
	with this request it is replaced. If surface is NULL, the cursor
	image is hidden.

	The parameters hotspot_x and hotspot_y define the position of the
	pointer surface relative to the pointer location. Its top-left corner
	is always at (x, y) - (hotspot_x, hotspot_y), where (x, y) are the
	coordinates of the pointer location, in surface-local coordinates.

	On surface.attach requests to the pointer surface, hotspot_x and
	hotspot_y are decremented by the x and y parameters passed to the
	request. Attach must be confirmed by wl_surface.commit as usual.

	The hotspot can also be updated by passing the currently set pointer
	surface to this request with new values for hotspot_x and hotspot_y.

	The current and pending input regions of the wl_surface are cleared,
	and wl_surface.set_input_region is ignored until the wl_surface is no
	longer used as the cursor. When the use as a cursor ends, the current
	and pending input regions become undefined, and the wl_surface is
	unmapped.

	This request gives the surface the role of a wp_tablet_tool cursor. A
	surface may only ever be used as the cursor surface for one
	wp_tablet_tool. If the surface already has another role or has
	previously been used as cursor surface for a different tool, a
	protocol error is raised.
      </description>
      <arg name="serial" type="uint" summary="serial of the enter event"/>
      <arg name="surface" type="object" interface="wl_surface" allow-null="true"/>
      <arg name="hotspot_x" type="int" summary="surface-local x coordinate"/>
      <arg name="hotspot_y" type="int" summary="surface-local y coordinate"/>
    </request>

    <request name="destroy" type="destructor">
      <description summary="destroy the tool object">
	This destroys the client's resource for this tool object.
      </description>
    </request>

    <enum name="type">
      <description summary="a physical tool type">
	Describes the physical type of a tool. The physical type of a tool
	generally defines its base usage.

	The mouse tool represents a mouse-shaped tool that is not a relative
	device but bound to the tablet's surface, providing absolute
	coordinates.

	The lens tool is a mouse-shaped tool with an attached lens to
	provide precision focus.
      </description>
      <entry name="pen" value="0x140" summary="Pen"/>
      <entry name="eraser" value="0x141" summary="Eraser"/>
      <entry name="brush" value="0x142" summary="Brush"/>
      <entry name="pencil" value="0x143" summary="Pencil"/>
      <entry name="airbrush" value="0x144" summary="Airbrush"/>
      <entry name="finger" value="0x145" summary="Finger"/>
      <entry name="mouse" value="0x146" summary="Mouse"/>
      <entry name="lens" value="0x147" summary="Lens"/>
    </enum>

    <event name="type">
      <description summary="tool type">
	The tool type is the high-level type of the tool and usually decides
	the interaction expected from this tool.

	This event is sent in the initial burst of events before the
	wp_tablet_tool.done event.
      </description>
      <arg name="tool_type" type="uint" enum="type" summary="the physical tool type"/>
    </event>

    <event name="hardware_serial">
      <description summary="unique hardware serial number of the tool">
	If the physical tool can be identified by a unique 64-bit serial
	number, this event notifies the client of this serial number.

	If multiple tablets are available in the same seat and the tool is
	uniquely identifiable by the serial number, that tool may move
	between tablets.

	Otherwise, if the tool has no serial number and this event is
	missing, the tool is tied to the tablet it first comes into
	proximity with. Even if the physical tool is used on multiple
	tablets, separate wp_tablet_tool objects will be created, one per
	tablet.

	This event is sent in the initial burst of events before the
	wp_tablet_tool.done event.
      </description>
      <arg name="hardware_serial_hi" type="uint" summary="the unique serial number of the tool, most significant bits"/>
      <arg name="hardware_serial_lo" type="uint" summary="the unique serial number of the tool, least significant bits"/>
    </event>

    <event name="hardware_id_wacom">
      <description summary="hardware id notification in Wacom's format">
	This event notifies the client of a hardware id available on this tool.

	The hardware id is a device-specific 64-bit id that provides extra
	information about the tool in use, beyond the wl_tool.type
	enumeration. The format of the id is specific to tablets made by
	Wacom Inc. For example, the hardware id of a Wacom Grip
	Pen (a stylus) is 0x802.

	This event is sent in the initial burst of events before the
	wp_tablet_tool.done event.
      </description>
      <arg name="hardware_id_hi" type="uint" summary="the hardware id, most significant bits"/>
      <arg name="hardware_id_lo" type="uint" summary="the hardware id, least significant bits"/>
    </event>

    <enum name="capability">
      <description summary="capability flags for a tool">
	Describes extra capabilities on a tablet.

	Any tool must provide x and y values, extra axes are
	device-specific.
      </description>
      <entry name="tilt" value="1" summary="Tilt axes"/>
      <entry name="pressure" value="2" summary="Pressure axis"/>
      <entry name="distance" value="3" summary="Distance axis"/>
      <entry name="rotation" value="4" summary="Z-rotation axis"/>
      <entry name="slider" value="5" summary="Slider axis"/>
      <entry name="wheel" value="6" summary="Wheel axis"/>
    </enum>

    <event name="capability">
      <description summary="tool capability notification">
	This event notifies the client of any capabilities of this tool,
	beyond the main set of x/y axes and tip up/down detection.

	One event is sent for each extra capability available on this tool.

	This event is sent in the initial burst of events before the
	wp_tablet_tool.done event.
      </description>
      <arg name="capability" type="uint" enum="capability" summary="the capability"/>
    </event>

    <event name="done">
      <description summary="tool description events sequence complete">
	This event signals the end of the initial burst of descriptive
	events. A client may consider the static description of the tool to
	be complete and finalize initialization of the tool.
      </description>
    </event>

    <event name="removed">
      <description summary="tool removed">
	This event is sent when the tool is removed from the system and will
	send no further events. Should the physical tool come back into
	proximity later, a new wp_tablet_tool object will be created.

	It is compositor-dependent when a tool is removed. A compositor may
	remove a tool on proximity out, tablet removal or any other reason.
	A compositor may also keep a tool alive until shutdown.

	If the tool is currently in proximity, a proximity_out event will be
	sent before the removed event. See wp_tablet_tool.proximity_out for
	the handling of any buttons logically down.

	When this event is received, the client must wp_tablet_tool.destroy
	the object.
      </description>
    </event>

    <event name="proximity_in">
      <description summary="proximity in event">
	Notification that this tool is focused on a certain surface.

	This event can be received when the tool has moved from one surface to
	another, or when the tool has come back into proximity above the
	surface.

	If any button is logically down when the tool comes into proximity,
	the respective button event is sent after the proximity_in event but
	within the same frame as the proximity_in event.
      </description>
      <arg name="serial" type="uint"/>
      <arg name="tablet" type="object" interface="zwp_tablet_v2" summary="The tablet the tool is in proximity of"/>
      <arg name="surface" type="object" interface="wl_surface" summary="The current surface the tablet tool is over"/>
    </event>

    <event name="proximity_out">
      <description summary="proximity out event">
	Notification that this tool has either left proximity, or is no
	longer focused on a certain surface.

	When the tablet tool leaves proximity of the tablet, button release
	events are sent for each button that was held down at the time of
	leaving proximity. These events are sent before the proximity_out
	event but within the same wp_tablet.frame.

	If the tool stays within proximity of the tablet, but the focus
	changes from one surface to another, a button release event may not
	be sent until the button is actually released or the tool leaves the
	proximity of the tablet.
      </description>
    </event>

    <event name="down">
      <description summary="tablet tool is making contact">
	Sent whenever the tablet tool comes in contact with the surface of the
	tablet.

	If the tool is already in contact with the tablet when entering the
	input region, the client owning said region will receive a
	wp_tablet.proximity_in event, followed by a wp_tablet.down
	event and a wp_tablet.frame event.

	Note that this event describes logical contact, not physical
	contact. On some devices, a compositor may not consider a tool in
	logical contact until a minimum physical pressure threshold is
	exceeded.
      </description>
      <arg name="serial" type="uint"/>
    </event>

    <event name="up">
      <description summary="tablet tool is no longer making contact">
	Sent whenever the tablet tool stops making contact with the surface of
	the tablet, or when the tablet tool moves out of the input region
	and the compositor grab (if any) is dismissed.

	If the tablet tool moves out of the input region while in contact
	with the surface of the tablet and the compositor does not have an
	ongoing grab on the surface, the client owning said region will
	receive a wp_tablet.up event, followed by a wp_tablet.proximity_out
	event and a wp_tablet.frame event. If the compositor has an ongoing
	grab on this device, this event sequence is sent whenever the grab
	is dismissed in the future.

	Note that this event describes logical contact, not physical
	contact. On some devices, a compositor may not consider a tool out
	of logical contact until physical pressure falls below a specific
	threshold.
      </description>
    </event>

    <event name="motion">
      <description summary="motion event">
	Sent whenever a tablet tool moves.
      </description>
      <arg name="x" type="fixed" summary="surface-local x coordinate"/>
      <arg name="y" type="fixed" summary="surface-local y coordinate"/>
    </event>

    <event name="pressure">
      <description summary="pressure change event">
	Sent whenever the pressure axis on a tool changes. The value of this
	event is normalized to a value between 0 and 65535.

	Note that pressure may be nonzero even when a tool is not in logical
	contact. See the down and up events for more details.
      </description>
      <arg name="pressure" type="uint" summary="The current pressure value"/>
    </event>

    <event name="distance">
      <description summary="distance change event">
	Sent whenever the distance axis on a tool changes. The value of this
	event is normalized to a value between 0 and 65535.

	Note that distance may be nonzero even when a tool is not in logical
	contact. See the down and up events for more details.
      </description>
      <arg name="distance" type="uint" summary="The current distance value"/>
    </event>

    <event name="tilt">
      <description summary="tilt change event">
	Sent whenever one or both of the tilt axes on a tool change. Each tilt
	value is in degrees, relative to the z-axis of the tablet.
	The angle is positive when the top of a tool tilts along the
	positive x or y axis.
      </description>
      <arg name="tilt_x" type="fixed" summary="The current value of the X tilt axis"/>
      <arg name="tilt_y" type="fixed" summary="The current value of the Y tilt axis"/>
    </event>

    <event name="rotation">
      <description summary="z-rotation change event">
	Sent whenever the z-rotation axis on the tool changes. The
	rotation value is in degrees clockwise from the tool's
	logical neutral position.
      </description>
      <arg name="degrees" type="fixed" summary="The current rotation of the Z axis"/>
    </event>

    <event name="slider">
      <description summary="Slider position change event">
	Sent whenever the slider position on the tool changes. The
	value is normalized between -65535 and 65535, with 0 as the logical
	neutral position of the slider.

	The slider is available on e.g. the Wacom Airbrush tool.
      </description>
      <arg name="position" type="int" summary="The current position of slider"/>
    </event>

    <event name="wheel">
      <description summary="Wheel delta event">
	Sent whenever the wheel on the tool emits an event. This event
	contains two values for the same axis change. The degrees value is
	in the same orientation as the wl_pointer.vertical_scroll axis. The
	clicks value is in discrete logical clicks of the mouse wheel. This
	value may be zero if the movement of the wheel was less
	than one logical click.

	Clients should choose either value and avoid mixing degrees and
	clicks. The compositor may accumulate values smaller than a logical
	click and emulate click events when a certain threshold is met.
	Thus, wl_tablet_tool.wheel events with non-zero clicks values may
	have different degrees values.
      </description>
      <arg name="degrees" type="fixed" summary="The wheel delta in degrees"/>
      <arg name="clicks" type="int" summary="The wheel delta in discrete clicks"/>
    </event>

    <enum name="button_state">
      <description summary="physical button state">
	Describes the physical state of a button that produced the button event.
      </description>
      <entry name="released" value="0" summary="button is not pressed"/>
      <entry name="pressed" value="1" summary="button is pressed"/>
    </enum>

    <event name="button">
      <description summary="button event">
	Sent whenever a button on the tool is pressed or released.

	If a button is held down when the tool moves in or out of proximity,
	button events are generated by the compositor. See
	wp_tablet_tool.proximity_in and wp_tablet_tool.proximity_out for
	details.
      </description>

      <arg name="serial" type="uint"/>
      <arg name="button" type="uint" summary="The button whose state has changed"/>
      <arg name="state" type="uint" enum="button_state" summary="Whether the button was pressed or released"/>
    </event>

    <event name="frame">
      <description summary="frame event">
	Marks the end of a series of axis and/or button updates from the
	tablet. The Wayland protocol requires axis updates to be sent
	sequentially, however all events within a frame should be considered
	one hardware event.
      </description>
      <arg name="time" type="uint" summary="The time of the event with millisecond granularity"/>
    </event>

    <enum name="error">
      <entry name="role" value="0" summary="given wl_surface has another role"/>
    </enum>
  </interface>

  <interface name="zwp_tablet_v2" version="1">
    <description summary="graphics tablet device">
      The wp_tablet interface represents one graphics tablet device. The
      tablet interface itself does not generate events; all events are
      generated by wp_tablet_tool objects when in proximity above a tablet.

      A tablet has a number of static characteristics, e.g. device name and
      pid/vid. These capabilities are sent in an event sequence after the
      wp_tablet_seat.tablet_added event. This initial event sequence is
      terminated by a wp_tablet.done event.
    </description>

    <request name="destroy" type="destructor">
      <description summary="destroy the tablet object">
	This destroys the client's resource for this tablet object.
      </description>
    </request>

    <event name="name">
      <description summary="tablet device name">
	This event is sent in the initial burst of events before the
	wp_tablet.done event.
      </description>
      <arg name="name" type="string" summary="the device name"/>
    </event>

    <event name="id">
      <description summary="tablet device USB vendor/product id">
	This event is sent in the initial burst of events before the
	wp_tablet.done event.
      </description>
      <arg name="vid" type="uint" summary="USB vendor id"/>
      <arg name="pid" type="uint" summary="USB product id"/>
    </event>

    <event name="path">
      <description summary="path to the device">
	A system-specific device path that indicates which device is behind
	this wp_tablet. This information may be used to gather additional
	information about the device, e.g. through libwacom.

	A device may have more than one device path. If so, multiple
	wp_tablet.path events are sent. A device may be emulated and not
	have a device path, and in that case this event will not be sent.

	The format of the path is unspecified, it may be a device node, a
	sysfs path, or some other identifier. It is up to the client to
	identify the string provided.

	This event is sent in the initial burst of events before the
	wp_tablet.done event.
      </description>
      <arg name="path" type="string" summary="path to local device"/>
    </event>

    <event name="done">
      <description summary="tablet description events sequence complete">
	This event is sent immediately to signal the end of the initial
	burst of descriptive events. A client may consider the static
	description of the tablet to be complete and finalize initialization
	of the tablet.
      </description>
    </event>

    <event name="removed">
      <description summary="tablet removed event">
	Sent when the tablet has been removed from the system. When a tablet
	is removed, some tools may be removed.

	When this event is received, the client must wp_tablet.destroy
	the object.
      </description>
    </event>
  </interface>

</protocol>
