| <?xml version="1.0" encoding="UTF-8"?> |
| <protocol name="tablet_unstable_v1"> |
| |
| <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_v1" 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_v1"/> |
| <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_v1" 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_v1" 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_v1" summary="the newly added tablet tool"/> |
| </event> |
| </interface> |
| |
| <interface name="zwp_tablet_tool_v1" 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 cursor. The role |
| assigned by this request is the same as assigned by |
| wl_pointer.set_cursor meaning the same surface can be |
| used both as a wl_pointer cursor and a wp_tablet cursor. If the |
| surface already has another role, it raises a protocol error. |
| The surface may be used on multiple tablets and across multiple |
| seats. |
| </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_v1" 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 0.01 of a degree, 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="int" summary="The current value of the X tilt axis"/> |
| <arg name="tilt_y" type="int" 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 0.01 of a degree clockwise from the tool's |
| logical neutral position. |
| </description> |
| <arg name="degrees" type="int" 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 0.01 of a degree 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="int" summary="The wheel delta in 0.01 of a degree"/> |
| <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_v1" version="1"> |
| <description summary="graphics tablet device"> |
| The wp_tablet interface represents one graphics tablet device. The |
| tablet interface itself does not generate events; all events are |
| generated by wp_tablet_tool objects when in proximity above a tablet. |
| |
| A tablet has a number of static characteristics, e.g. device name and |
| pid/vid. These capabilities are sent in an event sequence after the |
| wp_tablet_seat.tablet_added event. This initial event sequence is |
| terminated by a wp_tablet.done event. |
| </description> |
| |
| <request name="destroy" type="destructor"> |
| <description summary="destroy the tablet object"> |
| This destroys the client's resource for this tablet object. |
| </description> |
| </request> |
| |
| <event name="name"> |
| <description summary="tablet device name"> |
| This event is sent in the initial burst of events before the |
| wp_tablet.done event. |
| </description> |
| <arg name="name" type="string" summary="the device name"/> |
| </event> |
| |
| <event name="id"> |
| <description summary="tablet device USB vendor/product id"> |
| This event is sent in the initial burst of events before the |
| wp_tablet.done event. |
| </description> |
| <arg name="vid" type="uint" summary="USB vendor id"/> |
| <arg name="pid" type="uint" summary="USB product id"/> |
| </event> |
| |
| <event name="path"> |
| <description summary="path to the device"> |
| A system-specific device path that indicates which device is behind |
| this wp_tablet. This information may be used to gather additional |
| information about the device, e.g. through libwacom. |
| |
| A device may have more than one device path. If so, multiple |
| wp_tablet.path events are sent. A device may be emulated and not |
| have a device path, and in that case this event will not be sent. |
| |
| The format of the path is unspecified, it may be a device node, a |
| sysfs path, or some other identifier. It is up to the client to |
| identify the string provided. |
| |
| This event is sent in the initial burst of events before the |
| wp_tablet.done event. |
| </description> |
| <arg name="path" type="string" summary="path to local device"/> |
| </event> |
| |
| <event name="done"> |
| <description summary="tablet description events sequence complete"> |
| This event is sent immediately to signal the end of the initial |
| burst of descriptive events. A client may consider the static |
| description of the tablet to be complete and finalize initialization |
| of the tablet. |
| </description> |
| </event> |
| |
| <event name="removed"> |
| <description summary="tablet removed event"> |
| Sent when the tablet has been removed from the system. When a tablet |
| is removed, some tools may be removed. |
| |
| When this event is received, the client must wp_tablet.destroy |
| the object. |
| </description> |
| </event> |
| </interface> |
| |
| </protocol> |