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

    <event name="pad_added">
      <description summary="new pad notification">
	This event is sent whenever a new pad is known to the system. Typically,
	pads are physically attached to tablets and a pad_added event is
	sent immediately after the wp_tablet_seat.tablet_added.
	However, some standalone pad devices logically attach to tablets at
	runtime, and the client must wait for wp_tablet_pad.enter to know
	the tablet a pad is attached to.

	This event only provides the object id of the pad. All further
	features (buttons, strips, rings) are sent through the wp_tablet_pad
	interface.
      </description>
      <arg name="id" type="new_id" interface="zwp_tablet_pad_v2" summary="the newly added pad"/>
    </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>

  <interface name="zwp_tablet_pad_ring_v2" version="1">
    <description summary="pad ring">
      A circular interaction area, such as the touch ring on the Wacom Intuos
      Pro series tablets.

      Events on a ring are logically grouped by the wl_tablet_pad_ring.frame
      event.
    </description>

    <request name="set_feedback">
      <description summary="set compositor feedback">
	Request that the compositor use the provided feedback string
	associated with this ring. This request should be issued immediately
	after a wp_tablet_pad_group.mode_switch event from the corresponding
	group is received, or whenever the ring is mapped to a different
	action. See wp_tablet_pad_group.mode_switch for more details.

	Clients are encouraged to provide context-aware descriptions for
	the actions associated with the ring; compositors may use this
	information to offer visual feedback about the button layout
	(eg. on-screen displays).

	The provided string 'description' is a UTF-8 encoded string to be
	associated with this ring, and is considered user-visible; general
	internationalization rules apply.

	The serial argument will be that of the last
	wp_tablet_pad_group.mode_switch event received for the group of this
	ring. Requests providing other serials than the most recent one will be
	ignored.
      </description>
      <arg name="description" type="string" summary="ring description"/>
      <arg name="serial" type="uint" summary="serial of the mode switch event"/>
    </request>

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

    <enum name="source">
      <description summary="ring axis source">
	Describes the source types for ring events. This indicates to the
	client how a ring event was physically generated; a client may
	adjust the user interface accordingly. For example, events
	from a "finger" source may trigger kinetic scrolling.
      </description>
      <entry name="finger" value="1" summary="finger"/>
    </enum>

    <event name="source">
      <description summary="ring event source">
	Source information for ring events.

	This event does not occur on its own. It is sent before a
	wp_tablet_pad_ring.frame event and carries the source information
	for all events within that frame.

	The source specifies how this event was generated. If the source is
	wp_tablet_pad_ring.source.finger, a wp_tablet_pad_ring.stop event
	will be sent when the user lifts the finger off the device.

	This event is optional. If the source is unknown for an interaction,
	no event is sent.
      </description>
      <arg name="source" type="uint" enum="source" summary="the event source"/>
    </event>

    <event name="angle">
      <description summary="angle changed">
	Sent whenever the angle on a ring changes.

	The angle is provided in degrees clockwise from the logical
	north of the ring in the pad's current rotation.
      </description>
      <arg name="degrees" type="fixed" summary="the current angle in degrees"/>
    </event>

    <event name="stop">
      <description summary="interaction stopped">
	Stop notification for ring events.

	For some wp_tablet_pad_ring.source types, a wp_tablet_pad_ring.stop
	event is sent to notify a client that the interaction with the ring
	has terminated. This enables the client to implement kinetic scrolling.
	See the wp_tablet_pad_ring.source documentation for information on
	when this event may be generated.

	Any wp_tablet_pad_ring.angle events with the same source after this
	event should be considered as the start of a new interaction.
      </description>
    </event>

    <event name="frame">
      <description summary="end of a ring event sequence">
	Indicates the end of a set of ring events that logically belong
	together. A client is expected to accumulate the data in all events
	within the frame before proceeding.

	All wp_tablet_pad_ring events before a wp_tablet_pad_ring.frame event belong
	logically together. For example, on termination of a finger interaction
	on a ring the compositor will send a wp_tablet_pad_ring.source event,
	a wp_tablet_pad_ring.stop event and a wp_tablet_pad_ring.frame event.

	A wp_tablet_pad_ring.frame event is sent for every logical event
	group, even if the group only contains a single wp_tablet_pad_ring
	event. Specifically, a client may get a sequence: angle, frame,
	angle, frame, etc.
      </description>
      <arg name="time" type="uint" summary="timestamp with millisecond granularity"/>
    </event>
  </interface>

  <interface name="zwp_tablet_pad_strip_v2" version="1">
    <description summary="pad strip">
      A linear interaction area, such as the strips found in Wacom Cintiq
      models.

      Events on a strip are logically grouped by the wl_tablet_pad_strip.frame
      event.
    </description>

    <request name="set_feedback">
      <description summary="set compositor feedback">
	Requests the compositor to use the provided feedback string
	associated with this strip. This request should be issued immediately
	after a wp_tablet_pad_group.mode_switch event from the corresponding
	group is received, or whenever the strip is mapped to a different
	action. See wp_tablet_pad_group.mode_switch for more details.

	Clients are encouraged to provide context-aware descriptions for
	the actions associated with the strip, and compositors may use this
	information to offer visual feedback about the button layout
	(eg. on-screen displays).

	The provided string 'description' is a UTF-8 encoded string to be
	associated with this ring, and is considered user-visible; general
	internationalization rules apply.

	The serial argument will be that of the last
	wp_tablet_pad_group.mode_switch event received for the group of this
	strip. Requests providing other serials than the most recent one will be
	ignored.
      </description>
      <arg name="description" type="string" summary="strip description"/>
      <arg name="serial" type="uint" summary="serial of the mode switch event"/>
    </request>

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

    <enum name="source">
      <description summary="strip axis source">
	Describes the source types for strip events. This indicates to the
	client how a strip event was physically generated; a client may
	adjust the user interface accordingly. For example, events
	from a "finger" source may trigger kinetic scrolling.
      </description>
      <entry name="finger" value="1" summary="finger"/>
    </enum>

    <event name="source">
      <description summary="strip event source">
	Source information for strip events.

	This event does not occur on its own. It is sent before a
	wp_tablet_pad_strip.frame event and carries the source information
	for all events within that frame.

	The source specifies how this event was generated. If the source is
	wp_tablet_pad_strip.source.finger, a wp_tablet_pad_strip.stop event
	will be sent when the user lifts their finger off the device.

	This event is optional. If the source is unknown for an interaction,
	no event is sent.
      </description>
      <arg name="source" type="uint" enum="source" summary="the event source"/>
    </event>

    <event name="position">
      <description summary="position changed">
	Sent whenever the position on a strip changes.

	The position is normalized to a range of [0, 65535], the 0-value
	represents the top-most and/or left-most position of the strip in
	the pad's current rotation.
      </description>
      <arg name="position" type="uint" summary="the current position"/>
    </event>

    <event name="stop">
      <description summary="interaction stopped">
	Stop notification for strip events.

	For some wp_tablet_pad_strip.source types, a wp_tablet_pad_strip.stop
	event is sent to notify a client that the interaction with the strip
	has terminated. This enables the client to implement kinetic
	scrolling. See the wp_tablet_pad_strip.source documentation for
	information on when this event may be generated.

	Any wp_tablet_pad_strip.position events with the same source after this
	event should be considered as the start of a new interaction.
      </description>
    </event>

    <event name="frame">
      <description summary="end of a strip event sequence">
	Indicates the end of a set of events that represent one logical
	hardware strip event. A client is expected to accumulate the data
	in all events within the frame before proceeding.

	All wp_tablet_pad_strip events before a wp_tablet_pad_strip.frame event belong
	logically together. For example, on termination of a finger interaction
	on a strip the compositor will send a wp_tablet_pad_strip.source event,
	a wp_tablet_pad_strip.stop event and a wp_tablet_pad_strip.frame
	event.

	A wp_tablet_pad_strip.frame event is sent for every logical event
	group, even if the group only contains a single wp_tablet_pad_strip
	event. Specifically, a client may get a sequence: position, frame,
	position, frame, etc.
      </description>
      <arg name="time" type="uint" summary="timestamp with millisecond granularity"/>
    </event>
  </interface>

  <interface name="zwp_tablet_pad_group_v2" version="1">
    <description summary="a set of buttons, rings and strips">
      A pad group describes a distinct (sub)set of buttons, rings and strips
      present in the tablet. The criteria of this grouping is usually positional,
      eg. if a tablet has buttons on the left and right side, 2 groups will be
      presented. The physical arrangement of groups is undisclosed and may
      change on the fly.

      Pad groups will announce their features during pad initialization. Between
      the corresponding wp_tablet_pad.group event and wp_tablet_pad_group.done, the
      pad group will announce the buttons, rings and strips contained in it,
      plus the number of supported modes.

      Modes are a mechanism to allow multiple groups of actions for every element
      in the pad group. The number of groups and available modes in each is
      persistent across device plugs. The current mode is user-switchable, it
      will be announced through the wp_tablet_pad_group.mode_switch event both
      whenever it is switched, and after wp_tablet_pad.enter.

      The current mode logically applies to all elements in the pad group,
      although it is at clients' discretion whether to actually perform different
      actions, and/or issue the respective .set_feedback requests to notify the
      compositor. See the wp_tablet_pad_group.mode_switch event for more details.
    </description>

    <request name="destroy" type="destructor">
      <description summary="destroy the pad object">
	Destroy the wp_tablet_pad_group object. Objects created from this object
	are unaffected and should be destroyed separately.
      </description>
    </request>

    <event name="buttons">
      <description summary="buttons announced">
	Sent on wp_tablet_pad_group initialization to announce the available
	buttons in the group. Button indices start at 0, a button may only be
	in one group at a time.

	This event is first sent in the initial burst of events before the
	wp_tablet_pad_group.done event.

	Some buttons are reserved by the compositor. These buttons may not be
	assigned to any wp_tablet_pad_group. Compositors may broadcast this
	event in the case of changes to the mapping of these reserved buttons.
	If the compositor happens to reserve all buttons in a group, this event
	will be sent with an empty array.
      </description>
      <arg name="buttons" type="array" summary="buttons in this group"/>
    </event>

    <event name="ring">
      <description summary="ring announced">
	Sent on wp_tablet_pad_group initialization to announce available rings.
	One event is sent for each ring available on this pad group.

	This event is sent in the initial burst of events before the
	wp_tablet_pad_group.done event.
      </description>
      <arg name="ring" type="new_id" interface="zwp_tablet_pad_ring_v2"/>
    </event>

    <event name="strip">
      <description summary="strip announced">
	Sent on wp_tablet_pad initialization to announce available strips.
	One event is sent for each strip available on this pad group.

	This event is sent in the initial burst of events before the
	wp_tablet_pad_group.done event.
      </description>
      <arg name="strip" type="new_id" interface="zwp_tablet_pad_strip_v2"/>
    </event>

    <event name="modes">
      <description summary="mode-switch ability announced">
	Sent on wp_tablet_pad_group initialization to announce that the pad
	group may switch between modes. A client may use a mode to store a
	specific configuration for buttons, rings and strips and use the
	wl_tablet_pad_group.mode_switch event to toggle between these
	configurations. Mode indices start at 0.

	Switching modes is compositor-dependent. See the
	wp_tablet_pad_group.mode_switch event for more details.

	This event is sent in the initial burst of events before the
	wp_tablet_pad_group.done event. This event is only sent when more than
	more than one mode is available.
      </description>
      <arg name="modes" type="uint" summary="the number of modes"/>
    </event>

    <event name="done">
      <description summary="tablet group 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 group.
      </description>
    </event>

    <event name="mode_switch">
      <description summary="mode switch event">
	Notification that the mode was switched.

	A mode applies to all buttons, rings and strips in a group
	simultaneously, but a client is not required to assign different actions
	for each mode. For example, a client may have mode-specific button
	mappings but map the ring to vertical scrolling in all modes. Mode
	indices start at 0.

	Switching modes is compositor-dependent. The compositor may provide
	visual cues to the client about the mode, e.g. by toggling LEDs on
	the tablet device. Mode-switching may be software-controlled or
	controlled by one or more physical buttons. For example, on a Wacom
	Intuos Pro, the button inside the ring may be assigned to switch
	between modes.

	The compositor will also send this event after wp_tablet_pad.enter on
	each group in order to notify of the current mode. Groups that only
	feature one mode will use mode=0 when emitting this event.

	If a button action in the new mode differs from the action in the
	previous mode, the client should immediately issue a
	wp_tablet_pad.set_feedback request for each changed button.

	If a ring or strip action in the new mode differs from the action
	in the previous mode, the client should immediately issue a
	wp_tablet_ring.set_feedback or wp_tablet_strip.set_feedback request
	for each changed ring or strip.
      </description>
      <arg name="time" type="uint" summary="the time of the event with millisecond granularity"/>
      <arg name="serial" type="uint"/>
      <arg name="mode" type="uint" summary="the new mode of the pad"/>
    </event>
  </interface>

  <interface name="zwp_tablet_pad_v2" version="1">
    <description summary="a set of buttons, rings and strips">
      A pad device is a set of buttons, rings and strips
      usually physically present on the tablet device itself. Some
      exceptions exist where the pad device is physically detached, e.g. the
      Wacom ExpressKey Remote.

      Pad devices have no axes that control the cursor and are generally
      auxiliary devices to the tool devices used on the tablet surface.

      A pad device has a number of static characteristics, e.g. the number
      of rings. These capabilities are sent in an event sequence after the
      wp_tablet_seat.pad_added event before any actual events from this pad.
      This initial event sequence is terminated by a wp_tablet_pad.done
      event.

      All pad features (buttons, rings and strips) are logically divided into
      groups and all pads have at least one group. The available groups are
      notified through the wp_tablet_pad.group event; the compositor will
      emit one event per group before emitting wp_tablet_pad.done.

      Groups may have multiple modes. Modes allow clients to map multiple
      actions to a single pad feature. Only one mode can be active per group,
      although different groups may have different active modes.
    </description>

    <request name="set_feedback">
      <description summary="set compositor feedback">
	Requests the compositor to use the provided feedback string
	associated with this button. This request should be issued immediately
	after a wp_tablet_pad_group.mode_switch event from the corresponding
	group is received, or whenever a button is mapped to a different
	action. See wp_tablet_pad_group.mode_switch for more details.

	Clients are encouraged to provide context-aware descriptions for
	the actions associated with each button, and compositors may use
	this information to offer visual feedback on the button layout
	(e.g. on-screen displays).

	Button indices start at 0. Setting the feedback string on a button
	that is reserved by the compositor (i.e. not belonging to any
	wp_tablet_pad_group) does not generate an error but the compositor
	is free to ignore the request.

	The provided string 'description' is a UTF-8 encoded string to be
	associated with this ring, and is considered user-visible; general
	internationalization rules apply.

	The serial argument will be that of the last
	wp_tablet_pad_group.mode_switch event received for the group of this
	button. Requests providing other serials than the most recent one will
	be ignored.
      </description>
      <arg name="button" type="uint" summary="button index"/>
      <arg name="description" type="string" summary="button description"/>
      <arg name="serial" type="uint" summary="serial of the mode switch event"/>
    </request>

    <request name="destroy" type="destructor">
      <description summary="destroy the pad object">
	Destroy the wp_tablet_pad object. Objects created from this object
	are unaffected and should be destroyed separately.
      </description>
    </request>

    <event name="group">
      <description summary="group announced">
	Sent on wp_tablet_pad initialization to announce available groups.
	One event is sent for each pad group available.

	This event is sent in the initial burst of events before the
	wp_tablet_pad.done event. At least one group will be announced.
      </description>
      <arg name="pad_group" type="new_id" interface="zwp_tablet_pad_group_v2"/>
    </event>

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

	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_pad.done event.
      </description>
      <arg name="path" type="string" summary="path to local device"/>
    </event>

    <event name="buttons">
      <description summary="buttons announced">
	Sent on wp_tablet_pad initialization to announce the available
	buttons.

	This event is sent in the initial burst of events before the
	wp_tablet_pad.done event. This event is only sent when at least one
	button is available.
      </description>
      <arg name="buttons" type="uint" summary="the number of buttons"/>
    </event>

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

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

    <event name="button">
      <description summary="physical button state">
	Sent whenever the physical state of a button changes.
      </description>
      <arg name="time" type="uint" summary="the time of the event with millisecond granularity"/>
      <arg name="button" type="uint" summary="the index of the button that changed state"/>
      <arg name="state" type="uint" enum="button_state"/>
    </event>

    <event name="enter">
      <description summary="enter event">
	Notification that this pad is focused on the specified surface.
      </description>
      <arg name="serial" type="uint" summary="serial number of the enter event"/>
      <arg name="tablet" type="object" interface="zwp_tablet_v2" summary="the tablet the pad is attached to"/>
      <arg name="surface" type="object" interface="wl_surface" summary="surface the pad is focused on"/>
    </event>

    <event name="leave">
      <description summary="enter event">
	Notification that this pad is no longer focused on the specified
	surface.
      </description>
      <arg name="serial" type="uint" summary="serial number of the leave event"/>
      <arg name="surface" type="object" interface="wl_surface" summary="surface the pad is no longer focused on"/>
    </event>

    <event name="removed">
      <description summary="pad removed event">
	Sent when the pad has been removed from the system. When a tablet
	is removed its pad(s) will be removed too.

	When this event is received, the client must destroy all rings, strips
	and groups that were offered by this pad, and issue wp_tablet_pad.destroy
	the pad itself.
      </description>
    </event>
  </interface>
</protocol>
