mirror of
https://github.com/hyprwm/Hyprland
synced 2024-11-22 20:25:59 +01:00
1179 lines
50 KiB
XML
1179 lines
50 KiB
XML
|
<?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>
|