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