diff options
| author | 3gg <3gg@shellblade.net> | 2025-12-27 12:03:39 -0800 |
|---|---|---|
| committer | 3gg <3gg@shellblade.net> | 2025-12-27 12:03:39 -0800 |
| commit | 5a079a2d114f96d4847d1ee305d5b7c16eeec50e (patch) | |
| tree | 8926ab44f168acf787d8e19608857b3af0f82758 /contrib/SDL-3.2.8/wayland-protocols/tablet-v2.xml | |
Initial commit
Diffstat (limited to 'contrib/SDL-3.2.8/wayland-protocols/tablet-v2.xml')
| -rw-r--r-- | contrib/SDL-3.2.8/wayland-protocols/tablet-v2.xml | 1178 |
1 files changed, 1178 insertions, 0 deletions
diff --git a/contrib/SDL-3.2.8/wayland-protocols/tablet-v2.xml b/contrib/SDL-3.2.8/wayland-protocols/tablet-v2.xml new file mode 100644 index 0000000..55cd78e --- /dev/null +++ b/contrib/SDL-3.2.8/wayland-protocols/tablet-v2.xml | |||
| @@ -0,0 +1,1178 @@ | |||
| 1 | <?xml version="1.0" encoding="UTF-8"?> | ||
| 2 | <protocol name="tablet_v2"> | ||
| 3 | |||
| 4 | <copyright> | ||
| 5 | Copyright 2014 © Stephen "Lyude" Chandler Paul | ||
| 6 | Copyright 2015-2016 © Red Hat, Inc. | ||
| 7 | |||
| 8 | Permission is hereby granted, free of charge, to any person | ||
| 9 | obtaining a copy of this software and associated documentation files | ||
| 10 | (the "Software"), to deal in the Software without restriction, | ||
| 11 | including without limitation the rights to use, copy, modify, merge, | ||
| 12 | publish, distribute, sublicense, and/or sell copies of the Software, | ||
| 13 | and to permit persons to whom the Software is furnished to do so, | ||
| 14 | subject to the following conditions: | ||
| 15 | |||
| 16 | The above copyright notice and this permission notice (including the | ||
| 17 | next paragraph) shall be included in all copies or substantial | ||
| 18 | portions of the Software. | ||
| 19 | |||
| 20 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | ||
| 21 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | ||
| 22 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||
| 23 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS | ||
| 24 | BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN | ||
| 25 | ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN | ||
| 26 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||
| 27 | SOFTWARE. | ||
| 28 | </copyright> | ||
| 29 | |||
| 30 | <description summary="Wayland protocol for graphics tablets"> | ||
| 31 | This description provides a high-level overview of the interplay between | ||
| 32 | the interfaces defined this protocol. For details, see the protocol | ||
| 33 | specification. | ||
| 34 | |||
| 35 | More than one tablet may exist, and device-specifics matter. Tablets are | ||
| 36 | not represented by a single virtual device like wl_pointer. A client | ||
| 37 | binds to the tablet manager object which is just a proxy object. From | ||
| 38 | that, the client requests wp_tablet_manager.get_tablet_seat(wl_seat) | ||
| 39 | and that returns the actual interface that has all the tablets. With | ||
| 40 | this indirection, we can avoid merging wp_tablet into the actual Wayland | ||
| 41 | protocol, a long-term benefit. | ||
| 42 | |||
| 43 | The wp_tablet_seat sends a "tablet added" event for each tablet | ||
| 44 | connected. That event is followed by descriptive events about the | ||
| 45 | hardware; currently that includes events for name, vid/pid and | ||
| 46 | a wp_tablet.path event that describes a local path. This path can be | ||
| 47 | used to uniquely identify a tablet or get more information through | ||
| 48 | libwacom. Emulated or nested tablets can skip any of those, e.g. a | ||
| 49 | virtual tablet may not have a vid/pid. The sequence of descriptive | ||
| 50 | events is terminated by a wp_tablet.done event to signal that a client | ||
| 51 | may now finalize any initialization for that tablet. | ||
| 52 | |||
| 53 | Events from tablets require a tool in proximity. Tools are also managed | ||
| 54 | by the tablet seat; a "tool added" event is sent whenever a tool is new | ||
| 55 | to the compositor. That event is followed by a number of descriptive | ||
| 56 | events about the hardware; currently that includes capabilities, | ||
| 57 | hardware id and serial number, and tool type. Similar to the tablet | ||
| 58 | interface, a wp_tablet_tool.done event is sent to terminate that initial | ||
| 59 | sequence. | ||
| 60 | |||
| 61 | Any event from a tool happens on the wp_tablet_tool interface. When the | ||
| 62 | tool gets into proximity of the tablet, a proximity_in event is sent on | ||
| 63 | the wp_tablet_tool interface, listing the tablet and the surface. That | ||
| 64 | event is followed by a motion event with the coordinates. After that, | ||
| 65 | it's the usual motion, axis, button, etc. events. The protocol's | ||
| 66 | serialisation means events are grouped by wp_tablet_tool.frame events. | ||
| 67 | |||
| 68 | Two special events (that don't exist in X) are down and up. They signal | ||
| 69 | "tip touching the surface". For tablets without real proximity | ||
| 70 | detection, the sequence is: proximity_in, motion, down, frame. | ||
| 71 | |||
| 72 | When the tool leaves proximity, a proximity_out event is sent. If any | ||
| 73 | button is still down, a button release event is sent before this | ||
| 74 | proximity event. These button events are sent in the same frame as the | ||
| 75 | proximity event to signal to the client that the buttons were held when | ||
| 76 | the tool left proximity. | ||
| 77 | |||
| 78 | If the tool moves out of the surface but stays in proximity (i.e. | ||
| 79 | between windows), compositor-specific grab policies apply. This usually | ||
| 80 | means that the proximity-out is delayed until all buttons are released. | ||
| 81 | |||
| 82 | Moving a tool physically from one tablet to the other has no real effect | ||
| 83 | on the protocol, since we already have the tool object from the "tool | ||
| 84 | added" event. All the information is already there and the proximity | ||
| 85 | events on both tablets are all a client needs to reconstruct what | ||
| 86 | happened. | ||
| 87 | |||
| 88 | Some extra axes are normalized, i.e. the client knows the range as | ||
| 89 | specified in the protocol (e.g. [0, 65535]), the granularity however is | ||
| 90 | unknown. The current normalized axes are pressure, distance, and slider. | ||
| 91 | |||
| 92 | Other extra axes are in physical units as specified in the protocol. | ||
| 93 | The current extra axes with physical units are tilt, rotation and | ||
| 94 | wheel rotation. | ||
| 95 | |||
| 96 | Since tablets work independently of the pointer controlled by the mouse, | ||
| 97 | the focus handling is independent too and controlled by proximity. | ||
| 98 | The wp_tablet_tool.set_cursor request sets a tool-specific cursor. | ||
| 99 | This cursor surface may be the same as the mouse cursor, and it may be | ||
| 100 | the same across tools but it is possible to be more fine-grained. For | ||
| 101 | example, a client may set different cursors for the pen and eraser. | ||
| 102 | |||
| 103 | Tools are generally independent of tablets and it is | ||
| 104 | compositor-specific policy when a tool can be removed. Common approaches | ||
| 105 | will likely include some form of removing a tool when all tablets the | ||
| 106 | tool was used on are removed. | ||
| 107 | </description> | ||
| 108 | |||
| 109 | <interface name="zwp_tablet_manager_v2" version="1"> | ||
| 110 | <description summary="controller object for graphic tablet devices"> | ||
| 111 | An object that provides access to the graphics tablets available on this | ||
| 112 | system. All tablets are associated with a seat, to get access to the | ||
| 113 | actual tablets, use wp_tablet_manager.get_tablet_seat. | ||
| 114 | </description> | ||
| 115 | |||
| 116 | <request name="get_tablet_seat"> | ||
| 117 | <description summary="get the tablet seat"> | ||
| 118 | Get the wp_tablet_seat object for the given seat. This object | ||
| 119 | provides access to all graphics tablets in this seat. | ||
| 120 | </description> | ||
| 121 | <arg name="tablet_seat" type="new_id" interface="zwp_tablet_seat_v2"/> | ||
| 122 | <arg name="seat" type="object" interface="wl_seat" summary="The wl_seat object to retrieve the tablets for" /> | ||
| 123 | </request> | ||
| 124 | |||
| 125 | <request name="destroy" type="destructor"> | ||
| 126 | <description summary="release the memory for the tablet manager object"> | ||
| 127 | Destroy the wp_tablet_manager object. Objects created from this | ||
| 128 | object are unaffected and should be destroyed separately. | ||
| 129 | </description> | ||
| 130 | </request> | ||
| 131 | </interface> | ||
| 132 | |||
| 133 | <interface name="zwp_tablet_seat_v2" version="1"> | ||
| 134 | <description summary="controller object for graphic tablet devices of a seat"> | ||
| 135 | An object that provides access to the graphics tablets available on this | ||
| 136 | seat. After binding to this interface, the compositor sends a set of | ||
| 137 | wp_tablet_seat.tablet_added and wp_tablet_seat.tool_added events. | ||
| 138 | </description> | ||
| 139 | |||
| 140 | <request name="destroy" type="destructor"> | ||
| 141 | <description summary="release the memory for the tablet seat object"> | ||
| 142 | Destroy the wp_tablet_seat object. Objects created from this | ||
| 143 | object are unaffected and should be destroyed separately. | ||
| 144 | </description> | ||
| 145 | </request> | ||
| 146 | |||
| 147 | <event name="tablet_added"> | ||
| 148 | <description summary="new device notification"> | ||
| 149 | This event is sent whenever a new tablet becomes available on this | ||
| 150 | seat. This event only provides the object id of the tablet, any | ||
| 151 | static information about the tablet (device name, vid/pid, etc.) is | ||
| 152 | sent through the wp_tablet interface. | ||
| 153 | </description> | ||
| 154 | <arg name="id" type="new_id" interface="zwp_tablet_v2" summary="the newly added graphics tablet"/> | ||
| 155 | </event> | ||
| 156 | |||
| 157 | <event name="tool_added"> | ||
| 158 | <description summary="a new tool has been used with a tablet"> | ||
| 159 | This event is sent whenever a tool that has not previously been used | ||
| 160 | with a tablet comes into use. This event only provides the object id | ||
| 161 | of the tool; any static information about the tool (capabilities, | ||
| 162 | type, etc.) is sent through the wp_tablet_tool interface. | ||
| 163 | </description> | ||
| 164 | <arg name="id" type="new_id" interface="zwp_tablet_tool_v2" summary="the newly added tablet tool"/> | ||
| 165 | </event> | ||
| 166 | |||
| 167 | <event name="pad_added"> | ||
| 168 | <description summary="new pad notification"> | ||
| 169 | This event is sent whenever a new pad is known to the system. Typically, | ||
| 170 | pads are physically attached to tablets and a pad_added event is | ||
| 171 | sent immediately after the wp_tablet_seat.tablet_added. | ||
| 172 | However, some standalone pad devices logically attach to tablets at | ||
| 173 | runtime, and the client must wait for wp_tablet_pad.enter to know | ||
| 174 | the tablet a pad is attached to. | ||
| 175 | |||
| 176 | This event only provides the object id of the pad. All further | ||
| 177 | features (buttons, strips, rings) are sent through the wp_tablet_pad | ||
| 178 | interface. | ||
| 179 | </description> | ||
| 180 | <arg name="id" type="new_id" interface="zwp_tablet_pad_v2" summary="the newly added pad"/> | ||
| 181 | </event> | ||
| 182 | </interface> | ||
| 183 | |||
| 184 | <interface name="zwp_tablet_tool_v2" version="1"> | ||
| 185 | <description summary="a physical tablet tool"> | ||
| 186 | An object that represents a physical tool that has been, or is | ||
| 187 | currently in use with a tablet in this seat. Each wp_tablet_tool | ||
| 188 | object stays valid until the client destroys it; the compositor | ||
| 189 | reuses the wp_tablet_tool object to indicate that the object's | ||
| 190 | respective physical tool has come into proximity of a tablet again. | ||
| 191 | |||
| 192 | A wp_tablet_tool object's relation to a physical tool depends on the | ||
| 193 | tablet's ability to report serial numbers. If the tablet supports | ||
| 194 | this capability, then the object represents a specific physical tool | ||
| 195 | and can be identified even when used on multiple tablets. | ||
| 196 | |||
| 197 | A tablet tool has a number of static characteristics, e.g. tool type, | ||
| 198 | hardware_serial and capabilities. These capabilities are sent in an | ||
| 199 | event sequence after the wp_tablet_seat.tool_added event before any | ||
| 200 | actual events from this tool. This initial event sequence is | ||
| 201 | terminated by a wp_tablet_tool.done event. | ||
| 202 | |||
| 203 | Tablet tool events are grouped by wp_tablet_tool.frame events. | ||
| 204 | Any events received before a wp_tablet_tool.frame event should be | ||
| 205 | considered part of the same hardware state change. | ||
| 206 | </description> | ||
| 207 | |||
| 208 | <request name="set_cursor"> | ||
| 209 | <description summary="set the tablet tool's surface"> | ||
| 210 | Sets the surface of the cursor used for this tool on the given | ||
| 211 | tablet. This request only takes effect if the tool is in proximity | ||
| 212 | of one of the requesting client's surfaces or the surface parameter | ||
| 213 | is the current pointer surface. If there was a previous surface set | ||
| 214 | with this request it is replaced. If surface is NULL, the cursor | ||
| 215 | image is hidden. | ||
| 216 | |||
| 217 | The parameters hotspot_x and hotspot_y define the position of the | ||
| 218 | pointer surface relative to the pointer location. Its top-left corner | ||
| 219 | is always at (x, y) - (hotspot_x, hotspot_y), where (x, y) are the | ||
| 220 | coordinates of the pointer location, in surface-local coordinates. | ||
| 221 | |||
| 222 | On surface.attach requests to the pointer surface, hotspot_x and | ||
| 223 | hotspot_y are decremented by the x and y parameters passed to the | ||
| 224 | request. Attach must be confirmed by wl_surface.commit as usual. | ||
| 225 | |||
| 226 | The hotspot can also be updated by passing the currently set pointer | ||
| 227 | surface to this request with new values for hotspot_x and hotspot_y. | ||
| 228 | |||
| 229 | The current and pending input regions of the wl_surface are cleared, | ||
| 230 | and wl_surface.set_input_region is ignored until the wl_surface is no | ||
| 231 | longer used as the cursor. When the use as a cursor ends, the current | ||
| 232 | and pending input regions become undefined, and the wl_surface is | ||
| 233 | unmapped. | ||
| 234 | |||
| 235 | This request gives the surface the role of a wp_tablet_tool cursor. A | ||
| 236 | surface may only ever be used as the cursor surface for one | ||
| 237 | wp_tablet_tool. If the surface already has another role or has | ||
| 238 | previously been used as cursor surface for a different tool, a | ||
| 239 | protocol error is raised. | ||
| 240 | </description> | ||
| 241 | <arg name="serial" type="uint" summary="serial of the proximity_in event"/> | ||
| 242 | <arg name="surface" type="object" interface="wl_surface" allow-null="true"/> | ||
| 243 | <arg name="hotspot_x" type="int" summary="surface-local x coordinate"/> | ||
| 244 | <arg name="hotspot_y" type="int" summary="surface-local y coordinate"/> | ||
| 245 | </request> | ||
| 246 | |||
| 247 | <request name="destroy" type="destructor"> | ||
| 248 | <description summary="destroy the tool object"> | ||
| 249 | This destroys the client's resource for this tool object. | ||
| 250 | </description> | ||
| 251 | </request> | ||
| 252 | |||
| 253 | <enum name="type"> | ||
| 254 | <description summary="a physical tool type"> | ||
| 255 | Describes the physical type of a tool. The physical type of a tool | ||
| 256 | generally defines its base usage. | ||
| 257 | |||
| 258 | The mouse tool represents a mouse-shaped tool that is not a relative | ||
| 259 | device but bound to the tablet's surface, providing absolute | ||
| 260 | coordinates. | ||
| 261 | |||
| 262 | The lens tool is a mouse-shaped tool with an attached lens to | ||
| 263 | provide precision focus. | ||
| 264 | </description> | ||
| 265 | <entry name="pen" value="0x140" summary="Pen"/> | ||
| 266 | <entry name="eraser" value="0x141" summary="Eraser"/> | ||
| 267 | <entry name="brush" value="0x142" summary="Brush"/> | ||
| 268 | <entry name="pencil" value="0x143" summary="Pencil"/> | ||
| 269 | <entry name="airbrush" value="0x144" summary="Airbrush"/> | ||
| 270 | <entry name="finger" value="0x145" summary="Finger"/> | ||
| 271 | <entry name="mouse" value="0x146" summary="Mouse"/> | ||
| 272 | <entry name="lens" value="0x147" summary="Lens"/> | ||
| 273 | </enum> | ||
| 274 | |||
| 275 | <event name="type"> | ||
| 276 | <description summary="tool type"> | ||
| 277 | The tool type is the high-level type of the tool and usually decides | ||
| 278 | the interaction expected from this tool. | ||
| 279 | |||
| 280 | This event is sent in the initial burst of events before the | ||
| 281 | wp_tablet_tool.done event. | ||
| 282 | </description> | ||
| 283 | <arg name="tool_type" type="uint" enum="type" summary="the physical tool type"/> | ||
| 284 | </event> | ||
| 285 | |||
| 286 | <event name="hardware_serial"> | ||
| 287 | <description summary="unique hardware serial number of the tool"> | ||
| 288 | If the physical tool can be identified by a unique 64-bit serial | ||
| 289 | number, this event notifies the client of this serial number. | ||
| 290 | |||
| 291 | If multiple tablets are available in the same seat and the tool is | ||
| 292 | uniquely identifiable by the serial number, that tool may move | ||
| 293 | between tablets. | ||
| 294 | |||
| 295 | Otherwise, if the tool has no serial number and this event is | ||
| 296 | missing, the tool is tied to the tablet it first comes into | ||
| 297 | proximity with. Even if the physical tool is used on multiple | ||
| 298 | tablets, separate wp_tablet_tool objects will be created, one per | ||
| 299 | tablet. | ||
| 300 | |||
| 301 | This event is sent in the initial burst of events before the | ||
| 302 | wp_tablet_tool.done event. | ||
| 303 | </description> | ||
| 304 | <arg name="hardware_serial_hi" type="uint" summary="the unique serial number of the tool, most significant bits"/> | ||
| 305 | <arg name="hardware_serial_lo" type="uint" summary="the unique serial number of the tool, least significant bits"/> | ||
| 306 | </event> | ||
| 307 | |||
| 308 | <event name="hardware_id_wacom"> | ||
| 309 | <description summary="hardware id notification in Wacom's format"> | ||
| 310 | This event notifies the client of a hardware id available on this tool. | ||
| 311 | |||
| 312 | The hardware id is a device-specific 64-bit id that provides extra | ||
| 313 | information about the tool in use, beyond the wl_tool.type | ||
| 314 | enumeration. The format of the id is specific to tablets made by | ||
| 315 | Wacom Inc. For example, the hardware id of a Wacom Grip | ||
| 316 | Pen (a stylus) is 0x802. | ||
| 317 | |||
| 318 | This event is sent in the initial burst of events before the | ||
| 319 | wp_tablet_tool.done event. | ||
| 320 | </description> | ||
| 321 | <arg name="hardware_id_hi" type="uint" summary="the hardware id, most significant bits"/> | ||
| 322 | <arg name="hardware_id_lo" type="uint" summary="the hardware id, least significant bits"/> | ||
| 323 | </event> | ||
| 324 | |||
| 325 | <enum name="capability"> | ||
| 326 | <description summary="capability flags for a tool"> | ||
| 327 | Describes extra capabilities on a tablet. | ||
| 328 | |||
| 329 | Any tool must provide x and y values, extra axes are | ||
| 330 | device-specific. | ||
| 331 | </description> | ||
| 332 | <entry name="tilt" value="1" summary="Tilt axes"/> | ||
| 333 | <entry name="pressure" value="2" summary="Pressure axis"/> | ||
| 334 | <entry name="distance" value="3" summary="Distance axis"/> | ||
| 335 | <entry name="rotation" value="4" summary="Z-rotation axis"/> | ||
| 336 | <entry name="slider" value="5" summary="Slider axis"/> | ||
| 337 | <entry name="wheel" value="6" summary="Wheel axis"/> | ||
| 338 | </enum> | ||
| 339 | |||
| 340 | <event name="capability"> | ||
| 341 | <description summary="tool capability notification"> | ||
| 342 | This event notifies the client of any capabilities of this tool, | ||
| 343 | beyond the main set of x/y axes and tip up/down detection. | ||
| 344 | |||
| 345 | One event is sent for each extra capability available on this tool. | ||
| 346 | |||
| 347 | This event is sent in the initial burst of events before the | ||
| 348 | wp_tablet_tool.done event. | ||
| 349 | </description> | ||
| 350 | <arg name="capability" type="uint" enum="capability" summary="the capability"/> | ||
| 351 | </event> | ||
| 352 | |||
| 353 | <event name="done"> | ||
| 354 | <description summary="tool description events sequence complete"> | ||
| 355 | This event signals the end of the initial burst of descriptive | ||
| 356 | events. A client may consider the static description of the tool to | ||
| 357 | be complete and finalize initialization of the tool. | ||
| 358 | </description> | ||
| 359 | </event> | ||
| 360 | |||
| 361 | <event name="removed"> | ||
| 362 | <description summary="tool removed"> | ||
| 363 | This event is sent when the tool is removed from the system and will | ||
| 364 | send no further events. Should the physical tool come back into | ||
| 365 | proximity later, a new wp_tablet_tool object will be created. | ||
| 366 | |||
| 367 | It is compositor-dependent when a tool is removed. A compositor may | ||
| 368 | remove a tool on proximity out, tablet removal or any other reason. | ||
| 369 | A compositor may also keep a tool alive until shutdown. | ||
| 370 | |||
| 371 | If the tool is currently in proximity, a proximity_out event will be | ||
| 372 | sent before the removed event. See wp_tablet_tool.proximity_out for | ||
| 373 | the handling of any buttons logically down. | ||
| 374 | |||
| 375 | When this event is received, the client must wp_tablet_tool.destroy | ||
| 376 | the object. | ||
| 377 | </description> | ||
| 378 | </event> | ||
| 379 | |||
| 380 | <event name="proximity_in"> | ||
| 381 | <description summary="proximity in event"> | ||
| 382 | Notification that this tool is focused on a certain surface. | ||
| 383 | |||
| 384 | This event can be received when the tool has moved from one surface to | ||
| 385 | another, or when the tool has come back into proximity above the | ||
| 386 | surface. | ||
| 387 | |||
| 388 | If any button is logically down when the tool comes into proximity, | ||
| 389 | the respective button event is sent after the proximity_in event but | ||
| 390 | within the same frame as the proximity_in event. | ||
| 391 | </description> | ||
| 392 | <arg name="serial" type="uint"/> | ||
| 393 | <arg name="tablet" type="object" interface="zwp_tablet_v2" summary="The tablet the tool is in proximity of"/> | ||
| 394 | <arg name="surface" type="object" interface="wl_surface" summary="The current surface the tablet tool is over"/> | ||
| 395 | </event> | ||
| 396 | |||
| 397 | <event name="proximity_out"> | ||
| 398 | <description summary="proximity out event"> | ||
| 399 | Notification that this tool has either left proximity, or is no | ||
| 400 | longer focused on a certain surface. | ||
| 401 | |||
| 402 | When the tablet tool leaves proximity of the tablet, button release | ||
| 403 | events are sent for each button that was held down at the time of | ||
| 404 | leaving proximity. These events are sent before the proximity_out | ||
| 405 | event but within the same wp_tablet.frame. | ||
| 406 | |||
| 407 | If the tool stays within proximity of the tablet, but the focus | ||
| 408 | changes from one surface to another, a button release event may not | ||
| 409 | be sent until the button is actually released or the tool leaves the | ||
| 410 | proximity of the tablet. | ||
| 411 | </description> | ||
| 412 | </event> | ||
| 413 | |||
| 414 | <event name="down"> | ||
| 415 | <description summary="tablet tool is making contact"> | ||
| 416 | Sent whenever the tablet tool comes in contact with the surface of the | ||
| 417 | tablet. | ||
| 418 | |||
| 419 | If the tool is already in contact with the tablet when entering the | ||
| 420 | input region, the client owning said region will receive a | ||
| 421 | wp_tablet.proximity_in event, followed by a wp_tablet.down | ||
| 422 | event and a wp_tablet.frame event. | ||
| 423 | |||
| 424 | Note that this event describes logical contact, not physical | ||
| 425 | contact. On some devices, a compositor may not consider a tool in | ||
| 426 | logical contact until a minimum physical pressure threshold is | ||
| 427 | exceeded. | ||
| 428 | </description> | ||
| 429 | <arg name="serial" type="uint"/> | ||
| 430 | </event> | ||
| 431 | |||
| 432 | <event name="up"> | ||
| 433 | <description summary="tablet tool is no longer making contact"> | ||
| 434 | Sent whenever the tablet tool stops making contact with the surface of | ||
| 435 | the tablet, or when the tablet tool moves out of the input region | ||
| 436 | and the compositor grab (if any) is dismissed. | ||
| 437 | |||
| 438 | If the tablet tool moves out of the input region while in contact | ||
| 439 | with the surface of the tablet and the compositor does not have an | ||
| 440 | ongoing grab on the surface, the client owning said region will | ||
| 441 | receive a wp_tablet.up event, followed by a wp_tablet.proximity_out | ||
| 442 | event and a wp_tablet.frame event. If the compositor has an ongoing | ||
| 443 | grab on this device, this event sequence is sent whenever the grab | ||
| 444 | is dismissed in the future. | ||
| 445 | |||
| 446 | Note that this event describes logical contact, not physical | ||
| 447 | contact. On some devices, a compositor may not consider a tool out | ||
| 448 | of logical contact until physical pressure falls below a specific | ||
| 449 | threshold. | ||
| 450 | </description> | ||
| 451 | </event> | ||
| 452 | |||
| 453 | <event name="motion"> | ||
| 454 | <description summary="motion event"> | ||
| 455 | Sent whenever a tablet tool moves. | ||
| 456 | </description> | ||
| 457 | <arg name="x" type="fixed" summary="surface-local x coordinate"/> | ||
| 458 | <arg name="y" type="fixed" summary="surface-local y coordinate"/> | ||
| 459 | </event> | ||
| 460 | |||
| 461 | <event name="pressure"> | ||
| 462 | <description summary="pressure change event"> | ||
| 463 | Sent whenever the pressure axis on a tool changes. The value of this | ||
| 464 | event is normalized to a value between 0 and 65535. | ||
| 465 | |||
| 466 | Note that pressure may be nonzero even when a tool is not in logical | ||
| 467 | contact. See the down and up events for more details. | ||
| 468 | </description> | ||
| 469 | <arg name="pressure" type="uint" summary="The current pressure value"/> | ||
| 470 | </event> | ||
| 471 | |||
| 472 | <event name="distance"> | ||
| 473 | <description summary="distance change event"> | ||
| 474 | Sent whenever the distance axis on a tool changes. The value of this | ||
| 475 | event is normalized to a value between 0 and 65535. | ||
| 476 | |||
| 477 | Note that distance may be nonzero even when a tool is not in logical | ||
| 478 | contact. See the down and up events for more details. | ||
| 479 | </description> | ||
| 480 | <arg name="distance" type="uint" summary="The current distance value"/> | ||
| 481 | </event> | ||
| 482 | |||
| 483 | <event name="tilt"> | ||
| 484 | <description summary="tilt change event"> | ||
| 485 | Sent whenever one or both of the tilt axes on a tool change. Each tilt | ||
| 486 | value is in degrees, relative to the z-axis of the tablet. | ||
| 487 | The angle is positive when the top of a tool tilts along the | ||
| 488 | positive x or y axis. | ||
| 489 | </description> | ||
| 490 | <arg name="tilt_x" type="fixed" summary="The current value of the X tilt axis"/> | ||
| 491 | <arg name="tilt_y" type="fixed" summary="The current value of the Y tilt axis"/> | ||
| 492 | </event> | ||
| 493 | |||
| 494 | <event name="rotation"> | ||
| 495 | <description summary="z-rotation change event"> | ||
| 496 | Sent whenever the z-rotation axis on the tool changes. The | ||
| 497 | rotation value is in degrees clockwise from the tool's | ||
| 498 | logical neutral position. | ||
| 499 | </description> | ||
| 500 | <arg name="degrees" type="fixed" summary="The current rotation of the Z axis"/> | ||
| 501 | </event> | ||
| 502 | |||
| 503 | <event name="slider"> | ||
| 504 | <description summary="Slider position change event"> | ||
| 505 | Sent whenever the slider position on the tool changes. The | ||
| 506 | value is normalized between -65535 and 65535, with 0 as the logical | ||
| 507 | neutral position of the slider. | ||
| 508 | |||
| 509 | The slider is available on e.g. the Wacom Airbrush tool. | ||
| 510 | </description> | ||
| 511 | <arg name="position" type="int" summary="The current position of slider"/> | ||
| 512 | </event> | ||
| 513 | |||
| 514 | <event name="wheel"> | ||
| 515 | <description summary="Wheel delta event"> | ||
| 516 | Sent whenever the wheel on the tool emits an event. This event | ||
| 517 | contains two values for the same axis change. The degrees value is | ||
| 518 | in the same orientation as the wl_pointer.vertical_scroll axis. The | ||
| 519 | clicks value is in discrete logical clicks of the mouse wheel. This | ||
| 520 | value may be zero if the movement of the wheel was less | ||
| 521 | than one logical click. | ||
| 522 | |||
| 523 | Clients should choose either value and avoid mixing degrees and | ||
| 524 | clicks. The compositor may accumulate values smaller than a logical | ||
| 525 | click and emulate click events when a certain threshold is met. | ||
| 526 | Thus, wl_tablet_tool.wheel events with non-zero clicks values may | ||
| 527 | have different degrees values. | ||
| 528 | </description> | ||
| 529 | <arg name="degrees" type="fixed" summary="The wheel delta in degrees"/> | ||
| 530 | <arg name="clicks" type="int" summary="The wheel delta in discrete clicks"/> | ||
| 531 | </event> | ||
| 532 | |||
| 533 | <enum name="button_state"> | ||
| 534 | <description summary="physical button state"> | ||
| 535 | Describes the physical state of a button that produced the button event. | ||
| 536 | </description> | ||
| 537 | <entry name="released" value="0" summary="button is not pressed"/> | ||
| 538 | <entry name="pressed" value="1" summary="button is pressed"/> | ||
| 539 | </enum> | ||
| 540 | |||
| 541 | <event name="button"> | ||
| 542 | <description summary="button event"> | ||
| 543 | Sent whenever a button on the tool is pressed or released. | ||
| 544 | |||
| 545 | If a button is held down when the tool moves in or out of proximity, | ||
| 546 | button events are generated by the compositor. See | ||
| 547 | wp_tablet_tool.proximity_in and wp_tablet_tool.proximity_out for | ||
| 548 | details. | ||
| 549 | </description> | ||
| 550 | <arg name="serial" type="uint"/> | ||
| 551 | <arg name="button" type="uint" summary="The button whose state has changed"/> | ||
| 552 | <arg name="state" type="uint" enum="button_state" summary="Whether the button was pressed or released"/> | ||
| 553 | </event> | ||
| 554 | |||
| 555 | <event name="frame"> | ||
| 556 | <description summary="frame event"> | ||
| 557 | Marks the end of a series of axis and/or button updates from the | ||
| 558 | tablet. The Wayland protocol requires axis updates to be sent | ||
| 559 | sequentially, however all events within a frame should be considered | ||
| 560 | one hardware event. | ||
| 561 | </description> | ||
| 562 | <arg name="time" type="uint" summary="The time of the event with millisecond granularity"/> | ||
| 563 | </event> | ||
| 564 | |||
| 565 | <enum name="error"> | ||
| 566 | <entry name="role" value="0" summary="given wl_surface has another role"/> | ||
| 567 | </enum> | ||
| 568 | </interface> | ||
| 569 | |||
| 570 | <interface name="zwp_tablet_v2" version="1"> | ||
| 571 | <description summary="graphics tablet device"> | ||
| 572 | The wp_tablet interface represents one graphics tablet device. The | ||
| 573 | tablet interface itself does not generate events; all events are | ||
| 574 | generated by wp_tablet_tool objects when in proximity above a tablet. | ||
| 575 | |||
| 576 | A tablet has a number of static characteristics, e.g. device name and | ||
| 577 | pid/vid. These capabilities are sent in an event sequence after the | ||
| 578 | wp_tablet_seat.tablet_added event. This initial event sequence is | ||
| 579 | terminated by a wp_tablet.done event. | ||
| 580 | </description> | ||
| 581 | |||
| 582 | <request name="destroy" type="destructor"> | ||
| 583 | <description summary="destroy the tablet object"> | ||
| 584 | This destroys the client's resource for this tablet object. | ||
| 585 | </description> | ||
| 586 | </request> | ||
| 587 | |||
| 588 | <event name="name"> | ||
| 589 | <description summary="tablet device name"> | ||
| 590 | A descriptive name for the tablet device. | ||
| 591 | |||
| 592 | If the device has no descriptive name, this event is not sent. | ||
| 593 | |||
| 594 | This event is sent in the initial burst of events before the | ||
| 595 | wp_tablet.done event. | ||
| 596 | </description> | ||
| 597 | <arg name="name" type="string" summary="the device name"/> | ||
| 598 | </event> | ||
| 599 | |||
| 600 | <event name="id"> | ||
| 601 | <description summary="tablet device USB vendor/product id"> | ||
| 602 | The USB vendor and product IDs for the tablet device. | ||
| 603 | |||
| 604 | If the device has no USB vendor/product ID, this event is not sent. | ||
| 605 | This can happen for virtual devices or non-USB devices, for instance. | ||
| 606 | |||
| 607 | This event is sent in the initial burst of events before the | ||
| 608 | wp_tablet.done event. | ||
| 609 | </description> | ||
| 610 | <arg name="vid" type="uint" summary="USB vendor id"/> | ||
| 611 | <arg name="pid" type="uint" summary="USB product id"/> | ||
| 612 | </event> | ||
| 613 | |||
| 614 | <event name="path"> | ||
| 615 | <description summary="path to the device"> | ||
| 616 | A system-specific device path that indicates which device is behind | ||
| 617 | this wp_tablet. This information may be used to gather additional | ||
| 618 | information about the device, e.g. through libwacom. | ||
| 619 | |||
| 620 | A device may have more than one device path. If so, multiple | ||
| 621 | wp_tablet.path events are sent. A device may be emulated and not | ||
| 622 | have a device path, and in that case this event will not be sent. | ||
| 623 | |||
| 624 | The format of the path is unspecified, it may be a device node, a | ||
| 625 | sysfs path, or some other identifier. It is up to the client to | ||
| 626 | identify the string provided. | ||
| 627 | |||
| 628 | This event is sent in the initial burst of events before the | ||
| 629 | wp_tablet.done event. | ||
| 630 | </description> | ||
| 631 | <arg name="path" type="string" summary="path to local device"/> | ||
| 632 | </event> | ||
| 633 | |||
| 634 | <event name="done"> | ||
| 635 | <description summary="tablet description events sequence complete"> | ||
| 636 | This event is sent immediately to signal the end of the initial | ||
| 637 | burst of descriptive events. A client may consider the static | ||
| 638 | description of the tablet to be complete and finalize initialization | ||
| 639 | of the tablet. | ||
| 640 | </description> | ||
| 641 | </event> | ||
| 642 | |||
| 643 | <event name="removed"> | ||
| 644 | <description summary="tablet removed event"> | ||
| 645 | Sent when the tablet has been removed from the system. When a tablet | ||
| 646 | is removed, some tools may be removed. | ||
| 647 | |||
| 648 | When this event is received, the client must wp_tablet.destroy | ||
| 649 | the object. | ||
| 650 | </description> | ||
| 651 | </event> | ||
| 652 | </interface> | ||
| 653 | |||
| 654 | <interface name="zwp_tablet_pad_ring_v2" version="1"> | ||
| 655 | <description summary="pad ring"> | ||
| 656 | A circular interaction area, such as the touch ring on the Wacom Intuos | ||
| 657 | Pro series tablets. | ||
| 658 | |||
| 659 | Events on a ring are logically grouped by the wl_tablet_pad_ring.frame | ||
| 660 | event. | ||
| 661 | </description> | ||
| 662 | |||
| 663 | <request name="set_feedback"> | ||
| 664 | <description summary="set compositor feedback"> | ||
| 665 | Request that the compositor use the provided feedback string | ||
| 666 | associated with this ring. This request should be issued immediately | ||
| 667 | after a wp_tablet_pad_group.mode_switch event from the corresponding | ||
| 668 | group is received, or whenever the ring is mapped to a different | ||
| 669 | action. See wp_tablet_pad_group.mode_switch for more details. | ||
| 670 | |||
| 671 | Clients are encouraged to provide context-aware descriptions for | ||
| 672 | the actions associated with the ring; compositors may use this | ||
| 673 | information to offer visual feedback about the button layout | ||
| 674 | (eg. on-screen displays). | ||
| 675 | |||
| 676 | The provided string 'description' is a UTF-8 encoded string to be | ||
| 677 | associated with this ring, and is considered user-visible; general | ||
| 678 | internationalization rules apply. | ||
| 679 | |||
| 680 | The serial argument will be that of the last | ||
| 681 | wp_tablet_pad_group.mode_switch event received for the group of this | ||
| 682 | ring. Requests providing other serials than the most recent one will be | ||
| 683 | ignored. | ||
| 684 | </description> | ||
| 685 | <arg name="description" type="string" summary="ring description"/> | ||
| 686 | <arg name="serial" type="uint" summary="serial of the mode switch event"/> | ||
| 687 | </request> | ||
| 688 | |||
| 689 | <request name="destroy" type="destructor"> | ||
| 690 | <description summary="destroy the ring object"> | ||
| 691 | This destroys the client's resource for this ring object. | ||
| 692 | </description> | ||
| 693 | </request> | ||
| 694 | |||
| 695 | <enum name="source"> | ||
| 696 | <description summary="ring axis source"> | ||
| 697 | Describes the source types for ring events. This indicates to the | ||
| 698 | client how a ring event was physically generated; a client may | ||
| 699 | adjust the user interface accordingly. For example, events | ||
| 700 | from a "finger" source may trigger kinetic scrolling. | ||
| 701 | </description> | ||
| 702 | <entry name="finger" value="1" summary="finger"/> | ||
| 703 | </enum> | ||
| 704 | |||
| 705 | <event name="source"> | ||
| 706 | <description summary="ring event source"> | ||
| 707 | Source information for ring events. | ||
| 708 | |||
| 709 | This event does not occur on its own. It is sent before a | ||
| 710 | wp_tablet_pad_ring.frame event and carries the source information | ||
| 711 | for all events within that frame. | ||
| 712 | |||
| 713 | The source specifies how this event was generated. If the source is | ||
| 714 | wp_tablet_pad_ring.source.finger, a wp_tablet_pad_ring.stop event | ||
| 715 | will be sent when the user lifts the finger off the device. | ||
| 716 | |||
| 717 | This event is optional. If the source is unknown for an interaction, | ||
| 718 | no event is sent. | ||
| 719 | </description> | ||
| 720 | <arg name="source" type="uint" enum="source" summary="the event source"/> | ||
| 721 | </event> | ||
| 722 | |||
| 723 | <event name="angle"> | ||
| 724 | <description summary="angle changed"> | ||
| 725 | Sent whenever the angle on a ring changes. | ||
| 726 | |||
| 727 | The angle is provided in degrees clockwise from the logical | ||
| 728 | north of the ring in the pad's current rotation. | ||
| 729 | </description> | ||
| 730 | <arg name="degrees" type="fixed" summary="the current angle in degrees"/> | ||
| 731 | </event> | ||
| 732 | |||
| 733 | <event name="stop"> | ||
| 734 | <description summary="interaction stopped"> | ||
| 735 | Stop notification for ring events. | ||
| 736 | |||
| 737 | For some wp_tablet_pad_ring.source types, a wp_tablet_pad_ring.stop | ||
| 738 | event is sent to notify a client that the interaction with the ring | ||
| 739 | has terminated. This enables the client to implement kinetic scrolling. | ||
| 740 | See the wp_tablet_pad_ring.source documentation for information on | ||
| 741 | when this event may be generated. | ||
| 742 | |||
| 743 | Any wp_tablet_pad_ring.angle events with the same source after this | ||
| 744 | event should be considered as the start of a new interaction. | ||
| 745 | </description> | ||
| 746 | </event> | ||
| 747 | |||
| 748 | <event name="frame"> | ||
| 749 | <description summary="end of a ring event sequence"> | ||
| 750 | Indicates the end of a set of ring events that logically belong | ||
| 751 | together. A client is expected to accumulate the data in all events | ||
| 752 | within the frame before proceeding. | ||
| 753 | |||
| 754 | All wp_tablet_pad_ring events before a wp_tablet_pad_ring.frame event belong | ||
| 755 | logically together. For example, on termination of a finger interaction | ||
| 756 | on a ring the compositor will send a wp_tablet_pad_ring.source event, | ||
| 757 | a wp_tablet_pad_ring.stop event and a wp_tablet_pad_ring.frame event. | ||
| 758 | |||
| 759 | A wp_tablet_pad_ring.frame event is sent for every logical event | ||
| 760 | group, even if the group only contains a single wp_tablet_pad_ring | ||
| 761 | event. Specifically, a client may get a sequence: angle, frame, | ||
| 762 | angle, frame, etc. | ||
| 763 | </description> | ||
| 764 | <arg name="time" type="uint" summary="timestamp with millisecond granularity"/> | ||
| 765 | </event> | ||
| 766 | </interface> | ||
| 767 | |||
| 768 | <interface name="zwp_tablet_pad_strip_v2" version="1"> | ||
| 769 | <description summary="pad strip"> | ||
| 770 | A linear interaction area, such as the strips found in Wacom Cintiq | ||
| 771 | models. | ||
| 772 | |||
| 773 | Events on a strip are logically grouped by the wl_tablet_pad_strip.frame | ||
| 774 | event. | ||
| 775 | </description> | ||
| 776 | |||
| 777 | <request name="set_feedback"> | ||
| 778 | <description summary="set compositor feedback"> | ||
| 779 | Requests the compositor to use the provided feedback string | ||
| 780 | associated with this strip. This request should be issued immediately | ||
| 781 | after a wp_tablet_pad_group.mode_switch event from the corresponding | ||
| 782 | group is received, or whenever the strip is mapped to a different | ||
| 783 | action. See wp_tablet_pad_group.mode_switch for more details. | ||
| 784 | |||
| 785 | Clients are encouraged to provide context-aware descriptions for | ||
| 786 | the actions associated with the strip, and compositors may use this | ||
| 787 | information to offer visual feedback about the button layout | ||
| 788 | (eg. on-screen displays). | ||
| 789 | |||
| 790 | The provided string 'description' is a UTF-8 encoded string to be | ||
| 791 | associated with this ring, and is considered user-visible; general | ||
| 792 | internationalization rules apply. | ||
| 793 | |||
| 794 | The serial argument will be that of the last | ||
| 795 | wp_tablet_pad_group.mode_switch event received for the group of this | ||
| 796 | strip. Requests providing other serials than the most recent one will be | ||
| 797 | ignored. | ||
| 798 | </description> | ||
| 799 | <arg name="description" type="string" summary="strip description"/> | ||
| 800 | <arg name="serial" type="uint" summary="serial of the mode switch event"/> | ||
| 801 | </request> | ||
| 802 | |||
| 803 | <request name="destroy" type="destructor"> | ||
| 804 | <description summary="destroy the strip object"> | ||
| 805 | This destroys the client's resource for this strip object. | ||
| 806 | </description> | ||
| 807 | </request> | ||
| 808 | |||
| 809 | <enum name="source"> | ||
| 810 | <description summary="strip axis source"> | ||
| 811 | Describes the source types for strip events. This indicates to the | ||
| 812 | client how a strip event was physically generated; a client may | ||
| 813 | adjust the user interface accordingly. For example, events | ||
| 814 | from a "finger" source may trigger kinetic scrolling. | ||
| 815 | </description> | ||
| 816 | <entry name="finger" value="1" summary="finger"/> | ||
| 817 | </enum> | ||
| 818 | |||
| 819 | <event name="source"> | ||
| 820 | <description summary="strip event source"> | ||
| 821 | Source information for strip events. | ||
| 822 | |||
| 823 | This event does not occur on its own. It is sent before a | ||
| 824 | wp_tablet_pad_strip.frame event and carries the source information | ||
| 825 | for all events within that frame. | ||
| 826 | |||
| 827 | The source specifies how this event was generated. If the source is | ||
| 828 | wp_tablet_pad_strip.source.finger, a wp_tablet_pad_strip.stop event | ||
| 829 | will be sent when the user lifts their finger off the device. | ||
| 830 | |||
| 831 | This event is optional. If the source is unknown for an interaction, | ||
| 832 | no event is sent. | ||
| 833 | </description> | ||
| 834 | <arg name="source" type="uint" enum="source" summary="the event source"/> | ||
| 835 | </event> | ||
| 836 | |||
| 837 | <event name="position"> | ||
| 838 | <description summary="position changed"> | ||
| 839 | Sent whenever the position on a strip changes. | ||
| 840 | |||
| 841 | The position is normalized to a range of [0, 65535], the 0-value | ||
| 842 | represents the top-most and/or left-most position of the strip in | ||
| 843 | the pad's current rotation. | ||
| 844 | </description> | ||
| 845 | <arg name="position" type="uint" summary="the current position"/> | ||
| 846 | </event> | ||
| 847 | |||
| 848 | <event name="stop"> | ||
| 849 | <description summary="interaction stopped"> | ||
| 850 | Stop notification for strip events. | ||
| 851 | |||
| 852 | For some wp_tablet_pad_strip.source types, a wp_tablet_pad_strip.stop | ||
| 853 | event is sent to notify a client that the interaction with the strip | ||
| 854 | has terminated. This enables the client to implement kinetic | ||
| 855 | scrolling. See the wp_tablet_pad_strip.source documentation for | ||
| 856 | information on when this event may be generated. | ||
| 857 | |||
| 858 | Any wp_tablet_pad_strip.position events with the same source after this | ||
| 859 | event should be considered as the start of a new interaction. | ||
| 860 | </description> | ||
| 861 | </event> | ||
| 862 | |||
| 863 | <event name="frame"> | ||
| 864 | <description summary="end of a strip event sequence"> | ||
| 865 | Indicates the end of a set of events that represent one logical | ||
| 866 | hardware strip event. A client is expected to accumulate the data | ||
| 867 | in all events within the frame before proceeding. | ||
| 868 | |||
| 869 | All wp_tablet_pad_strip events before a wp_tablet_pad_strip.frame event belong | ||
| 870 | logically together. For example, on termination of a finger interaction | ||
| 871 | on a strip the compositor will send a wp_tablet_pad_strip.source event, | ||
| 872 | a wp_tablet_pad_strip.stop event and a wp_tablet_pad_strip.frame | ||
| 873 | event. | ||
| 874 | |||
| 875 | A wp_tablet_pad_strip.frame event is sent for every logical event | ||
| 876 | group, even if the group only contains a single wp_tablet_pad_strip | ||
| 877 | event. Specifically, a client may get a sequence: position, frame, | ||
| 878 | position, frame, etc. | ||
| 879 | </description> | ||
| 880 | <arg name="time" type="uint" summary="timestamp with millisecond granularity"/> | ||
| 881 | </event> | ||
| 882 | </interface> | ||
| 883 | |||
| 884 | <interface name="zwp_tablet_pad_group_v2" version="1"> | ||
| 885 | <description summary="a set of buttons, rings and strips"> | ||
| 886 | A pad group describes a distinct (sub)set of buttons, rings and strips | ||
| 887 | present in the tablet. The criteria of this grouping is usually positional, | ||
| 888 | eg. if a tablet has buttons on the left and right side, 2 groups will be | ||
| 889 | presented. The physical arrangement of groups is undisclosed and may | ||
| 890 | change on the fly. | ||
| 891 | |||
| 892 | Pad groups will announce their features during pad initialization. Between | ||
| 893 | the corresponding wp_tablet_pad.group event and wp_tablet_pad_group.done, the | ||
| 894 | pad group will announce the buttons, rings and strips contained in it, | ||
| 895 | plus the number of supported modes. | ||
| 896 | |||
| 897 | Modes are a mechanism to allow multiple groups of actions for every element | ||
| 898 | in the pad group. The number of groups and available modes in each is | ||
| 899 | persistent across device plugs. The current mode is user-switchable, it | ||
| 900 | will be announced through the wp_tablet_pad_group.mode_switch event both | ||
| 901 | whenever it is switched, and after wp_tablet_pad.enter. | ||
| 902 | |||
| 903 | The current mode logically applies to all elements in the pad group, | ||
| 904 | although it is at clients' discretion whether to actually perform different | ||
| 905 | actions, and/or issue the respective .set_feedback requests to notify the | ||
| 906 | compositor. See the wp_tablet_pad_group.mode_switch event for more details. | ||
| 907 | </description> | ||
| 908 | |||
| 909 | <request name="destroy" type="destructor"> | ||
| 910 | <description summary="destroy the pad object"> | ||
| 911 | Destroy the wp_tablet_pad_group object. Objects created from this object | ||
| 912 | are unaffected and should be destroyed separately. | ||
| 913 | </description> | ||
| 914 | </request> | ||
| 915 | |||
| 916 | <event name="buttons"> | ||
| 917 | <description summary="buttons announced"> | ||
| 918 | Sent on wp_tablet_pad_group initialization to announce the available | ||
| 919 | buttons in the group. Button indices start at 0, a button may only be | ||
| 920 | in one group at a time. | ||
| 921 | |||
| 922 | This event is first sent in the initial burst of events before the | ||
| 923 | wp_tablet_pad_group.done event. | ||
| 924 | |||
| 925 | Some buttons are reserved by the compositor. These buttons may not be | ||
| 926 | assigned to any wp_tablet_pad_group. Compositors may broadcast this | ||
| 927 | event in the case of changes to the mapping of these reserved buttons. | ||
| 928 | If the compositor happens to reserve all buttons in a group, this event | ||
| 929 | will be sent with an empty array. | ||
| 930 | </description> | ||
| 931 | <arg name="buttons" type="array" summary="buttons in this group"/> | ||
| 932 | </event> | ||
| 933 | |||
| 934 | <event name="ring"> | ||
| 935 | <description summary="ring announced"> | ||
| 936 | Sent on wp_tablet_pad_group initialization to announce available rings. | ||
| 937 | One event is sent for each ring available on this pad group. | ||
| 938 | |||
| 939 | This event is sent in the initial burst of events before the | ||
| 940 | wp_tablet_pad_group.done event. | ||
| 941 | </description> | ||
| 942 | <arg name="ring" type="new_id" interface="zwp_tablet_pad_ring_v2"/> | ||
| 943 | </event> | ||
| 944 | |||
| 945 | <event name="strip"> | ||
| 946 | <description summary="strip announced"> | ||
| 947 | Sent on wp_tablet_pad initialization to announce available strips. | ||
| 948 | One event is sent for each strip available on this pad group. | ||
| 949 | |||
| 950 | This event is sent in the initial burst of events before the | ||
| 951 | wp_tablet_pad_group.done event. | ||
| 952 | </description> | ||
| 953 | <arg name="strip" type="new_id" interface="zwp_tablet_pad_strip_v2"/> | ||
| 954 | </event> | ||
| 955 | |||
| 956 | <event name="modes"> | ||
| 957 | <description summary="mode-switch ability announced"> | ||
| 958 | Sent on wp_tablet_pad_group initialization to announce that the pad | ||
| 959 | group may switch between modes. A client may use a mode to store a | ||
| 960 | specific configuration for buttons, rings and strips and use the | ||
| 961 | wl_tablet_pad_group.mode_switch event to toggle between these | ||
| 962 | configurations. Mode indices start at 0. | ||
| 963 | |||
| 964 | Switching modes is compositor-dependent. See the | ||
| 965 | wp_tablet_pad_group.mode_switch event for more details. | ||
| 966 | |||
| 967 | This event is sent in the initial burst of events before the | ||
| 968 | wp_tablet_pad_group.done event. This event is only sent when more than | ||
| 969 | more than one mode is available. | ||
| 970 | </description> | ||
| 971 | <arg name="modes" type="uint" summary="the number of modes"/> | ||
| 972 | </event> | ||
| 973 | |||
| 974 | <event name="done"> | ||
| 975 | <description summary="tablet group description events sequence complete"> | ||
| 976 | This event is sent immediately to signal the end of the initial | ||
| 977 | burst of descriptive events. A client may consider the static | ||
| 978 | description of the tablet to be complete and finalize initialization | ||
| 979 | of the tablet group. | ||
| 980 | </description> | ||
| 981 | </event> | ||
| 982 | |||
| 983 | <event name="mode_switch"> | ||
| 984 | <description summary="mode switch event"> | ||
| 985 | Notification that the mode was switched. | ||
| 986 | |||
| 987 | A mode applies to all buttons, rings and strips in a group | ||
| 988 | simultaneously, but a client is not required to assign different actions | ||
| 989 | for each mode. For example, a client may have mode-specific button | ||
| 990 | mappings but map the ring to vertical scrolling in all modes. Mode | ||
| 991 | indices start at 0. | ||
| 992 | |||
| 993 | Switching modes is compositor-dependent. The compositor may provide | ||
| 994 | visual cues to the client about the mode, e.g. by toggling LEDs on | ||
| 995 | the tablet device. Mode-switching may be software-controlled or | ||
| 996 | controlled by one or more physical buttons. For example, on a Wacom | ||
| 997 | Intuos Pro, the button inside the ring may be assigned to switch | ||
| 998 | between modes. | ||
| 999 | |||
| 1000 | The compositor will also send this event after wp_tablet_pad.enter on | ||
| 1001 | each group in order to notify of the current mode. Groups that only | ||
| 1002 | feature one mode will use mode=0 when emitting this event. | ||
| 1003 | |||
| 1004 | If a button action in the new mode differs from the action in the | ||
| 1005 | previous mode, the client should immediately issue a | ||
| 1006 | wp_tablet_pad.set_feedback request for each changed button. | ||
| 1007 | |||
| 1008 | If a ring or strip action in the new mode differs from the action | ||
| 1009 | in the previous mode, the client should immediately issue a | ||
| 1010 | wp_tablet_ring.set_feedback or wp_tablet_strip.set_feedback request | ||
| 1011 | for each changed ring or strip. | ||
| 1012 | </description> | ||
| 1013 | <arg name="time" type="uint" summary="the time of the event with millisecond granularity"/> | ||
| 1014 | <arg name="serial" type="uint"/> | ||
| 1015 | <arg name="mode" type="uint" summary="the new mode of the pad"/> | ||
| 1016 | </event> | ||
| 1017 | </interface> | ||
| 1018 | |||
| 1019 | <interface name="zwp_tablet_pad_v2" version="1"> | ||
| 1020 | <description summary="a set of buttons, rings and strips"> | ||
| 1021 | A pad device is a set of buttons, rings and strips | ||
| 1022 | usually physically present on the tablet device itself. Some | ||
| 1023 | exceptions exist where the pad device is physically detached, e.g. the | ||
| 1024 | Wacom ExpressKey Remote. | ||
| 1025 | |||
| 1026 | Pad devices have no axes that control the cursor and are generally | ||
| 1027 | auxiliary devices to the tool devices used on the tablet surface. | ||
| 1028 | |||
| 1029 | A pad device has a number of static characteristics, e.g. the number | ||
| 1030 | of rings. These capabilities are sent in an event sequence after the | ||
| 1031 | wp_tablet_seat.pad_added event before any actual events from this pad. | ||
| 1032 | This initial event sequence is terminated by a wp_tablet_pad.done | ||
| 1033 | event. | ||
| 1034 | |||
| 1035 | All pad features (buttons, rings and strips) are logically divided into | ||
| 1036 | groups and all pads have at least one group. The available groups are | ||
| 1037 | notified through the wp_tablet_pad.group event; the compositor will | ||
| 1038 | emit one event per group before emitting wp_tablet_pad.done. | ||
| 1039 | |||
| 1040 | Groups may have multiple modes. Modes allow clients to map multiple | ||
| 1041 | actions to a single pad feature. Only one mode can be active per group, | ||
| 1042 | although different groups may have different active modes. | ||
| 1043 | </description> | ||
| 1044 | |||
| 1045 | <request name="set_feedback"> | ||
| 1046 | <description summary="set compositor feedback"> | ||
| 1047 | Requests the compositor to use the provided feedback string | ||
| 1048 | associated with this button. This request should be issued immediately | ||
| 1049 | after a wp_tablet_pad_group.mode_switch event from the corresponding | ||
| 1050 | group is received, or whenever a button is mapped to a different | ||
| 1051 | action. See wp_tablet_pad_group.mode_switch for more details. | ||
| 1052 | |||
| 1053 | Clients are encouraged to provide context-aware descriptions for | ||
| 1054 | the actions associated with each button, and compositors may use | ||
| 1055 | this information to offer visual feedback on the button layout | ||
| 1056 | (e.g. on-screen displays). | ||
| 1057 | |||
| 1058 | Button indices start at 0. Setting the feedback string on a button | ||
| 1059 | that is reserved by the compositor (i.e. not belonging to any | ||
| 1060 | wp_tablet_pad_group) does not generate an error but the compositor | ||
| 1061 | is free to ignore the request. | ||
| 1062 | |||
| 1063 | The provided string 'description' is a UTF-8 encoded string to be | ||
| 1064 | associated with this ring, and is considered user-visible; general | ||
| 1065 | internationalization rules apply. | ||
| 1066 | |||
| 1067 | The serial argument will be that of the last | ||
| 1068 | wp_tablet_pad_group.mode_switch event received for the group of this | ||
| 1069 | button. Requests providing other serials than the most recent one will | ||
| 1070 | be ignored. | ||
| 1071 | </description> | ||
| 1072 | <arg name="button" type="uint" summary="button index"/> | ||
| 1073 | <arg name="description" type="string" summary="button description"/> | ||
| 1074 | <arg name="serial" type="uint" summary="serial of the mode switch event"/> | ||
| 1075 | </request> | ||
| 1076 | |||
| 1077 | <request name="destroy" type="destructor"> | ||
| 1078 | <description summary="destroy the pad object"> | ||
| 1079 | Destroy the wp_tablet_pad object. Objects created from this object | ||
| 1080 | are unaffected and should be destroyed separately. | ||
| 1081 | </description> | ||
| 1082 | </request> | ||
| 1083 | |||
| 1084 | <event name="group"> | ||
| 1085 | <description summary="group announced"> | ||
| 1086 | Sent on wp_tablet_pad initialization to announce available groups. | ||
| 1087 | One event is sent for each pad group available. | ||
| 1088 | |||
| 1089 | This event is sent in the initial burst of events before the | ||
| 1090 | wp_tablet_pad.done event. At least one group will be announced. | ||
| 1091 | </description> | ||
| 1092 | <arg name="pad_group" type="new_id" interface="zwp_tablet_pad_group_v2"/> | ||
| 1093 | </event> | ||
| 1094 | |||
| 1095 | <event name="path"> | ||
| 1096 | <description summary="path to the device"> | ||
| 1097 | A system-specific device path that indicates which device is behind | ||
| 1098 | this wp_tablet_pad. This information may be used to gather additional | ||
| 1099 | information about the device, e.g. through libwacom. | ||
| 1100 | |||
| 1101 | The format of the path is unspecified, it may be a device node, a | ||
| 1102 | sysfs path, or some other identifier. It is up to the client to | ||
| 1103 | identify the string provided. | ||
| 1104 | |||
| 1105 | This event is sent in the initial burst of events before the | ||
| 1106 | wp_tablet_pad.done event. | ||
| 1107 | </description> | ||
| 1108 | <arg name="path" type="string" summary="path to local device"/> | ||
| 1109 | </event> | ||
| 1110 | |||
| 1111 | <event name="buttons"> | ||
| 1112 | <description summary="buttons announced"> | ||
| 1113 | Sent on wp_tablet_pad initialization to announce the available | ||
| 1114 | buttons. | ||
| 1115 | |||
| 1116 | This event is sent in the initial burst of events before the | ||
| 1117 | wp_tablet_pad.done event. This event is only sent when at least one | ||
| 1118 | button is available. | ||
| 1119 | </description> | ||
| 1120 | <arg name="buttons" type="uint" summary="the number of buttons"/> | ||
| 1121 | </event> | ||
| 1122 | |||
| 1123 | <event name="done"> | ||
| 1124 | <description summary="pad description event sequence complete"> | ||
| 1125 | This event signals the end of the initial burst of descriptive | ||
| 1126 | events. A client may consider the static description of the pad to | ||
| 1127 | be complete and finalize initialization of the pad. | ||
| 1128 | </description> | ||
| 1129 | </event> | ||
| 1130 | |||
| 1131 | <enum name="button_state"> | ||
| 1132 | <description summary="physical button state"> | ||
| 1133 | Describes the physical state of a button that caused the button | ||
| 1134 | event. | ||
| 1135 | </description> | ||
| 1136 | <entry name="released" value="0" summary="the button is not pressed"/> | ||
| 1137 | <entry name="pressed" value="1" summary="the button is pressed"/> | ||
| 1138 | </enum> | ||
| 1139 | |||
| 1140 | <event name="button"> | ||
| 1141 | <description summary="physical button state"> | ||
| 1142 | Sent whenever the physical state of a button changes. | ||
| 1143 | </description> | ||
| 1144 | <arg name="time" type="uint" summary="the time of the event with millisecond granularity"/> | ||
| 1145 | <arg name="button" type="uint" summary="the index of the button that changed state"/> | ||
| 1146 | <arg name="state" type="uint" enum="button_state"/> | ||
| 1147 | </event> | ||
| 1148 | |||
| 1149 | <event name="enter"> | ||
| 1150 | <description summary="enter event"> | ||
| 1151 | Notification that this pad is focused on the specified surface. | ||
| 1152 | </description> | ||
| 1153 | <arg name="serial" type="uint" summary="serial number of the enter event"/> | ||
| 1154 | <arg name="tablet" type="object" interface="zwp_tablet_v2" summary="the tablet the pad is attached to"/> | ||
| 1155 | <arg name="surface" type="object" interface="wl_surface" summary="surface the pad is focused on"/> | ||
| 1156 | </event> | ||
| 1157 | |||
| 1158 | <event name="leave"> | ||
| 1159 | <description summary="leave event"> | ||
| 1160 | Notification that this pad is no longer focused on the specified | ||
| 1161 | surface. | ||
| 1162 | </description> | ||
| 1163 | <arg name="serial" type="uint" summary="serial number of the leave event"/> | ||
| 1164 | <arg name="surface" type="object" interface="wl_surface" summary="surface the pad is no longer focused on"/> | ||
| 1165 | </event> | ||
| 1166 | |||
| 1167 | <event name="removed"> | ||
| 1168 | <description summary="pad removed event"> | ||
| 1169 | Sent when the pad has been removed from the system. When a tablet | ||
| 1170 | is removed its pad(s) will be removed too. | ||
| 1171 | |||
| 1172 | When this event is received, the client must destroy all rings, strips | ||
| 1173 | and groups that were offered by this pad, and issue wp_tablet_pad.destroy | ||
| 1174 | the pad itself. | ||
| 1175 | </description> | ||
| 1176 | </event> | ||
| 1177 | </interface> | ||
| 1178 | </protocol> | ||
