xref: /aosp_15_r20/external/wayland-protocols/freedesktop.org/unstable/tablet/tablet-unstable-v1.xml (revision 6c119a463dd5c45dd05bbe67429293292dde15ee)
1*6c119a46SAndroid Build Coastguard Worker<?xml version="1.0" encoding="UTF-8"?>
2*6c119a46SAndroid Build Coastguard Worker<protocol name="tablet_unstable_v1">
3*6c119a46SAndroid Build Coastguard Worker
4*6c119a46SAndroid Build Coastguard Worker  <copyright>
5*6c119a46SAndroid Build Coastguard Worker    Copyright 2014 © Stephen "Lyude" Chandler Paul
6*6c119a46SAndroid Build Coastguard Worker    Copyright 2015-2016 © Red Hat, Inc.
7*6c119a46SAndroid Build Coastguard Worker
8*6c119a46SAndroid Build Coastguard Worker    Permission is hereby granted, free of charge, to any person
9*6c119a46SAndroid Build Coastguard Worker    obtaining a copy of this software and associated documentation files
10*6c119a46SAndroid Build Coastguard Worker    (the "Software"), to deal in the Software without restriction,
11*6c119a46SAndroid Build Coastguard Worker    including without limitation the rights to use, copy, modify, merge,
12*6c119a46SAndroid Build Coastguard Worker    publish, distribute, sublicense, and/or sell copies of the Software,
13*6c119a46SAndroid Build Coastguard Worker    and to permit persons to whom the Software is furnished to do so,
14*6c119a46SAndroid Build Coastguard Worker    subject to the following conditions:
15*6c119a46SAndroid Build Coastguard Worker
16*6c119a46SAndroid Build Coastguard Worker    The above copyright notice and this permission notice (including the
17*6c119a46SAndroid Build Coastguard Worker    next paragraph) shall be included in all copies or substantial
18*6c119a46SAndroid Build Coastguard Worker    portions of the Software.
19*6c119a46SAndroid Build Coastguard Worker
20*6c119a46SAndroid Build Coastguard Worker    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21*6c119a46SAndroid Build Coastguard Worker    EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22*6c119a46SAndroid Build Coastguard Worker    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23*6c119a46SAndroid Build Coastguard Worker    NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
24*6c119a46SAndroid Build Coastguard Worker    BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
25*6c119a46SAndroid Build Coastguard Worker    ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
26*6c119a46SAndroid Build Coastguard Worker    CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
27*6c119a46SAndroid Build Coastguard Worker    SOFTWARE.
28*6c119a46SAndroid Build Coastguard Worker  </copyright>
29*6c119a46SAndroid Build Coastguard Worker
30*6c119a46SAndroid Build Coastguard Worker  <description summary="Wayland protocol for graphics tablets">
31*6c119a46SAndroid Build Coastguard Worker    This description provides a high-level overview of the interplay between
32*6c119a46SAndroid Build Coastguard Worker    the interfaces defined this protocol. For details, see the protocol
33*6c119a46SAndroid Build Coastguard Worker    specification.
34*6c119a46SAndroid Build Coastguard Worker
35*6c119a46SAndroid Build Coastguard Worker    More than one tablet may exist, and device-specifics matter. Tablets are
36*6c119a46SAndroid Build Coastguard Worker    not represented by a single virtual device like wl_pointer. A client
37*6c119a46SAndroid Build Coastguard Worker    binds to the tablet manager object which is just a proxy object. From
38*6c119a46SAndroid Build Coastguard Worker    that, the client requests wp_tablet_manager.get_tablet_seat(wl_seat)
39*6c119a46SAndroid Build Coastguard Worker    and that returns the actual interface that has all the tablets. With
40*6c119a46SAndroid Build Coastguard Worker    this indirection, we can avoid merging wp_tablet into the actual Wayland
41*6c119a46SAndroid Build Coastguard Worker    protocol, a long-term benefit.
42*6c119a46SAndroid Build Coastguard Worker
43*6c119a46SAndroid Build Coastguard Worker    The wp_tablet_seat sends a "tablet added" event for each tablet
44*6c119a46SAndroid Build Coastguard Worker    connected. That event is followed by descriptive events about the
45*6c119a46SAndroid Build Coastguard Worker    hardware; currently that includes events for name, vid/pid and
46*6c119a46SAndroid Build Coastguard Worker    a wp_tablet.path event that describes a local path. This path can be
47*6c119a46SAndroid Build Coastguard Worker    used to uniquely identify a tablet or get more information through
48*6c119a46SAndroid Build Coastguard Worker    libwacom. Emulated or nested tablets can skip any of those, e.g. a
49*6c119a46SAndroid Build Coastguard Worker    virtual tablet may not have a vid/pid. The sequence of descriptive
50*6c119a46SAndroid Build Coastguard Worker    events is terminated by a wp_tablet.done event to signal that a client
51*6c119a46SAndroid Build Coastguard Worker    may now finalize any initialization for that tablet.
52*6c119a46SAndroid Build Coastguard Worker
53*6c119a46SAndroid Build Coastguard Worker    Events from tablets require a tool in proximity. Tools are also managed
54*6c119a46SAndroid Build Coastguard Worker    by the tablet seat; a "tool added" event is sent whenever a tool is new
55*6c119a46SAndroid Build Coastguard Worker    to the compositor. That event is followed by a number of descriptive
56*6c119a46SAndroid Build Coastguard Worker    events about the hardware; currently that includes capabilities,
57*6c119a46SAndroid Build Coastguard Worker    hardware id and serial number, and tool type. Similar to the tablet
58*6c119a46SAndroid Build Coastguard Worker    interface, a wp_tablet_tool.done event is sent to terminate that initial
59*6c119a46SAndroid Build Coastguard Worker    sequence.
60*6c119a46SAndroid Build Coastguard Worker
61*6c119a46SAndroid Build Coastguard Worker    Any event from a tool happens on the wp_tablet_tool interface. When the
62*6c119a46SAndroid Build Coastguard Worker    tool gets into proximity of the tablet, a proximity_in event is sent on
63*6c119a46SAndroid Build Coastguard Worker    the wp_tablet_tool interface, listing the tablet and the surface. That
64*6c119a46SAndroid Build Coastguard Worker    event is followed by a motion event with the coordinates. After that,
65*6c119a46SAndroid Build Coastguard Worker    it's the usual motion, axis, button, etc. events. The protocol's
66*6c119a46SAndroid Build Coastguard Worker    serialisation means events are grouped by wp_tablet_tool.frame events.
67*6c119a46SAndroid Build Coastguard Worker
68*6c119a46SAndroid Build Coastguard Worker    Two special events (that don't exist in X) are down and up. They signal
69*6c119a46SAndroid Build Coastguard Worker    "tip touching the surface". For tablets without real proximity
70*6c119a46SAndroid Build Coastguard Worker    detection, the sequence is: proximity_in, motion, down, frame.
71*6c119a46SAndroid Build Coastguard Worker
72*6c119a46SAndroid Build Coastguard Worker    When the tool leaves proximity, a proximity_out event is sent. If any
73*6c119a46SAndroid Build Coastguard Worker    button is still down, a button release event is sent before this
74*6c119a46SAndroid Build Coastguard Worker    proximity event. These button events are sent in the same frame as the
75*6c119a46SAndroid Build Coastguard Worker    proximity event to signal to the client that the buttons were held when
76*6c119a46SAndroid Build Coastguard Worker    the tool left proximity.
77*6c119a46SAndroid Build Coastguard Worker
78*6c119a46SAndroid Build Coastguard Worker    If the tool moves out of the surface but stays in proximity (i.e.
79*6c119a46SAndroid Build Coastguard Worker    between windows), compositor-specific grab policies apply. This usually
80*6c119a46SAndroid Build Coastguard Worker    means that the proximity-out is delayed until all buttons are released.
81*6c119a46SAndroid Build Coastguard Worker
82*6c119a46SAndroid Build Coastguard Worker    Moving a tool physically from one tablet to the other has no real effect
83*6c119a46SAndroid Build Coastguard Worker    on the protocol, since we already have the tool object from the "tool
84*6c119a46SAndroid Build Coastguard Worker    added" event. All the information is already there and the proximity
85*6c119a46SAndroid Build Coastguard Worker    events on both tablets are all a client needs to reconstruct what
86*6c119a46SAndroid Build Coastguard Worker    happened.
87*6c119a46SAndroid Build Coastguard Worker
88*6c119a46SAndroid Build Coastguard Worker    Some extra axes are normalized, i.e. the client knows the range as
89*6c119a46SAndroid Build Coastguard Worker    specified in the protocol (e.g. [0, 65535]), the granularity however is
90*6c119a46SAndroid Build Coastguard Worker    unknown. The current normalized axes are pressure, distance, and slider.
91*6c119a46SAndroid Build Coastguard Worker
92*6c119a46SAndroid Build Coastguard Worker    Other extra axes are in physical units as specified in the protocol.
93*6c119a46SAndroid Build Coastguard Worker    The current extra axes with physical units are tilt, rotation and
94*6c119a46SAndroid Build Coastguard Worker    wheel rotation.
95*6c119a46SAndroid Build Coastguard Worker
96*6c119a46SAndroid Build Coastguard Worker    Since tablets work independently of the pointer controlled by the mouse,
97*6c119a46SAndroid Build Coastguard Worker    the focus handling is independent too and controlled by proximity.
98*6c119a46SAndroid Build Coastguard Worker    The wp_tablet_tool.set_cursor request sets a tool-specific cursor.
99*6c119a46SAndroid Build Coastguard Worker    This cursor surface may be the same as the mouse cursor, and it may be
100*6c119a46SAndroid Build Coastguard Worker    the same across tools but it is possible to be more fine-grained. For
101*6c119a46SAndroid Build Coastguard Worker    example, a client may set different cursors for the pen and eraser.
102*6c119a46SAndroid Build Coastguard Worker
103*6c119a46SAndroid Build Coastguard Worker    Tools are generally independent of tablets and it is
104*6c119a46SAndroid Build Coastguard Worker    compositor-specific policy when a tool can be removed. Common approaches
105*6c119a46SAndroid Build Coastguard Worker    will likely include some form of removing a tool when all tablets the
106*6c119a46SAndroid Build Coastguard Worker    tool was used on are removed.
107*6c119a46SAndroid Build Coastguard Worker
108*6c119a46SAndroid Build Coastguard Worker    Warning! The protocol described in this file is experimental and
109*6c119a46SAndroid Build Coastguard Worker    backward incompatible changes may be made. Backward compatible changes
110*6c119a46SAndroid Build Coastguard Worker    may be added together with the corresponding interface version bump.
111*6c119a46SAndroid Build Coastguard Worker    Backward incompatible changes are done by bumping the version number in
112*6c119a46SAndroid Build Coastguard Worker    the protocol and interface names and resetting the interface version.
113*6c119a46SAndroid Build Coastguard Worker    Once the protocol is to be declared stable, the 'z' prefix and the
114*6c119a46SAndroid Build Coastguard Worker    version number in the protocol and interface names are removed and the
115*6c119a46SAndroid Build Coastguard Worker    interface version number is reset.
116*6c119a46SAndroid Build Coastguard Worker  </description>
117*6c119a46SAndroid Build Coastguard Worker
118*6c119a46SAndroid Build Coastguard Worker  <interface name="zwp_tablet_manager_v1" version="1">
119*6c119a46SAndroid Build Coastguard Worker    <description summary="controller object for graphic tablet devices">
120*6c119a46SAndroid Build Coastguard Worker      An object that provides access to the graphics tablets available on this
121*6c119a46SAndroid Build Coastguard Worker      system. All tablets are associated with a seat, to get access to the
122*6c119a46SAndroid Build Coastguard Worker      actual tablets, use wp_tablet_manager.get_tablet_seat.
123*6c119a46SAndroid Build Coastguard Worker    </description>
124*6c119a46SAndroid Build Coastguard Worker
125*6c119a46SAndroid Build Coastguard Worker    <request name="get_tablet_seat">
126*6c119a46SAndroid Build Coastguard Worker      <description summary="get the tablet seat">
127*6c119a46SAndroid Build Coastguard Worker	Get the wp_tablet_seat object for the given seat. This object
128*6c119a46SAndroid Build Coastguard Worker	provides access to all graphics tablets in this seat.
129*6c119a46SAndroid Build Coastguard Worker      </description>
130*6c119a46SAndroid Build Coastguard Worker      <arg name="tablet_seat" type="new_id" interface="zwp_tablet_seat_v1"/>
131*6c119a46SAndroid Build Coastguard Worker      <arg name="seat" type="object" interface="wl_seat" summary="The wl_seat object to retrieve the tablets for" />
132*6c119a46SAndroid Build Coastguard Worker    </request>
133*6c119a46SAndroid Build Coastguard Worker
134*6c119a46SAndroid Build Coastguard Worker    <request name="destroy" type="destructor">
135*6c119a46SAndroid Build Coastguard Worker      <description summary="release the memory for the tablet manager object">
136*6c119a46SAndroid Build Coastguard Worker	Destroy the wp_tablet_manager object. Objects created from this
137*6c119a46SAndroid Build Coastguard Worker	object are unaffected and should be destroyed separately.
138*6c119a46SAndroid Build Coastguard Worker      </description>
139*6c119a46SAndroid Build Coastguard Worker    </request>
140*6c119a46SAndroid Build Coastguard Worker  </interface>
141*6c119a46SAndroid Build Coastguard Worker
142*6c119a46SAndroid Build Coastguard Worker  <interface name="zwp_tablet_seat_v1" version="1">
143*6c119a46SAndroid Build Coastguard Worker    <description summary="controller object for graphic tablet devices of a seat">
144*6c119a46SAndroid Build Coastguard Worker      An object that provides access to the graphics tablets available on this
145*6c119a46SAndroid Build Coastguard Worker      seat. After binding to this interface, the compositor sends a set of
146*6c119a46SAndroid Build Coastguard Worker      wp_tablet_seat.tablet_added and wp_tablet_seat.tool_added events.
147*6c119a46SAndroid Build Coastguard Worker    </description>
148*6c119a46SAndroid Build Coastguard Worker
149*6c119a46SAndroid Build Coastguard Worker    <request name="destroy" type="destructor">
150*6c119a46SAndroid Build Coastguard Worker      <description summary="release the memory for the tablet seat object">
151*6c119a46SAndroid Build Coastguard Worker	Destroy the wp_tablet_seat object. Objects created from this
152*6c119a46SAndroid Build Coastguard Worker	object are unaffected and should be destroyed separately.
153*6c119a46SAndroid Build Coastguard Worker      </description>
154*6c119a46SAndroid Build Coastguard Worker    </request>
155*6c119a46SAndroid Build Coastguard Worker
156*6c119a46SAndroid Build Coastguard Worker    <event name="tablet_added">
157*6c119a46SAndroid Build Coastguard Worker      <description summary="new device notification">
158*6c119a46SAndroid Build Coastguard Worker	This event is sent whenever a new tablet becomes available on this
159*6c119a46SAndroid Build Coastguard Worker	seat. This event only provides the object id of the tablet, any
160*6c119a46SAndroid Build Coastguard Worker	static information about the tablet (device name, vid/pid, etc.) is
161*6c119a46SAndroid Build Coastguard Worker	sent through the wp_tablet interface.
162*6c119a46SAndroid Build Coastguard Worker      </description>
163*6c119a46SAndroid Build Coastguard Worker      <arg name="id" type="new_id" interface="zwp_tablet_v1" summary="the newly added graphics tablet"/>
164*6c119a46SAndroid Build Coastguard Worker    </event>
165*6c119a46SAndroid Build Coastguard Worker
166*6c119a46SAndroid Build Coastguard Worker    <event name="tool_added">
167*6c119a46SAndroid Build Coastguard Worker      <description summary="a new tool has been used with a tablet">
168*6c119a46SAndroid Build Coastguard Worker	This event is sent whenever a tool that has not previously been used
169*6c119a46SAndroid Build Coastguard Worker	with a tablet comes into use. This event only provides the object id
170*6c119a46SAndroid Build Coastguard Worker	of the tool; any static information about the tool (capabilities,
171*6c119a46SAndroid Build Coastguard Worker	type, etc.) is sent through the wp_tablet_tool interface.
172*6c119a46SAndroid Build Coastguard Worker      </description>
173*6c119a46SAndroid Build Coastguard Worker      <arg name="id" type="new_id" interface="zwp_tablet_tool_v1" summary="the newly added tablet tool"/>
174*6c119a46SAndroid Build Coastguard Worker    </event>
175*6c119a46SAndroid Build Coastguard Worker  </interface>
176*6c119a46SAndroid Build Coastguard Worker
177*6c119a46SAndroid Build Coastguard Worker  <interface name="zwp_tablet_tool_v1" version="1">
178*6c119a46SAndroid Build Coastguard Worker    <description summary="a physical tablet tool">
179*6c119a46SAndroid Build Coastguard Worker      An object that represents a physical tool that has been, or is
180*6c119a46SAndroid Build Coastguard Worker      currently in use with a tablet in this seat. Each wp_tablet_tool
181*6c119a46SAndroid Build Coastguard Worker      object stays valid until the client destroys it; the compositor
182*6c119a46SAndroid Build Coastguard Worker      reuses the wp_tablet_tool object to indicate that the object's
183*6c119a46SAndroid Build Coastguard Worker      respective physical tool has come into proximity of a tablet again.
184*6c119a46SAndroid Build Coastguard Worker
185*6c119a46SAndroid Build Coastguard Worker      A wp_tablet_tool object's relation to a physical tool depends on the
186*6c119a46SAndroid Build Coastguard Worker      tablet's ability to report serial numbers. If the tablet supports
187*6c119a46SAndroid Build Coastguard Worker      this capability, then the object represents a specific physical tool
188*6c119a46SAndroid Build Coastguard Worker      and can be identified even when used on multiple tablets.
189*6c119a46SAndroid Build Coastguard Worker
190*6c119a46SAndroid Build Coastguard Worker      A tablet tool has a number of static characteristics, e.g. tool type,
191*6c119a46SAndroid Build Coastguard Worker      hardware_serial and capabilities. These capabilities are sent in an
192*6c119a46SAndroid Build Coastguard Worker      event sequence after the wp_tablet_seat.tool_added event before any
193*6c119a46SAndroid Build Coastguard Worker      actual events from this tool. This initial event sequence is
194*6c119a46SAndroid Build Coastguard Worker      terminated by a wp_tablet_tool.done event.
195*6c119a46SAndroid Build Coastguard Worker
196*6c119a46SAndroid Build Coastguard Worker      Tablet tool events are grouped by wp_tablet_tool.frame events.
197*6c119a46SAndroid Build Coastguard Worker      Any events received before a wp_tablet_tool.frame event should be
198*6c119a46SAndroid Build Coastguard Worker      considered part of the same hardware state change.
199*6c119a46SAndroid Build Coastguard Worker    </description>
200*6c119a46SAndroid Build Coastguard Worker
201*6c119a46SAndroid Build Coastguard Worker    <request name="set_cursor">
202*6c119a46SAndroid Build Coastguard Worker      <description summary="set the tablet tool's surface">
203*6c119a46SAndroid Build Coastguard Worker	Sets the surface of the cursor used for this tool on the given
204*6c119a46SAndroid Build Coastguard Worker	tablet. This request only takes effect if the tool is in proximity
205*6c119a46SAndroid Build Coastguard Worker	of one of the requesting client's surfaces or the surface parameter
206*6c119a46SAndroid Build Coastguard Worker	is the current pointer surface. If there was a previous surface set
207*6c119a46SAndroid Build Coastguard Worker	with this request it is replaced. If surface is NULL, the cursor
208*6c119a46SAndroid Build Coastguard Worker	image is hidden.
209*6c119a46SAndroid Build Coastguard Worker
210*6c119a46SAndroid Build Coastguard Worker	The parameters hotspot_x and hotspot_y define the position of the
211*6c119a46SAndroid Build Coastguard Worker	pointer surface relative to the pointer location. Its top-left corner
212*6c119a46SAndroid Build Coastguard Worker	is always at (x, y) - (hotspot_x, hotspot_y), where (x, y) are the
213*6c119a46SAndroid Build Coastguard Worker	coordinates of the pointer location, in surface-local coordinates.
214*6c119a46SAndroid Build Coastguard Worker
215*6c119a46SAndroid Build Coastguard Worker	On surface.attach requests to the pointer surface, hotspot_x and
216*6c119a46SAndroid Build Coastguard Worker	hotspot_y are decremented by the x and y parameters passed to the
217*6c119a46SAndroid Build Coastguard Worker	request. Attach must be confirmed by wl_surface.commit as usual.
218*6c119a46SAndroid Build Coastguard Worker
219*6c119a46SAndroid Build Coastguard Worker	The hotspot can also be updated by passing the currently set pointer
220*6c119a46SAndroid Build Coastguard Worker	surface to this request with new values for hotspot_x and hotspot_y.
221*6c119a46SAndroid Build Coastguard Worker
222*6c119a46SAndroid Build Coastguard Worker	The current and pending input regions of the wl_surface are cleared,
223*6c119a46SAndroid Build Coastguard Worker	and wl_surface.set_input_region is ignored until the wl_surface is no
224*6c119a46SAndroid Build Coastguard Worker	longer used as the cursor. When the use as a cursor ends, the current
225*6c119a46SAndroid Build Coastguard Worker	and pending input regions become undefined, and the wl_surface is
226*6c119a46SAndroid Build Coastguard Worker	unmapped.
227*6c119a46SAndroid Build Coastguard Worker
228*6c119a46SAndroid Build Coastguard Worker	This request gives the surface the role of a cursor. The role
229*6c119a46SAndroid Build Coastguard Worker	assigned by this request is the same as assigned by
230*6c119a46SAndroid Build Coastguard Worker	wl_pointer.set_cursor meaning the same surface can be
231*6c119a46SAndroid Build Coastguard Worker	used both as a wl_pointer cursor and a wp_tablet cursor. If the
232*6c119a46SAndroid Build Coastguard Worker	surface already has another role, it raises a protocol error.
233*6c119a46SAndroid Build Coastguard Worker	The surface may be used on multiple tablets and across multiple
234*6c119a46SAndroid Build Coastguard Worker	seats.
235*6c119a46SAndroid Build Coastguard Worker      </description>
236*6c119a46SAndroid Build Coastguard Worker      <arg name="serial" type="uint" summary="serial of the enter event"/>
237*6c119a46SAndroid Build Coastguard Worker      <arg name="surface" type="object" interface="wl_surface" allow-null="true"/>
238*6c119a46SAndroid Build Coastguard Worker      <arg name="hotspot_x" type="int" summary="surface-local x coordinate"/>
239*6c119a46SAndroid Build Coastguard Worker      <arg name="hotspot_y" type="int" summary="surface-local y coordinate"/>
240*6c119a46SAndroid Build Coastguard Worker    </request>
241*6c119a46SAndroid Build Coastguard Worker
242*6c119a46SAndroid Build Coastguard Worker    <request name="destroy" type="destructor">
243*6c119a46SAndroid Build Coastguard Worker      <description summary="destroy the tool object">
244*6c119a46SAndroid Build Coastguard Worker	This destroys the client's resource for this tool object.
245*6c119a46SAndroid Build Coastguard Worker      </description>
246*6c119a46SAndroid Build Coastguard Worker    </request>
247*6c119a46SAndroid Build Coastguard Worker
248*6c119a46SAndroid Build Coastguard Worker    <enum name="type">
249*6c119a46SAndroid Build Coastguard Worker      <description summary="a physical tool type">
250*6c119a46SAndroid Build Coastguard Worker	Describes the physical type of a tool. The physical type of a tool
251*6c119a46SAndroid Build Coastguard Worker	generally defines its base usage.
252*6c119a46SAndroid Build Coastguard Worker
253*6c119a46SAndroid Build Coastguard Worker	The mouse tool represents a mouse-shaped tool that is not a relative
254*6c119a46SAndroid Build Coastguard Worker	device but bound to the tablet's surface, providing absolute
255*6c119a46SAndroid Build Coastguard Worker	coordinates.
256*6c119a46SAndroid Build Coastguard Worker
257*6c119a46SAndroid Build Coastguard Worker	The lens tool is a mouse-shaped tool with an attached lens to
258*6c119a46SAndroid Build Coastguard Worker	provide precision focus.
259*6c119a46SAndroid Build Coastguard Worker      </description>
260*6c119a46SAndroid Build Coastguard Worker      <entry name="pen" value="0x140" summary="Pen"/>
261*6c119a46SAndroid Build Coastguard Worker      <entry name="eraser" value="0x141" summary="Eraser"/>
262*6c119a46SAndroid Build Coastguard Worker      <entry name="brush" value="0x142" summary="Brush"/>
263*6c119a46SAndroid Build Coastguard Worker      <entry name="pencil" value="0x143" summary="Pencil"/>
264*6c119a46SAndroid Build Coastguard Worker      <entry name="airbrush" value="0x144" summary="Airbrush"/>
265*6c119a46SAndroid Build Coastguard Worker      <entry name="finger" value="0x145" summary="Finger"/>
266*6c119a46SAndroid Build Coastguard Worker      <entry name="mouse" value="0x146" summary="Mouse"/>
267*6c119a46SAndroid Build Coastguard Worker      <entry name="lens" value="0x147" summary="Lens"/>
268*6c119a46SAndroid Build Coastguard Worker    </enum>
269*6c119a46SAndroid Build Coastguard Worker
270*6c119a46SAndroid Build Coastguard Worker    <event name="type">
271*6c119a46SAndroid Build Coastguard Worker      <description summary="tool type">
272*6c119a46SAndroid Build Coastguard Worker	The tool type is the high-level type of the tool and usually decides
273*6c119a46SAndroid Build Coastguard Worker	the interaction expected from this tool.
274*6c119a46SAndroid Build Coastguard Worker
275*6c119a46SAndroid Build Coastguard Worker	This event is sent in the initial burst of events before the
276*6c119a46SAndroid Build Coastguard Worker	wp_tablet_tool.done event.
277*6c119a46SAndroid Build Coastguard Worker      </description>
278*6c119a46SAndroid Build Coastguard Worker      <arg name="tool_type" type="uint" enum="type" summary="the physical tool type"/>
279*6c119a46SAndroid Build Coastguard Worker    </event>
280*6c119a46SAndroid Build Coastguard Worker
281*6c119a46SAndroid Build Coastguard Worker    <event name="hardware_serial">
282*6c119a46SAndroid Build Coastguard Worker      <description summary="unique hardware serial number of the tool">
283*6c119a46SAndroid Build Coastguard Worker	If the physical tool can be identified by a unique 64-bit serial
284*6c119a46SAndroid Build Coastguard Worker	number, this event notifies the client of this serial number.
285*6c119a46SAndroid Build Coastguard Worker
286*6c119a46SAndroid Build Coastguard Worker	If multiple tablets are available in the same seat and the tool is
287*6c119a46SAndroid Build Coastguard Worker	uniquely identifiable by the serial number, that tool may move
288*6c119a46SAndroid Build Coastguard Worker	between tablets.
289*6c119a46SAndroid Build Coastguard Worker
290*6c119a46SAndroid Build Coastguard Worker	Otherwise, if the tool has no serial number and this event is
291*6c119a46SAndroid Build Coastguard Worker	missing, the tool is tied to the tablet it first comes into
292*6c119a46SAndroid Build Coastguard Worker	proximity with. Even if the physical tool is used on multiple
293*6c119a46SAndroid Build Coastguard Worker	tablets, separate wp_tablet_tool objects will be created, one per
294*6c119a46SAndroid Build Coastguard Worker	tablet.
295*6c119a46SAndroid Build Coastguard Worker
296*6c119a46SAndroid Build Coastguard Worker	This event is sent in the initial burst of events before the
297*6c119a46SAndroid Build Coastguard Worker	wp_tablet_tool.done event.
298*6c119a46SAndroid Build Coastguard Worker      </description>
299*6c119a46SAndroid Build Coastguard Worker      <arg name="hardware_serial_hi" type="uint" summary="the unique serial number of the tool, most significant bits"/>
300*6c119a46SAndroid Build Coastguard Worker      <arg name="hardware_serial_lo" type="uint" summary="the unique serial number of the tool, least significant bits"/>
301*6c119a46SAndroid Build Coastguard Worker    </event>
302*6c119a46SAndroid Build Coastguard Worker
303*6c119a46SAndroid Build Coastguard Worker    <event name="hardware_id_wacom">
304*6c119a46SAndroid Build Coastguard Worker      <description summary="hardware id notification in Wacom's format">
305*6c119a46SAndroid Build Coastguard Worker	This event notifies the client of a hardware id available on this tool.
306*6c119a46SAndroid Build Coastguard Worker
307*6c119a46SAndroid Build Coastguard Worker	The hardware id is a device-specific 64-bit id that provides extra
308*6c119a46SAndroid Build Coastguard Worker	information about the tool in use, beyond the wl_tool.type
309*6c119a46SAndroid Build Coastguard Worker	enumeration. The format of the id is specific to tablets made by
310*6c119a46SAndroid Build Coastguard Worker	Wacom Inc. For example, the hardware id of a Wacom Grip
311*6c119a46SAndroid Build Coastguard Worker	Pen (a stylus) is 0x802.
312*6c119a46SAndroid Build Coastguard Worker
313*6c119a46SAndroid Build Coastguard Worker	This event is sent in the initial burst of events before the
314*6c119a46SAndroid Build Coastguard Worker	wp_tablet_tool.done event.
315*6c119a46SAndroid Build Coastguard Worker      </description>
316*6c119a46SAndroid Build Coastguard Worker      <arg name="hardware_id_hi" type="uint" summary="the hardware id, most significant bits"/>
317*6c119a46SAndroid Build Coastguard Worker      <arg name="hardware_id_lo" type="uint" summary="the hardware id, least significant bits"/>
318*6c119a46SAndroid Build Coastguard Worker    </event>
319*6c119a46SAndroid Build Coastguard Worker
320*6c119a46SAndroid Build Coastguard Worker    <enum name="capability">
321*6c119a46SAndroid Build Coastguard Worker      <description summary="capability flags for a tool">
322*6c119a46SAndroid Build Coastguard Worker	Describes extra capabilities on a tablet.
323*6c119a46SAndroid Build Coastguard Worker
324*6c119a46SAndroid Build Coastguard Worker	Any tool must provide x and y values, extra axes are
325*6c119a46SAndroid Build Coastguard Worker	device-specific.
326*6c119a46SAndroid Build Coastguard Worker      </description>
327*6c119a46SAndroid Build Coastguard Worker      <entry name="tilt" value="1" summary="Tilt axes"/>
328*6c119a46SAndroid Build Coastguard Worker      <entry name="pressure" value="2" summary="Pressure axis"/>
329*6c119a46SAndroid Build Coastguard Worker      <entry name="distance" value="3" summary="Distance axis"/>
330*6c119a46SAndroid Build Coastguard Worker      <entry name="rotation" value="4" summary="Z-rotation axis"/>
331*6c119a46SAndroid Build Coastguard Worker      <entry name="slider" value="5" summary="Slider axis"/>
332*6c119a46SAndroid Build Coastguard Worker      <entry name="wheel" value="6" summary="Wheel axis"/>
333*6c119a46SAndroid Build Coastguard Worker    </enum>
334*6c119a46SAndroid Build Coastguard Worker
335*6c119a46SAndroid Build Coastguard Worker    <event name="capability">
336*6c119a46SAndroid Build Coastguard Worker      <description summary="tool capability notification">
337*6c119a46SAndroid Build Coastguard Worker	This event notifies the client of any capabilities of this tool,
338*6c119a46SAndroid Build Coastguard Worker	beyond the main set of x/y axes and tip up/down detection.
339*6c119a46SAndroid Build Coastguard Worker
340*6c119a46SAndroid Build Coastguard Worker	One event is sent for each extra capability available on this tool.
341*6c119a46SAndroid Build Coastguard Worker
342*6c119a46SAndroid Build Coastguard Worker	This event is sent in the initial burst of events before the
343*6c119a46SAndroid Build Coastguard Worker	wp_tablet_tool.done event.
344*6c119a46SAndroid Build Coastguard Worker      </description>
345*6c119a46SAndroid Build Coastguard Worker      <arg name="capability" type="uint" enum="capability" summary="the capability"/>
346*6c119a46SAndroid Build Coastguard Worker    </event>
347*6c119a46SAndroid Build Coastguard Worker
348*6c119a46SAndroid Build Coastguard Worker    <event name="done">
349*6c119a46SAndroid Build Coastguard Worker      <description summary="tool description events sequence complete">
350*6c119a46SAndroid Build Coastguard Worker	This event signals the end of the initial burst of descriptive
351*6c119a46SAndroid Build Coastguard Worker	events. A client may consider the static description of the tool to
352*6c119a46SAndroid Build Coastguard Worker	be complete and finalize initialization of the tool.
353*6c119a46SAndroid Build Coastguard Worker      </description>
354*6c119a46SAndroid Build Coastguard Worker    </event>
355*6c119a46SAndroid Build Coastguard Worker
356*6c119a46SAndroid Build Coastguard Worker    <event name="removed">
357*6c119a46SAndroid Build Coastguard Worker      <description summary="tool removed">
358*6c119a46SAndroid Build Coastguard Worker	This event is sent when the tool is removed from the system and will
359*6c119a46SAndroid Build Coastguard Worker	send no further events. Should the physical tool come back into
360*6c119a46SAndroid Build Coastguard Worker	proximity later, a new wp_tablet_tool object will be created.
361*6c119a46SAndroid Build Coastguard Worker
362*6c119a46SAndroid Build Coastguard Worker	It is compositor-dependent when a tool is removed. A compositor may
363*6c119a46SAndroid Build Coastguard Worker	remove a tool on proximity out, tablet removal or any other reason.
364*6c119a46SAndroid Build Coastguard Worker	A compositor may also keep a tool alive until shutdown.
365*6c119a46SAndroid Build Coastguard Worker
366*6c119a46SAndroid Build Coastguard Worker	If the tool is currently in proximity, a proximity_out event will be
367*6c119a46SAndroid Build Coastguard Worker	sent before the removed event. See wp_tablet_tool.proximity_out for
368*6c119a46SAndroid Build Coastguard Worker	the handling of any buttons logically down.
369*6c119a46SAndroid Build Coastguard Worker
370*6c119a46SAndroid Build Coastguard Worker	When this event is received, the client must wp_tablet_tool.destroy
371*6c119a46SAndroid Build Coastguard Worker	the object.
372*6c119a46SAndroid Build Coastguard Worker      </description>
373*6c119a46SAndroid Build Coastguard Worker    </event>
374*6c119a46SAndroid Build Coastguard Worker
375*6c119a46SAndroid Build Coastguard Worker    <event name="proximity_in">
376*6c119a46SAndroid Build Coastguard Worker      <description summary="proximity in event">
377*6c119a46SAndroid Build Coastguard Worker	Notification that this tool is focused on a certain surface.
378*6c119a46SAndroid Build Coastguard Worker
379*6c119a46SAndroid Build Coastguard Worker	This event can be received when the tool has moved from one surface to
380*6c119a46SAndroid Build Coastguard Worker	another, or when the tool has come back into proximity above the
381*6c119a46SAndroid Build Coastguard Worker	surface.
382*6c119a46SAndroid Build Coastguard Worker
383*6c119a46SAndroid Build Coastguard Worker	If any button is logically down when the tool comes into proximity,
384*6c119a46SAndroid Build Coastguard Worker	the respective button event is sent after the proximity_in event but
385*6c119a46SAndroid Build Coastguard Worker	within the same frame as the proximity_in event.
386*6c119a46SAndroid Build Coastguard Worker      </description>
387*6c119a46SAndroid Build Coastguard Worker      <arg name="serial" type="uint"/>
388*6c119a46SAndroid Build Coastguard Worker      <arg name="tablet" type="object" interface="zwp_tablet_v1" summary="The tablet the tool is in proximity of"/>
389*6c119a46SAndroid Build Coastguard Worker      <arg name="surface" type="object" interface="wl_surface" summary="The current surface the tablet tool is over"/>
390*6c119a46SAndroid Build Coastguard Worker    </event>
391*6c119a46SAndroid Build Coastguard Worker
392*6c119a46SAndroid Build Coastguard Worker    <event name="proximity_out">
393*6c119a46SAndroid Build Coastguard Worker      <description summary="proximity out event">
394*6c119a46SAndroid Build Coastguard Worker	Notification that this tool has either left proximity, or is no
395*6c119a46SAndroid Build Coastguard Worker	longer focused on a certain surface.
396*6c119a46SAndroid Build Coastguard Worker
397*6c119a46SAndroid Build Coastguard Worker	When the tablet tool leaves proximity of the tablet, button release
398*6c119a46SAndroid Build Coastguard Worker	events are sent for each button that was held down at the time of
399*6c119a46SAndroid Build Coastguard Worker	leaving proximity. These events are sent before the proximity_out
400*6c119a46SAndroid Build Coastguard Worker	event but within the same wp_tablet.frame.
401*6c119a46SAndroid Build Coastguard Worker
402*6c119a46SAndroid Build Coastguard Worker	If the tool stays within proximity of the tablet, but the focus
403*6c119a46SAndroid Build Coastguard Worker	changes from one surface to another, a button release event may not
404*6c119a46SAndroid Build Coastguard Worker	be sent until the button is actually released or the tool leaves the
405*6c119a46SAndroid Build Coastguard Worker	proximity of the tablet.
406*6c119a46SAndroid Build Coastguard Worker      </description>
407*6c119a46SAndroid Build Coastguard Worker    </event>
408*6c119a46SAndroid Build Coastguard Worker
409*6c119a46SAndroid Build Coastguard Worker    <event name="down">
410*6c119a46SAndroid Build Coastguard Worker      <description summary="tablet tool is making contact">
411*6c119a46SAndroid Build Coastguard Worker	Sent whenever the tablet tool comes in contact with the surface of the
412*6c119a46SAndroid Build Coastguard Worker	tablet.
413*6c119a46SAndroid Build Coastguard Worker
414*6c119a46SAndroid Build Coastguard Worker	If the tool is already in contact with the tablet when entering the
415*6c119a46SAndroid Build Coastguard Worker	input region, the client owning said region will receive a
416*6c119a46SAndroid Build Coastguard Worker	wp_tablet.proximity_in event, followed by a wp_tablet.down
417*6c119a46SAndroid Build Coastguard Worker	event and a wp_tablet.frame event.
418*6c119a46SAndroid Build Coastguard Worker
419*6c119a46SAndroid Build Coastguard Worker	Note that this event describes logical contact, not physical
420*6c119a46SAndroid Build Coastguard Worker	contact. On some devices, a compositor may not consider a tool in
421*6c119a46SAndroid Build Coastguard Worker	logical contact until a minimum physical pressure threshold is
422*6c119a46SAndroid Build Coastguard Worker	exceeded.
423*6c119a46SAndroid Build Coastguard Worker      </description>
424*6c119a46SAndroid Build Coastguard Worker      <arg name="serial" type="uint"/>
425*6c119a46SAndroid Build Coastguard Worker    </event>
426*6c119a46SAndroid Build Coastguard Worker
427*6c119a46SAndroid Build Coastguard Worker    <event name="up">
428*6c119a46SAndroid Build Coastguard Worker      <description summary="tablet tool is no longer making contact">
429*6c119a46SAndroid Build Coastguard Worker	Sent whenever the tablet tool stops making contact with the surface of
430*6c119a46SAndroid Build Coastguard Worker	the tablet, or when the tablet tool moves out of the input region
431*6c119a46SAndroid Build Coastguard Worker	and the compositor grab (if any) is dismissed.
432*6c119a46SAndroid Build Coastguard Worker
433*6c119a46SAndroid Build Coastguard Worker	If the tablet tool moves out of the input region while in contact
434*6c119a46SAndroid Build Coastguard Worker	with the surface of the tablet and the compositor does not have an
435*6c119a46SAndroid Build Coastguard Worker	ongoing grab on the surface, the client owning said region will
436*6c119a46SAndroid Build Coastguard Worker	receive a wp_tablet.up event, followed by a wp_tablet.proximity_out
437*6c119a46SAndroid Build Coastguard Worker	event and a wp_tablet.frame event. If the compositor has an ongoing
438*6c119a46SAndroid Build Coastguard Worker	grab on this device, this event sequence is sent whenever the grab
439*6c119a46SAndroid Build Coastguard Worker	is dismissed in the future.
440*6c119a46SAndroid Build Coastguard Worker
441*6c119a46SAndroid Build Coastguard Worker	Note that this event describes logical contact, not physical
442*6c119a46SAndroid Build Coastguard Worker	contact. On some devices, a compositor may not consider a tool out
443*6c119a46SAndroid Build Coastguard Worker	of logical contact until physical pressure falls below a specific
444*6c119a46SAndroid Build Coastguard Worker	threshold.
445*6c119a46SAndroid Build Coastguard Worker      </description>
446*6c119a46SAndroid Build Coastguard Worker    </event>
447*6c119a46SAndroid Build Coastguard Worker
448*6c119a46SAndroid Build Coastguard Worker    <event name="motion">
449*6c119a46SAndroid Build Coastguard Worker      <description summary="motion event">
450*6c119a46SAndroid Build Coastguard Worker	Sent whenever a tablet tool moves.
451*6c119a46SAndroid Build Coastguard Worker      </description>
452*6c119a46SAndroid Build Coastguard Worker      <arg name="x" type="fixed" summary="surface-local x coordinate"/>
453*6c119a46SAndroid Build Coastguard Worker      <arg name="y" type="fixed" summary="surface-local y coordinate"/>
454*6c119a46SAndroid Build Coastguard Worker    </event>
455*6c119a46SAndroid Build Coastguard Worker
456*6c119a46SAndroid Build Coastguard Worker    <event name="pressure">
457*6c119a46SAndroid Build Coastguard Worker      <description summary="pressure change event">
458*6c119a46SAndroid Build Coastguard Worker	Sent whenever the pressure axis on a tool changes. The value of this
459*6c119a46SAndroid Build Coastguard Worker	event is normalized to a value between 0 and 65535.
460*6c119a46SAndroid Build Coastguard Worker
461*6c119a46SAndroid Build Coastguard Worker	Note that pressure may be nonzero even when a tool is not in logical
462*6c119a46SAndroid Build Coastguard Worker	contact. See the down and up events for more details.
463*6c119a46SAndroid Build Coastguard Worker      </description>
464*6c119a46SAndroid Build Coastguard Worker      <arg name="pressure" type="uint" summary="The current pressure value"/>
465*6c119a46SAndroid Build Coastguard Worker    </event>
466*6c119a46SAndroid Build Coastguard Worker
467*6c119a46SAndroid Build Coastguard Worker    <event name="distance">
468*6c119a46SAndroid Build Coastguard Worker      <description summary="distance change event">
469*6c119a46SAndroid Build Coastguard Worker	Sent whenever the distance axis on a tool changes. The value of this
470*6c119a46SAndroid Build Coastguard Worker	event is normalized to a value between 0 and 65535.
471*6c119a46SAndroid Build Coastguard Worker
472*6c119a46SAndroid Build Coastguard Worker	Note that distance may be nonzero even when a tool is not in logical
473*6c119a46SAndroid Build Coastguard Worker	contact. See the down and up events for more details.
474*6c119a46SAndroid Build Coastguard Worker      </description>
475*6c119a46SAndroid Build Coastguard Worker      <arg name="distance" type="uint" summary="The current distance value"/>
476*6c119a46SAndroid Build Coastguard Worker    </event>
477*6c119a46SAndroid Build Coastguard Worker
478*6c119a46SAndroid Build Coastguard Worker    <event name="tilt">
479*6c119a46SAndroid Build Coastguard Worker      <description summary="tilt change event">
480*6c119a46SAndroid Build Coastguard Worker	Sent whenever one or both of the tilt axes on a tool change. Each tilt
481*6c119a46SAndroid Build Coastguard Worker	value is in 0.01 of a degree, relative to the z-axis of the tablet.
482*6c119a46SAndroid Build Coastguard Worker	The angle is positive when the top of a tool tilts along the
483*6c119a46SAndroid Build Coastguard Worker	positive x or y axis.
484*6c119a46SAndroid Build Coastguard Worker      </description>
485*6c119a46SAndroid Build Coastguard Worker      <arg name="tilt_x" type="int" summary="The current value of the X tilt axis"/>
486*6c119a46SAndroid Build Coastguard Worker      <arg name="tilt_y" type="int" summary="The current value of the Y tilt axis"/>
487*6c119a46SAndroid Build Coastguard Worker    </event>
488*6c119a46SAndroid Build Coastguard Worker
489*6c119a46SAndroid Build Coastguard Worker    <event name="rotation">
490*6c119a46SAndroid Build Coastguard Worker      <description summary="z-rotation change event">
491*6c119a46SAndroid Build Coastguard Worker	Sent whenever the z-rotation axis on the tool changes. The
492*6c119a46SAndroid Build Coastguard Worker	rotation value is in 0.01 of a degree clockwise from the tool's
493*6c119a46SAndroid Build Coastguard Worker	logical neutral position.
494*6c119a46SAndroid Build Coastguard Worker      </description>
495*6c119a46SAndroid Build Coastguard Worker      <arg name="degrees" type="int" summary="The current rotation of the Z axis"/>
496*6c119a46SAndroid Build Coastguard Worker    </event>
497*6c119a46SAndroid Build Coastguard Worker
498*6c119a46SAndroid Build Coastguard Worker    <event name="slider">
499*6c119a46SAndroid Build Coastguard Worker      <description summary="Slider position change event">
500*6c119a46SAndroid Build Coastguard Worker	Sent whenever the slider position on the tool changes. The
501*6c119a46SAndroid Build Coastguard Worker	value is normalized between -65535 and 65535, with 0 as the logical
502*6c119a46SAndroid Build Coastguard Worker	neutral position of the slider.
503*6c119a46SAndroid Build Coastguard Worker
504*6c119a46SAndroid Build Coastguard Worker	The slider is available on e.g. the Wacom Airbrush tool.
505*6c119a46SAndroid Build Coastguard Worker      </description>
506*6c119a46SAndroid Build Coastguard Worker      <arg name="position" type="int" summary="The current position of slider"/>
507*6c119a46SAndroid Build Coastguard Worker    </event>
508*6c119a46SAndroid Build Coastguard Worker
509*6c119a46SAndroid Build Coastguard Worker    <event name="wheel">
510*6c119a46SAndroid Build Coastguard Worker      <description summary="Wheel delta event">
511*6c119a46SAndroid Build Coastguard Worker	Sent whenever the wheel on the tool emits an event. This event
512*6c119a46SAndroid Build Coastguard Worker	contains two values for the same axis change. The degrees value is
513*6c119a46SAndroid Build Coastguard Worker	in 0.01 of a degree in the same orientation as the
514*6c119a46SAndroid Build Coastguard Worker	wl_pointer.vertical_scroll axis. The clicks value is in discrete
515*6c119a46SAndroid Build Coastguard Worker	logical clicks of the mouse wheel. This value may be zero if the
516*6c119a46SAndroid Build Coastguard Worker	movement of the wheel was less than one logical click.
517*6c119a46SAndroid Build Coastguard Worker
518*6c119a46SAndroid Build Coastguard Worker	Clients should choose either value and avoid mixing degrees and
519*6c119a46SAndroid Build Coastguard Worker	clicks. The compositor may accumulate values smaller than a logical
520*6c119a46SAndroid Build Coastguard Worker	click and emulate click events when a certain threshold is met.
521*6c119a46SAndroid Build Coastguard Worker	Thus, wl_tablet_tool.wheel events with non-zero clicks values may
522*6c119a46SAndroid Build Coastguard Worker	have different degrees values.
523*6c119a46SAndroid Build Coastguard Worker      </description>
524*6c119a46SAndroid Build Coastguard Worker      <arg name="degrees" type="int" summary="The wheel delta in 0.01 of a degree"/>
525*6c119a46SAndroid Build Coastguard Worker      <arg name="clicks" type="int" summary="The wheel delta in discrete clicks"/>
526*6c119a46SAndroid Build Coastguard Worker    </event>
527*6c119a46SAndroid Build Coastguard Worker
528*6c119a46SAndroid Build Coastguard Worker    <enum name="button_state">
529*6c119a46SAndroid Build Coastguard Worker      <description summary="physical button state">
530*6c119a46SAndroid Build Coastguard Worker	Describes the physical state of a button that produced the button event.
531*6c119a46SAndroid Build Coastguard Worker      </description>
532*6c119a46SAndroid Build Coastguard Worker      <entry name="released" value="0" summary="button is not pressed"/>
533*6c119a46SAndroid Build Coastguard Worker      <entry name="pressed" value="1" summary="button is pressed"/>
534*6c119a46SAndroid Build Coastguard Worker    </enum>
535*6c119a46SAndroid Build Coastguard Worker
536*6c119a46SAndroid Build Coastguard Worker    <event name="button">
537*6c119a46SAndroid Build Coastguard Worker      <description summary="button event">
538*6c119a46SAndroid Build Coastguard Worker	Sent whenever a button on the tool is pressed or released.
539*6c119a46SAndroid Build Coastguard Worker
540*6c119a46SAndroid Build Coastguard Worker	If a button is held down when the tool moves in or out of proximity,
541*6c119a46SAndroid Build Coastguard Worker	button events are generated by the compositor. See
542*6c119a46SAndroid Build Coastguard Worker	wp_tablet_tool.proximity_in and wp_tablet_tool.proximity_out for
543*6c119a46SAndroid Build Coastguard Worker	details.
544*6c119a46SAndroid Build Coastguard Worker      </description>
545*6c119a46SAndroid Build Coastguard Worker      <arg name="serial" type="uint"/>
546*6c119a46SAndroid Build Coastguard Worker      <arg name="button" type="uint" summary="The button whose state has changed"/>
547*6c119a46SAndroid Build Coastguard Worker      <arg name="state" type="uint" enum="button_state" summary="Whether the button was pressed or released"/>
548*6c119a46SAndroid Build Coastguard Worker    </event>
549*6c119a46SAndroid Build Coastguard Worker
550*6c119a46SAndroid Build Coastguard Worker    <event name="frame">
551*6c119a46SAndroid Build Coastguard Worker      <description summary="frame event">
552*6c119a46SAndroid Build Coastguard Worker	Marks the end of a series of axis and/or button updates from the
553*6c119a46SAndroid Build Coastguard Worker	tablet. The Wayland protocol requires axis updates to be sent
554*6c119a46SAndroid Build Coastguard Worker	sequentially, however all events within a frame should be considered
555*6c119a46SAndroid Build Coastguard Worker	one hardware event.
556*6c119a46SAndroid Build Coastguard Worker      </description>
557*6c119a46SAndroid Build Coastguard Worker      <arg name="time" type="uint" summary="The time of the event with millisecond granularity"/>
558*6c119a46SAndroid Build Coastguard Worker    </event>
559*6c119a46SAndroid Build Coastguard Worker
560*6c119a46SAndroid Build Coastguard Worker    <enum name="error">
561*6c119a46SAndroid Build Coastguard Worker      <entry name="role" value="0" summary="given wl_surface has another role"/>
562*6c119a46SAndroid Build Coastguard Worker    </enum>
563*6c119a46SAndroid Build Coastguard Worker  </interface>
564*6c119a46SAndroid Build Coastguard Worker
565*6c119a46SAndroid Build Coastguard Worker  <interface name="zwp_tablet_v1" version="1">
566*6c119a46SAndroid Build Coastguard Worker    <description summary="graphics tablet device">
567*6c119a46SAndroid Build Coastguard Worker      The wp_tablet interface represents one graphics tablet device. The
568*6c119a46SAndroid Build Coastguard Worker      tablet interface itself does not generate events; all events are
569*6c119a46SAndroid Build Coastguard Worker      generated by wp_tablet_tool objects when in proximity above a tablet.
570*6c119a46SAndroid Build Coastguard Worker
571*6c119a46SAndroid Build Coastguard Worker      A tablet has a number of static characteristics, e.g. device name and
572*6c119a46SAndroid Build Coastguard Worker      pid/vid. These capabilities are sent in an event sequence after the
573*6c119a46SAndroid Build Coastguard Worker      wp_tablet_seat.tablet_added event. This initial event sequence is
574*6c119a46SAndroid Build Coastguard Worker      terminated by a wp_tablet.done event.
575*6c119a46SAndroid Build Coastguard Worker    </description>
576*6c119a46SAndroid Build Coastguard Worker
577*6c119a46SAndroid Build Coastguard Worker    <request name="destroy" type="destructor">
578*6c119a46SAndroid Build Coastguard Worker      <description summary="destroy the tablet object">
579*6c119a46SAndroid Build Coastguard Worker	This destroys the client's resource for this tablet object.
580*6c119a46SAndroid Build Coastguard Worker      </description>
581*6c119a46SAndroid Build Coastguard Worker    </request>
582*6c119a46SAndroid Build Coastguard Worker
583*6c119a46SAndroid Build Coastguard Worker    <event name="name">
584*6c119a46SAndroid Build Coastguard Worker      <description summary="tablet device name">
585*6c119a46SAndroid Build Coastguard Worker	This event is sent in the initial burst of events before the
586*6c119a46SAndroid Build Coastguard Worker	wp_tablet.done event.
587*6c119a46SAndroid Build Coastguard Worker      </description>
588*6c119a46SAndroid Build Coastguard Worker      <arg name="name" type="string" summary="the device name"/>
589*6c119a46SAndroid Build Coastguard Worker    </event>
590*6c119a46SAndroid Build Coastguard Worker
591*6c119a46SAndroid Build Coastguard Worker    <event name="id">
592*6c119a46SAndroid Build Coastguard Worker      <description summary="tablet device USB vendor/product id">
593*6c119a46SAndroid Build Coastguard Worker	This event is sent in the initial burst of events before the
594*6c119a46SAndroid Build Coastguard Worker	wp_tablet.done event.
595*6c119a46SAndroid Build Coastguard Worker      </description>
596*6c119a46SAndroid Build Coastguard Worker      <arg name="vid" type="uint" summary="USB vendor id"/>
597*6c119a46SAndroid Build Coastguard Worker      <arg name="pid" type="uint" summary="USB product id"/>
598*6c119a46SAndroid Build Coastguard Worker    </event>
599*6c119a46SAndroid Build Coastguard Worker
600*6c119a46SAndroid Build Coastguard Worker    <event name="path">
601*6c119a46SAndroid Build Coastguard Worker      <description summary="path to the device">
602*6c119a46SAndroid Build Coastguard Worker	A system-specific device path that indicates which device is behind
603*6c119a46SAndroid Build Coastguard Worker	this wp_tablet. This information may be used to gather additional
604*6c119a46SAndroid Build Coastguard Worker	information about the device, e.g. through libwacom.
605*6c119a46SAndroid Build Coastguard Worker
606*6c119a46SAndroid Build Coastguard Worker	A device may have more than one device path. If so, multiple
607*6c119a46SAndroid Build Coastguard Worker	wp_tablet.path events are sent. A device may be emulated and not
608*6c119a46SAndroid Build Coastguard Worker	have a device path, and in that case this event will not be sent.
609*6c119a46SAndroid Build Coastguard Worker
610*6c119a46SAndroid Build Coastguard Worker	The format of the path is unspecified, it may be a device node, a
611*6c119a46SAndroid Build Coastguard Worker	sysfs path, or some other identifier. It is up to the client to
612*6c119a46SAndroid Build Coastguard Worker	identify the string provided.
613*6c119a46SAndroid Build Coastguard Worker
614*6c119a46SAndroid Build Coastguard Worker	This event is sent in the initial burst of events before the
615*6c119a46SAndroid Build Coastguard Worker	wp_tablet.done event.
616*6c119a46SAndroid Build Coastguard Worker      </description>
617*6c119a46SAndroid Build Coastguard Worker      <arg name="path" type="string" summary="path to local device"/>
618*6c119a46SAndroid Build Coastguard Worker    </event>
619*6c119a46SAndroid Build Coastguard Worker
620*6c119a46SAndroid Build Coastguard Worker    <event name="done">
621*6c119a46SAndroid Build Coastguard Worker      <description summary="tablet description events sequence complete">
622*6c119a46SAndroid Build Coastguard Worker	This event is sent immediately to signal the end of the initial
623*6c119a46SAndroid Build Coastguard Worker	burst of descriptive events. A client may consider the static
624*6c119a46SAndroid Build Coastguard Worker	description of the tablet to be complete and finalize initialization
625*6c119a46SAndroid Build Coastguard Worker	of the tablet.
626*6c119a46SAndroid Build Coastguard Worker      </description>
627*6c119a46SAndroid Build Coastguard Worker    </event>
628*6c119a46SAndroid Build Coastguard Worker
629*6c119a46SAndroid Build Coastguard Worker    <event name="removed">
630*6c119a46SAndroid Build Coastguard Worker      <description summary="tablet removed event">
631*6c119a46SAndroid Build Coastguard Worker	Sent when the tablet has been removed from the system. When a tablet
632*6c119a46SAndroid Build Coastguard Worker	is removed, some tools may be removed.
633*6c119a46SAndroid Build Coastguard Worker
634*6c119a46SAndroid Build Coastguard Worker	When this event is received, the client must wp_tablet.destroy
635*6c119a46SAndroid Build Coastguard Worker	the object.
636*6c119a46SAndroid Build Coastguard Worker      </description>
637*6c119a46SAndroid Build Coastguard Worker    </event>
638*6c119a46SAndroid Build Coastguard Worker  </interface>
639*6c119a46SAndroid Build Coastguard Worker
640*6c119a46SAndroid Build Coastguard Worker</protocol>
641