1<?xml version="1.0" encoding="utf-8"?> 2<!-- 3Copyright (C) 2006 Peter Hutterer 4Copyright (C) 2013 Daniel Martin 5All Rights Reserved. 6 7Permission is hereby granted, free of charge, to any person obtaining a copy 8of this software and associated documentation files (the "Software"), to deal 9in the Software without restriction, including without limitation the rights 10to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11copies of the Software, and to permit persons to whom the Software is 12furnished to do so, subject to the following conditions: 13 14The above copyright notice and this permission notice shall be included in all 15copies or substantial portions of the Software. 16 17THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 21ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 22WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23 24Except as contained in this notice, the names of the authors or their 25institutions shall not be used in advertising or otherwise to promote the 26sale, use or other dealings in this Software without prior written 27authorization from the authors. 28--> 29 30<!-- Specifications: 31 http://cgit.freedesktop.org/xorg/proto/inputproto/tree/specs/XIproto.txt 32 http://cgit.freedesktop.org/xorg/proto/inputproto/tree/specs/XI2proto.txt 33--> 34 35<xcb header="xinput" extension-xname="XInputExtension" extension-name="Input" 36 major-version="2" minor-version="4"> 37 <import>xfixes</import> 38 <import>xproto</import> 39 40 <!-- ⋅⋅⋅ Types (v1.0) ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ --> 41 42 <typedef oldname="CARD32" newname="EventClass" /> 43 <typedef oldname="CARD8" newname="KeyCode" /> 44 45 <!-- ⋅⋅⋅ Types (v2.0) ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ --> 46 47 <typedef oldname="CARD16" newname="DeviceId" /> 48 <typedef oldname="INT32" newname="FP1616" /> 49 50 <struct name="FP3232"> 51 <field type="INT32" name="integral" /> 52 <field type="CARD32" name="frac" /> 53 </struct> 54 55 <!-- ⋅⋅⋅ Requests (v1.0) ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ --> 56 57 <!-- GetExtensionVersion --> 58 59 <request name="GetExtensionVersion" opcode="1"> 60 <field type="CARD16" name="name_len" /> 61 <pad bytes="2" /> 62 <list type="char" name="name"> 63 <fieldref>name_len</fieldref> 64 </list> 65 <reply> 66 <field type="CARD8" name="xi_reply_type" /> 67 <field type="CARD16" name="server_major" /> 68 <field type="CARD16" name="server_minor" /> 69 <field type="BOOL" name="present" /> 70 <pad bytes="19" /> 71 </reply> 72 </request> 73 74 <!-- ListInputDevices --> 75 76 <enum name="DeviceUse"> 77 <item name="IsXPointer"> <value>0</value> </item> 78 <item name="IsXKeyboard"> <value>1</value> </item> 79 <item name="IsXExtensionDevice"> <value>2</value> </item> 80 <item name="IsXExtensionKeyboard"> <value>3</value> </item> 81 <item name="IsXExtensionPointer"> <value>4</value> </item> 82 </enum> 83 84 <enum name="InputClass"> 85 <item name="Key"> <value>0</value> </item> 86 <item name="Button"> <value>1</value> </item> 87 <item name="Valuator"> <value>2</value> </item> 88 <item name="Feedback"> <value>3</value> </item> 89 <item name="Proximity"> <value>4</value> </item> 90 <item name="Focus"> <value>5</value> </item> 91 <item name="Other"> <value>6</value> </item> 92 <!-- 93 value Attach=7 is still contained in XI.h as "#define AttachClass" 94 but it was never transmitted over the protocol. 95 (It was used to tag a fake class created by libXi). 96 97 Even the creation of that fake class has been dropped 98 from libXi in 2009 by the following change: 99 http://cgit.freedesktop.org/xorg/lib/libXi/commit/?id=62858c426e6de1b99df660251737233afd335302 100 101 <item name="Attach"> <value>7</value> </item> 102 --> 103 </enum> 104 105 <enum name="ValuatorMode"> 106 <item name="Relative"> <value>0</value> </item> 107 <item name="Absolute"> <value>1</value> </item> 108 </enum> 109 110 <struct name="DeviceInfo"> 111 <field type="ATOM" name="device_type" /> 112 <field type="CARD8" name="device_id" /> 113 <field type="CARD8" name="num_class_info" /> 114 <field type="CARD8" name="device_use" enum="DeviceUse" /> 115 <pad bytes="1" /> 116 </struct> 117 118 <struct name="KeyInfo"> 119 <field type="CARD8" name="class_id" enum="InputClass" /> 120 <field type="CARD8" name="len" /> 121 <field type="KeyCode" name="min_keycode" /> 122 <field type="KeyCode" name="max_keycode" /> 123 <field type="CARD16" name="num_keys" /> 124 <pad bytes="2" /> 125 </struct> 126 127 <struct name="ButtonInfo"> 128 <field type="CARD8" name="class_id" enum="InputClass" /> 129 <field type="CARD8" name="len" /> 130 <field type="CARD16" name="num_buttons" /> 131 </struct> 132 133 <struct name="AxisInfo"> 134 <field type="CARD32" name="resolution" /> 135 <field type="INT32" name="minimum" /> 136 <field type="INT32" name="maximum" /> 137 </struct> 138 139 <struct name="ValuatorInfo"> 140 <field type="CARD8" name="class_id" enum="InputClass" /> 141 <field type="CARD8" name="len" /> 142 <field type="CARD8" name="axes_len" /> 143 <field type="CARD8" name="mode" enum="ValuatorMode" /> 144 <field type="CARD32" name="motion_size" /> 145 <list type="AxisInfo" name="axes"> 146 <fieldref>axes_len</fieldref> 147 </list> 148 </struct> 149 150 <struct name="InputInfo"> 151 <field type="CARD8" name="class_id" enum="InputClass" /> 152 <field type="CARD8" name="len" /> 153 <switch name="info"> 154 <fieldref>class_id</fieldref> 155 <required_start_align align="4" offset="2" /> 156 <case name="key"> 157 <enumref ref="InputClass">Key</enumref> 158 <field type="KeyCode" name="min_keycode" /> 159 <field type="KeyCode" name="max_keycode" /> 160 <field type="CARD16" name="num_keys" /> 161 <pad bytes="2" /> 162 </case> 163 <case name="button"> 164 <enumref ref="InputClass">Button</enumref> 165 <field type="CARD16" name="num_buttons" /> 166 </case> 167 <case name="valuator"> 168 <enumref ref="InputClass">Valuator</enumref> 169 <required_start_align align="4" offset="2" /> 170 <field type="CARD8" name="axes_len" /> 171 <field type="CARD8" name="mode" enum="ValuatorMode" /> 172 <field type="CARD32" name="motion_size" /> 173 <list type="AxisInfo" name="axes"> 174 <fieldref>axes_len</fieldref> 175 </list> 176 </case> 177 </switch> 178 </struct> 179 180 <struct name="DeviceName"> 181 <field type="CARD8" name="len" /> 182 <list type="char" name="string"> 183 <fieldref>len</fieldref> 184 </list> 185 </struct> 186 187 <request name="ListInputDevices" opcode="2"> 188 <reply> 189 <field type="CARD8" name="xi_reply_type" /> 190 <field type="CARD8" name="devices_len" /> 191 <pad bytes="23" /> 192 <list type="DeviceInfo" name="devices"> 193 <fieldref>devices_len</fieldref> 194 </list> 195 <list type="InputInfo" name="infos"> 196 <sumof ref="devices"> 197 <fieldref>num_class_info</fieldref> 198 </sumof> 199 </list> 200 <list type="STR" name="names"> 201 <fieldref>devices_len</fieldref> 202 </list> 203 <pad align="4" /> 204 </reply> 205 </request> 206 207 <!-- OpenDevice --> 208 <typedef oldname="CARD8" newname="EventTypeBase" /> 209 210 <struct name="InputClassInfo"> 211 <field type="CARD8" name="class_id" enum="InputClass" /> 212 <field type="EventTypeBase" name="event_type_base" /> 213 </struct> 214 215 <request name="OpenDevice" opcode="3"> 216 <field type="CARD8" name="device_id" /> 217 <pad bytes="3" /> 218 <reply> 219 <field type="CARD8" name="xi_reply_type" /> 220 <field type="CARD8" name="num_classes" /> 221 <pad bytes="23" /> 222 <list type="InputClassInfo" name="class_info"> 223 <fieldref>num_classes</fieldref> 224 </list> 225 <pad align="4" /> 226 </reply> 227 </request> 228 229 <!-- CloseDevice --> 230 231 <request name="CloseDevice" opcode="4"> 232 <field type="CARD8" name="device_id" /> 233 <pad bytes="3" /> 234 </request> 235 236 <!-- SetDeviceMode --> 237 238 <request name="SetDeviceMode" opcode="5"> 239 <field type="CARD8" name="device_id" /> 240 <field type="CARD8" name="mode" enum="ValuatorMode" /> 241 <pad bytes="2" /> 242 <reply> 243 <field type="CARD8" name="xi_reply_type" /> 244 <!-- values for status: 0: Success, 1: AlreadyGrabbed --> 245 <field type="CARD8" name="status" enum="GrabStatus" /> 246 <pad bytes="23" /> 247 </reply> 248 </request> 249 250 <!-- SelectExtensionEvent --> 251 252 <request name="SelectExtensionEvent" opcode="6"> 253 <field type="WINDOW" name="window" /> 254 <field type="CARD16" name="num_classes" /> 255 <pad bytes="2" /> 256 <list type="EventClass" name="classes"> 257 <fieldref>num_classes</fieldref> 258 </list> 259 </request> 260 261 <!-- GetSelectedExtensionEvents --> 262 263 <request name="GetSelectedExtensionEvents" opcode="7"> 264 <field type="WINDOW" name="window" /> 265 <reply> 266 <field type="CARD8" name="xi_reply_type" /> 267 <field type="CARD16" name="num_this_classes" /> 268 <field type="CARD16" name="num_all_classes" /> 269 <pad bytes="20" /> 270 <list type="EventClass" name="this_classes"> 271 <fieldref>num_this_classes</fieldref> 272 </list> 273 <list type="EventClass" name="all_classes"> 274 <fieldref>num_all_classes</fieldref> 275 </list> 276 </reply> 277 </request> 278 279 <!-- ChangeDeviceDontPropagateList --> 280 281 <enum name="PropagateMode"> 282 <item name="AddToList"> <value>0</value> </item> 283 <item name="DeleteFromList"> <value>1</value> </item> 284 </enum> 285 286 <request name="ChangeDeviceDontPropagateList" opcode="8"> 287 <field type="WINDOW" name="window" /> 288 <field type="CARD16" name="num_classes" /> 289 <field type="CARD8" name="mode" enum="PropagateMode" /> 290 <pad bytes="1" /> 291 <list type="EventClass" name="classes"> 292 <fieldref>num_classes</fieldref> 293 </list> 294 </request> 295 296 <!-- GetDeviceDontPropagateList --> 297 298 <request name="GetDeviceDontPropagateList" opcode="9"> 299 <field type="WINDOW" name="window" /> 300 <reply> 301 <field type="CARD8" name="xi_reply_type" /> 302 <field type="CARD16" name="num_classes" /> 303 <pad bytes="22" /> 304 <list type="EventClass" name="classes"> 305 <fieldref>num_classes</fieldref> 306 </list> 307 </reply> 308 </request> 309 310 <!-- GetDeviceMotionEvents --> 311 312 <struct name="DeviceTimeCoord"> 313 <field type="TIMESTAMP" name="time" /> 314 <list type="INT32" name="axisvalues"> 315 <paramref type="CARD8">num_axes</paramref> 316 </list> 317 </struct> 318 319 <request name="GetDeviceMotionEvents" opcode="10"> 320 <field type="TIMESTAMP" name="start" /> 321 <field type="TIMESTAMP" name="stop" altenum="Time" /> 322 <field type="CARD8" name="device_id" /> 323 <pad bytes="3"/> 324 <reply> 325 <field type="CARD8" name="xi_reply_type" /> 326 <field type="CARD32" name="num_events" /> 327 <field type="CARD8" name="num_axes" /> 328 <field type="CARD8" name="device_mode" enum="ValuatorMode" /> 329 <pad bytes="18" /> 330 <list type="DeviceTimeCoord" name="events"> 331 <fieldref>num_events</fieldref> 332 </list> 333 </reply> 334 </request> 335 336 <!-- ChangeKeyboardDevice --> 337 338 <request name="ChangeKeyboardDevice" opcode="11"> 339 <field type="CARD8" name="device_id" /> 340 <pad bytes="3" /> 341 <reply> 342 <field type="CARD8" name="xi_reply_type" /> 343 <!-- only the following GrabStatus-values are valid here: 344 "Success", "AlreadyGrabbed", and "Frozen" 345 --> 346 <field type="CARD8" name="status" enum="GrabStatus" /> 347 <pad bytes="23" /> 348 </reply> 349 </request> 350 351 <!-- ChangePointerDevice --> 352 353 <request name="ChangePointerDevice" opcode="12"> 354 <field type="CARD8" name="x_axis" /> 355 <field type="CARD8" name="y_axis" /> 356 <field type="CARD8" name="device_id" /> 357 <pad bytes="1" /> 358 <reply> 359 <field type="CARD8" name="xi_reply_type" /> 360 <!-- only the following GrabStatus-values are valid here: 361 "Success", "AlreadyGrabbed", and "Frozen" 362 --> 363 <field type="CARD8" name="status" enum="GrabStatus" /> 364 <pad bytes="23" /> 365 </reply> 366 </request> 367 368 <!-- GrabDevice --> 369 370 <request name="GrabDevice" opcode="13"> 371 <field type="WINDOW" name="grab_window" /> 372 <field type="TIMESTAMP" name="time" altenum="Time" /> 373 <field type="CARD16" name="num_classes" /> 374 <field type="CARD8" name="this_device_mode" enum="GrabMode" /> 375 <field type="CARD8" name="other_device_mode" enum="GrabMode" /> 376 <field type="BOOL" name="owner_events" /> 377 <field type="CARD8" name="device_id" /> 378 <pad bytes="2" /> 379 <list type="EventClass" name="classes"> 380 <fieldref>num_classes</fieldref> 381 </list> 382 <reply> 383 <field type="CARD8" name="xi_reply_type" /> 384 <field type="CARD8" name="status" enum="GrabStatus" /> 385 <pad bytes="23" /> 386 </reply> 387 </request> 388 389 <!-- UngrabDevice --> 390 391 <request name="UngrabDevice" opcode="14"> 392 <field type="TIMESTAMP" name="time" altenum="Time" /> 393 <field type="CARD8" name="device_id" /> 394 <pad bytes="3" /> 395 </request> 396 397 <!-- GrabDeviceKey --> 398 399 <enum name="ModifierDevice"> 400 <item name="UseXKeyboard"><value>255</value></item> <!-- 0xff --> 401 </enum> 402 403 <request name="GrabDeviceKey" opcode="15"> 404 <field type="WINDOW" name="grab_window" /> 405 <field type="CARD16" name="num_classes" /> 406 <field type="CARD16" name="modifiers" mask="ModMask" /> 407 <field type="CARD8" name="modifier_device" altenum="ModifierDevice" /> 408 <field type="CARD8" name="grabbed_device" /> 409 <field type="CARD8" name="key" altenum="Grab" /> 410 <field type="CARD8" name="this_device_mode" enum="GrabMode" /> 411 <field type="CARD8" name="other_device_mode" enum="GrabMode" /> 412 <field type="BOOL" name="owner_events" /> 413 <pad bytes="2" /> 414 <list type="EventClass" name="classes"> 415 <fieldref>num_classes</fieldref> 416 </list> 417 </request> 418 419 <!-- UngrabDeviceKey --> 420 421 <request name="UngrabDeviceKey" opcode="16"> 422 <field type="WINDOW" name="grabWindow" /> 423 <field type="CARD16" name="modifiers" mask="ModMask" /> 424 <field type="CARD8" name="modifier_device" altenum="ModifierDevice" /> 425 <field type="CARD8" name="key" altenum="Grab" /> 426 <field type="CARD8" name="grabbed_device" /> 427 </request> 428 429 <!-- GrabDeviceButton --> 430 431 <request name="GrabDeviceButton" opcode="17"> 432 <field type="WINDOW" name="grab_window" /> 433 <field type="CARD8" name="grabbed_device" /> 434 <field type="CARD8" name="modifier_device" altenum="ModifierDevice" /> 435 <field type="CARD16" name="num_classes" /> 436 <field type="CARD16" name="modifiers" mask="ModMask" /> 437 <field type="CARD8" name="this_device_mode" enum="GrabMode" /> 438 <field type="CARD8" name="other_device_mode" enum="GrabMode" /> 439 <field type="CARD8" name="button" altenum="Grab" /> 440 <field type="BOOL" name="owner_events" /> 441 <pad bytes="2" /> 442 <list type="EventClass" name="classes"> 443 <fieldref>num_classes</fieldref> 444 </list> 445 </request> 446 447 <!-- UngrabDeviceButton --> 448 449 <request name="UngrabDeviceButton" opcode="18"> 450 <field type="WINDOW" name="grab_window" /> 451 <field type="CARD16" name="modifiers" mask="ModMask" /> 452 <field type="CARD8" name="modifier_device" altenum="ModifierDevice" /> 453 <field type="CARD8" name="button" altenum="Grab" /> 454 <field type="CARD8" name="grabbed_device" /> 455 <pad bytes="3" /> 456 </request> 457 458 <!-- AllowDeviceEvents --> 459 460 <enum name="DeviceInputMode"> 461 <item name="AsyncThisDevice"> <value>0</value> </item> 462 <item name="SyncThisDevice"> <value>1</value> </item> 463 <item name="ReplayThisDevice"> <value>2</value> </item> 464 <item name="AsyncOtherDevices"> <value>3</value> </item> 465 <item name="AsyncAll"> <value>4</value> </item> 466 <item name="SyncAll"> <value>5</value> </item> 467 </enum> 468 469 <request name="AllowDeviceEvents" opcode="19"> 470 <field type="TIMESTAMP" name="time" altenum="Time" /> 471 <field type="CARD8" name="mode" enum="DeviceInputMode" /> 472 <field type="CARD8" name="device_id" /> 473 <pad bytes="2" /> 474 </request> 475 476 <!-- GetDeviceFocus --> 477 478 <request name="GetDeviceFocus" opcode="20"> 479 <field type="CARD8" name="device_id" /> 480 <pad bytes="3" /> 481 <reply> 482 <field type="CARD8" name="xi_reply_type" /> 483 <field type="WINDOW" name="focus" altenum="InputFocus" /> 484 <field type="TIMESTAMP" name="time" /> 485 <field type="CARD8" name="revert_to" enum="InputFocus" /> 486 <pad bytes="15" /> 487 </reply> 488 </request> 489 490 <!-- SetDeviceFocus --> 491 492 <request name="SetDeviceFocus" opcode="21"> 493 <field type="WINDOW" name="focus" altenum="InputFocus" /> 494 <field type="TIMESTAMP" name="time" altenum="Time" /> 495 <field type="CARD8" name="revert_to" enum="InputFocus" /> 496 <field type="CARD8" name="device_id" /> 497 <pad bytes="2" /> 498 </request> 499 500 <!-- GetFeedbackControl --> 501 502 <enum name="FeedbackClass"> 503 <item name="Keyboard"> <value>0</value> </item> 504 <item name="Pointer"> <value>1</value> </item> 505 <item name="String"> <value>2</value> </item> 506 <item name="Integer"> <value>3</value> </item> 507 <item name="Led"> <value>4</value> </item> 508 <item name="Bell"> <value>5</value> </item> 509 </enum> 510 511 <struct name="KbdFeedbackState"> 512 <field type="CARD8" name="class_id" enum="FeedbackClass" /> 513 <field type="CARD8" name="feedback_id" /> 514 <field type="CARD16" name="len" /> 515 <field type="CARD16" name="pitch" /> 516 <field type="CARD16" name="duration" /> 517 <field type="CARD32" name="led_mask" /> 518 <field type="CARD32" name="led_values" /> 519 <field type="BOOL" name="global_auto_repeat" /> 520 <field type="CARD8" name="click" /> 521 <field type="CARD8" name="percent" /> 522 <pad bytes="1" /> 523 <list type="CARD8" name="auto_repeats"> 524 <value>32</value> 525 </list> 526 </struct> 527 528 <struct name="PtrFeedbackState"> 529 <field type="CARD8" name="class_id" enum="FeedbackClass" /> 530 <field type="CARD8" name="feedback_id" /> 531 <field type="CARD16" name="len" /> 532 <pad bytes="2" /> 533 <field type="CARD16" name="accel_num" /> 534 <field type="CARD16" name="accel_denom" /> 535 <field type="CARD16" name="threshold" /> 536 </struct> 537 538 <struct name="IntegerFeedbackState"> 539 <field type="CARD8" name="class_id" enum="FeedbackClass" /> 540 <field type="CARD8" name="feedback_id" /> 541 <field type="CARD16" name="len" /> 542 <field type="CARD32" name="resolution" /> 543 <field type="INT32" name="min_value" /> 544 <field type="INT32" name="max_value" /> 545 </struct> 546 547 <struct name="StringFeedbackState"> 548 <field type="CARD8" name="class_id" enum="FeedbackClass" /> 549 <field type="CARD8" name="feedback_id" /> 550 <field type="CARD16" name="len" /> 551 <field type="CARD16" name="max_symbols" /> 552 <field type="CARD16" name="num_keysyms" /> 553 <list type="KEYSYM" name="keysyms"> 554 <fieldref>num_keysyms</fieldref> 555 </list> 556 </struct> 557 558 <struct name="BellFeedbackState"> 559 <field type="CARD8" name="class_id" enum="FeedbackClass" /> 560 <field type="CARD8" name="feedback_id" /> 561 <field type="CARD16" name="len" /> 562 <field type="CARD8" name="percent" /> 563 <pad bytes="3" /> 564 <field type="CARD16" name="pitch" /> 565 <field type="CARD16" name="duration" /> 566 </struct> 567 568 <struct name="LedFeedbackState"> 569 <field type="CARD8" name="class_id" enum="FeedbackClass" /> 570 <field type="CARD8" name="feedback_id" /> 571 <field type="CARD16" name="len" /> 572 <field type="CARD32" name="led_mask" /> 573 <field type="CARD32" name="led_values" /> 574 </struct> 575 576 <struct name="FeedbackState"> 577 <field type="CARD8" name="class_id" enum="FeedbackClass" /> 578 <field type="CARD8" name="feedback_id" /> 579 <field type="CARD16" name="len" /> 580 <switch name="data"> 581 <fieldref>class_id</fieldref> 582 <case name="keyboard"> 583 <enumref ref="FeedbackClass">Keyboard</enumref> 584 <field type="CARD16" name="pitch" /> 585 <field type="CARD16" name="duration" /> 586 <field type="CARD32" name="led_mask" /> 587 <field type="CARD32" name="led_values" /> 588 <field type="BOOL" name="global_auto_repeat" /> 589 <field type="CARD8" name="click" /> 590 <field type="CARD8" name="percent" /> 591 <pad bytes="1" /> 592 <list type="CARD8" name="auto_repeats"> 593 <value>32</value> 594 </list> 595 </case> 596 <case name="pointer"> 597 <enumref ref="FeedbackClass">Pointer</enumref> 598 <pad bytes="2" /> 599 <field type="CARD16" name="accel_num" /> 600 <field type="CARD16" name="accel_denom" /> 601 <field type="CARD16" name="threshold" /> 602 </case> 603 <case name="string"> 604 <enumref ref="FeedbackClass">String</enumref> 605 <field type="CARD16" name="max_symbols" /> 606 <field type="CARD16" name="num_keysyms" /> 607 <list type="KEYSYM" name="keysyms"> 608 <fieldref>num_keysyms</fieldref> 609 </list> 610 </case> 611 <case name="integer"> 612 <enumref ref="FeedbackClass">Integer</enumref> 613 <field type="CARD32" name="resolution" /> 614 <field type="INT32" name="min_value" /> 615 <field type="INT32" name="max_value" /> 616 </case> 617 <case name="led"> 618 <enumref ref="FeedbackClass">Led</enumref> 619 <field type="CARD32" name="led_mask" /> 620 <field type="CARD32" name="led_values" /> 621 </case> 622 <case name="bell"> 623 <enumref ref="FeedbackClass">Bell</enumref> 624 <field type="CARD8" name="percent" /> 625 <pad bytes="3" /> 626 <field type="CARD16" name="pitch" /> 627 <field type="CARD16" name="duration" /> 628 </case> 629 </switch> 630 </struct> 631 632 <request name="GetFeedbackControl" opcode="22"> 633 <field type="CARD8" name="device_id" /> 634 <pad bytes="3" /> 635 <reply> 636 <field type="CARD8" name="xi_reply_type" /> 637 <field type="CARD16" name="num_feedbacks" /> 638 <pad bytes="22" /> 639 <list type="FeedbackState" name="feedbacks"> 640 <fieldref>num_feedbacks</fieldref> 641 </list> 642 </reply> 643 </request> 644 645 <!-- ChangeFeedbackControl --> 646 647 <struct name="KbdFeedbackCtl"> 648 <field type="CARD8" name="class_id" enum="FeedbackClass" /> 649 <field type="CARD8" name="feedback_id" /> 650 <field type="CARD16" name="len" /> 651 <field type="KeyCode" name="key" /> 652 <field type="CARD8" name="auto_repeat_mode" /> 653 <field type="INT8" name="key_click_percent" /> 654 <field type="INT8" name="bell_percent" /> 655 <field type="INT16" name="bell_pitch" /> 656 <field type="INT16" name="bell_duration" /> 657 <field type="CARD32" name="led_mask" /> 658 <field type="CARD32" name="led_values" /> 659 </struct> 660 661 <struct name="PtrFeedbackCtl"> 662 <field type="CARD8" name="class_id" enum="FeedbackClass" /> 663 <field type="CARD8" name="feedback_id" /> 664 <field type="CARD16" name="len" /> 665 <pad bytes="2" /> 666 <field type="INT16" name="num" /> 667 <field type="INT16" name="denom" /> 668 <field type="INT16" name="threshold" /> 669 </struct> 670 671 <struct name="IntegerFeedbackCtl"> 672 <field type="CARD8" name="class_id" enum="FeedbackClass" /> 673 <field type="CARD8" name="feedback_id" /> 674 <field type="CARD16" name="len" /> 675 <field type="INT32" name="int_to_display" /> 676 </struct> 677 678 <struct name="StringFeedbackCtl"> 679 <field type="CARD8" name="class_id" enum="FeedbackClass" /> 680 <field type="CARD8" name="feedback_id" /> 681 <field type="CARD16" name="len" /> 682 <pad bytes="2" /> 683 <field type="CARD16" name="num_keysyms" /> 684 <list type="KEYSYM" name="keysyms"> 685 <fieldref>num_keysyms</fieldref> 686 </list> 687 </struct> 688 689 <struct name="BellFeedbackCtl"> 690 <field type="CARD8" name="class_id" enum="FeedbackClass" /> 691 <field type="CARD8" name="feedback_id" /> 692 <field type="CARD16" name="len" /> 693 <field type="INT8" name="percent" /> 694 <pad bytes="3" /> 695 <field type="INT16" name="pitch" /> 696 <field type="INT16" name="duration" /> 697 </struct> 698 699 <struct name="LedFeedbackCtl"> 700 <field type="CARD8" name="class_id" enum="FeedbackClass" /> 701 <field type="CARD8" name="feedback_id" /> 702 <field type="CARD16" name="len" /> 703 <field type="CARD32" name="led_mask" /> 704 <field type="CARD32" name="led_values" /> 705 </struct> 706 707 <struct name="FeedbackCtl"> 708 <field type="CARD8" name="class_id" enum="FeedbackClass" /> 709 <field type="CARD8" name="feedback_id" /> 710 <field type="CARD16" name="len" /> 711 <switch name="data"> 712 <fieldref>class_id</fieldref> 713 <case name="keyboard"> 714 <enumref ref="FeedbackClass">Keyboard</enumref> 715 <field type="KeyCode" name="key" /> 716 <field type="CARD8" name="auto_repeat_mode" /> 717 <field type="INT8" name="key_click_percent" /> 718 <field type="INT8" name="bell_percent" /> 719 <field type="INT16" name="bell_pitch" /> 720 <field type="INT16" name="bell_duration" /> 721 <field type="CARD32" name="led_mask" /> 722 <field type="CARD32" name="led_values" /> 723 </case> 724 <case name="pointer"> 725 <enumref ref="FeedbackClass">Pointer</enumref> 726 <pad bytes="2" /> 727 <field type="INT16" name="num" /> 728 <field type="INT16" name="denom" /> 729 <field type="INT16" name="threshold" /> 730 </case> 731 <case name="string"> 732 <enumref ref="FeedbackClass">String</enumref> 733 <pad bytes="2" /> 734 <field type="CARD16" name="num_keysyms" /> 735 <list type="KEYSYM" name="keysyms"> 736 <fieldref>num_keysyms</fieldref> 737 </list> 738 </case> 739 <case name="integer"> 740 <enumref ref="FeedbackClass">Integer</enumref> 741 <field type="INT32" name="int_to_display" /> 742 </case> 743 <case name="led"> 744 <enumref ref="FeedbackClass">Led</enumref> 745 <field type="CARD32" name="led_mask" /> 746 <field type="CARD32" name="led_values" /> 747 </case> 748 <case name="bell"> 749 <enumref ref="FeedbackClass">Bell</enumref> 750 <field type="INT8" name="percent" /> 751 <pad bytes="3" /> 752 <field type="INT16" name="pitch" /> 753 <field type="INT16" name="duration" /> 754 </case> 755 </switch> 756 </struct> 757 758 <enum name="ChangeFeedbackControlMask"> 759 <item name="KeyClickPercent"> <bit>0</bit> </item> <!-- 0x01 --> 760 <item name="Percent"> <bit>1</bit> </item> <!-- 0x02 --> 761 <item name="Pitch"> <bit>2</bit> </item> <!-- 0x04 --> 762 <item name="Duration"> <bit>3</bit> </item> <!-- 0x08 --> 763 <item name="Led"> <bit>4</bit> </item> <!-- 0x10 --> 764 <item name="LedMode"> <bit>5</bit> </item> <!-- 0x20 --> 765 <item name="Key"> <bit>6</bit> </item> <!-- 0x40 --> 766 <item name="AutoRepeatMode"> <bit>7</bit> </item> <!-- 0x80 --> 767 <item name="String"> <bit>0</bit> </item> <!-- 0x01 --> 768 <item name="Integer"> <bit>0</bit> </item> <!-- 0x01 --> 769 <item name="AccelNum"> <bit>0</bit> </item> <!-- 0x01 --> 770 <item name="AccelDenom"> <bit>1</bit> </item> <!-- 0x02 --> 771 <item name="Threshold"> <bit>2</bit> </item> <!-- 0x04 --> 772 </enum> 773 774 <request name="ChangeFeedbackControl" opcode="23"> 775 <field type="CARD32" name="mask" mask="ChangeFeedbackControlMask" /> 776 <field type="CARD8" name="device_id" /> 777 <field type="CARD8" name="feedback_id" /> 778 <pad bytes="2" /> 779 <field type="FeedbackCtl" name="feedback" /> 780 </request> 781 782 <!-- GetDeviceKeyMapping --> 783 784 <request name="GetDeviceKeyMapping" opcode="24"> 785 <field type="CARD8" name="device_id" /> 786 <field type="KeyCode" name="first_keycode" /> 787 <field type="CARD8" name="count" /> 788 <pad bytes="1" /> 789 <reply> 790 <field type="CARD8" name="xi_reply_type" /> 791 <field type="CARD8" name="keysyms_per_keycode" /> 792 <pad bytes="23" /> 793 <list type="KEYSYM" name="keysyms"> 794 <!-- 'length' is a field in the header --> 795 <fieldref>length</fieldref> 796 </list> 797 </reply> 798 </request> 799 800 <!-- ChangeDeviceKeyMapping --> 801 802 <request name="ChangeDeviceKeyMapping" opcode="25"> 803 <field type="CARD8" name="device_id" /> 804 <field type="KeyCode" name="first_keycode" /> 805 <field type="CARD8" name="keysyms_per_keycode" /> 806 <field type="CARD8" name="keycode_count" /> 807 <list type="KEYSYM" name="keysyms"> 808 <op op="*"> 809 <fieldref>keycode_count</fieldref> 810 <fieldref>keysyms_per_keycode</fieldref> 811 </op> 812 </list> 813 </request> 814 815 <!-- GetDeviceModifierMapping --> 816 817 <request name="GetDeviceModifierMapping" opcode="26"> 818 <field type="CARD8" name="device_id" /> 819 <pad bytes="3" /> 820 <reply> 821 <field type="CARD8" name="xi_reply_type" /> 822 <field type="CARD8" name="keycodes_per_modifier" /> 823 <pad bytes="23" /> 824 <list type="CARD8" name="keymaps"> 825 <op op="*"> 826 <fieldref>keycodes_per_modifier</fieldref> 827 <value>8</value> 828 </op> 829 </list> 830 </reply> 831 </request> 832 833 <!-- SetDeviceModifierMapping --> 834 835 <request name="SetDeviceModifierMapping" opcode="27"> 836 <field type="CARD8" name="device_id" /> 837 <field type="CARD8" name="keycodes_per_modifier" /> 838 <pad bytes="2" /> 839 <list type="CARD8" name="keymaps"> 840 <op op="*"> 841 <fieldref>keycodes_per_modifier</fieldref> 842 <value>8</value> 843 </op> 844 </list> 845 <reply> 846 <field type="CARD8" name="xi_reply_type" /> 847 <field type="CARD8" name="status" enum="MappingStatus" /> 848 <pad bytes="23" /> 849 </reply> 850 </request> 851 852 <!-- GetDeviceButtonMapping --> 853 854 <request name="GetDeviceButtonMapping" opcode="28"> 855 <field type="CARD8" name="device_id" /> 856 <pad bytes="3" /> 857 <reply> 858 <field type="CARD8" name="xi_reply_type" /> 859 <field type="CARD8" name="map_size" /> 860 <pad bytes="23" /> 861 <list type="CARD8" name="map"> 862 <fieldref>map_size</fieldref> 863 </list> 864 <pad align="4" /> 865 </reply> 866 </request> 867 868 <!-- SetDeviceButtonMapping --> 869 870 <request name="SetDeviceButtonMapping" opcode="29"> 871 <field type="CARD8" name="device_id" /> 872 <field type="CARD8" name="map_size" /> 873 <pad bytes="2" /> 874 <list type="CARD8" name="map"> 875 <fieldref>map_size</fieldref> 876 </list> 877 <reply> 878 <field type="CARD8" name="xi_reply_type" /> 879 <field type="CARD8" name="status" enum="MappingStatus" /> 880 <pad bytes="23" /> 881 </reply> 882 </request> 883 884 <!-- QueryDeviceState --> 885 886 <struct name="KeyState"> 887 <field type="CARD8" name="class_id" enum="InputClass" /> 888 <field type="CARD8" name="len" /> 889 <field type="CARD8" name="num_keys" /> 890 <pad bytes="1" /> 891 <list type="CARD8" name="keys"> 892 <value>32</value> 893 </list> 894 </struct> 895 896 <struct name="ButtonState"> 897 <field type="CARD8" name="class_id" enum="InputClass" /> 898 <field type="CARD8" name="len" /> 899 <field type="CARD8" name="num_buttons" /> 900 <pad bytes="1" /> 901 <list type="CARD8" name="buttons"> 902 <value>32</value> 903 </list> 904 </struct> 905 906 <enum name="ValuatorStateModeMask"> 907 <item name="DeviceModeAbsolute"> <bit>0</bit> </item> 908 <item name="OutOfProximity"> <bit>1</bit> </item> 909 </enum> 910 911 <struct name="ValuatorState"> 912 <field type="CARD8" name="class_id" enum="InputClass" /> 913 <field type="CARD8" name="len" /> 914 <field type="CARD8" name="num_valuators" /> 915 <field type="CARD8" name="mode" mask="ValuatorStateModeMask" /> 916 <list type="INT32" name="valuators"> 917 <fieldref>num_valuators</fieldref> 918 </list> 919 </struct> 920 921 <struct name="InputState"> 922 <field type="CARD8" name="class_id" enum="InputClass" /> 923 <field type="CARD8" name="len" /> 924 <switch name="data"> 925 <fieldref>class_id</fieldref> 926 <required_start_align align="4" offset="2" /> 927 <case name="key"> 928 <enumref ref="InputClass">Key</enumref> 929 <required_start_align align="4" offset="2" /> 930 <field type="CARD8" name="num_keys" /> 931 <pad bytes="1" /> 932 <list type="CARD8" name="keys"> 933 <value>32</value> 934 </list> 935 </case> 936 <case name="button"> 937 <enumref ref="InputClass">Button</enumref> 938 <field type="CARD8" name="num_buttons" /> 939 <pad bytes="1" /> 940 <list type="CARD8" name="buttons"> 941 <value>32</value> 942 </list> 943 </case> 944 <case name="valuator"> 945 <enumref ref="InputClass">Valuator</enumref> 946 <required_start_align align="4" offset="2" /> 947 <field type="CARD8" name="num_valuators" /> 948 <field type="CARD8" name="mode" mask="ValuatorStateModeMask" /> 949 <list type="INT32" name="valuators"> 950 <fieldref>num_valuators</fieldref> 951 </list> 952 </case> 953 </switch> 954 </struct> 955 956 <request name="QueryDeviceState" opcode="30"> 957 <field type="CARD8" name="device_id" /> 958 <pad bytes="3" /> 959 <reply> 960 <field type="CARD8" name="xi_reply_type" /> 961 <field type="CARD8" name="num_classes" /> 962 <pad bytes="23" /> 963 <list type="InputState" name="classes"> 964 <fieldref>num_classes</fieldref> 965 </list> 966 </reply> 967 </request> 968 969 <!-- SendExtensionEvent (opcode 16) has to be defined after the events 970 because we do not support backward references --> 971 972 <!-- DeviceBell --> 973 974 <request name="DeviceBell" opcode="32"> 975 <field type="CARD8" name="device_id" /> 976 <field type="CARD8" name="feedback_id" /> 977 <field type="CARD8" name="feedback_class" /> 978 <field type="INT8" name="percent" /> 979 </request> 980 981 <!-- SetDeviceValuators --> 982 983 <request name="SetDeviceValuators" opcode="33"> 984 <field type="CARD8" name="device_id" /> 985 <field type="CARD8" name="first_valuator" /> 986 <field type="CARD8" name="num_valuators" /> 987 <pad bytes="1" /> 988 <list type="INT32" name="valuators"> 989 <fieldref>num_valuators</fieldref> 990 </list> 991 <reply> 992 <field type="CARD8" name="xi_reply_type" /> 993 <field type="CARD8" name="status" enum="GrabStatus" /> 994 <pad bytes="23" /> 995 </reply> 996 </request> 997 998 <!-- GetDeviceControl --> 999 1000 <enum name="DeviceControl"> 1001 <item name="resolution"> <value>1</value> </item> 1002 <item name="abs_calib"> <value>2</value> </item> 1003 <item name="core"> <value>3</value> </item> 1004 <item name="enable"> <value>4</value> </item> 1005 <item name="abs_area"> <value>5</value> </item> 1006 </enum> 1007 1008 <struct name="DeviceResolutionState"> 1009 <field type="CARD16" name="control_id" enum="DeviceControl" /> 1010 <field type="CARD16" name="len" /> 1011 <field type="CARD32" name="num_valuators" /> 1012 <list type="CARD32" name="resolution_values"> 1013 <fieldref>num_valuators</fieldref> 1014 </list> 1015 <list type="CARD32" name="resolution_min"> 1016 <fieldref>num_valuators</fieldref> 1017 </list> 1018 <list type="CARD32" name="resolution_max"> 1019 <fieldref>num_valuators</fieldref> 1020 </list> 1021 </struct> 1022 1023 <struct name="DeviceAbsCalibState"> 1024 <field type="CARD16" name="control_id" enum="DeviceControl" /> 1025 <field type="CARD16" name="len" /> 1026 <field type="INT32" name="min_x" /> 1027 <field type="INT32" name="max_x" /> 1028 <field type="INT32" name="min_y" /> 1029 <field type="INT32" name="max_y" /> 1030 <field type="CARD32" name="flip_x" /> 1031 <field type="CARD32" name="flip_y" /> 1032 <field type="CARD32" name="rotation" /> 1033 <field type="CARD32" name="button_threshold" /> 1034 </struct> 1035 1036 <struct name="DeviceAbsAreaState"> 1037 <field type="CARD16" name="control_id" enum="DeviceControl" /> 1038 <field type="CARD16" name="len" /> 1039 <field type="CARD32" name="offset_x" /> 1040 <field type="CARD32" name="offset_y" /> 1041 <field type="CARD32" name="width" /> 1042 <field type="CARD32" name="height" /> 1043 <field type="CARD32" name="screen" /> 1044 <field type="CARD32" name="following" /> 1045 </struct> 1046 1047 <struct name="DeviceCoreState"> 1048 <field type="CARD16" name="control_id" enum="DeviceControl" /> 1049 <field type="CARD16" name="len" /> 1050 <field type="CARD8" name="status" /> 1051 <field type="CARD8" name="iscore" /> 1052 <pad bytes="2" /> 1053 </struct> 1054 1055 <struct name="DeviceEnableState"> 1056 <field type="CARD16" name="control_id" enum="DeviceControl" /> 1057 <field type="CARD16" name="len" /> 1058 <field type="CARD8" name="enable" /> 1059 <pad bytes="3" /> 1060 </struct> 1061 1062 <struct name="DeviceState"> 1063 <field type="CARD16" name="control_id" enum="DeviceControl" /> 1064 <field type="CARD16" name="len" /> 1065 <switch name="data"> 1066 <fieldref>control_id</fieldref> 1067 <case name="resolution"> 1068 <enumref ref="DeviceControl">resolution</enumref> 1069 <field type="CARD32" name="num_valuators" /> 1070 <list type="CARD32" name="resolution_values"> 1071 <fieldref>num_valuators</fieldref> 1072 </list> 1073 <list type="CARD32" name="resolution_min"> 1074 <fieldref>num_valuators</fieldref> 1075 </list> 1076 <list type="CARD32" name="resolution_max"> 1077 <fieldref>num_valuators</fieldref> 1078 </list> 1079 </case> 1080 <case name="abs_calib"> 1081 <enumref ref="DeviceControl">abs_calib</enumref> 1082 <field type="INT32" name="min_x" /> 1083 <field type="INT32" name="max_x" /> 1084 <field type="INT32" name="min_y" /> 1085 <field type="INT32" name="max_y" /> 1086 <field type="CARD32" name="flip_x" /> 1087 <field type="CARD32" name="flip_y" /> 1088 <field type="CARD32" name="rotation" /> 1089 <field type="CARD32" name="button_threshold" /> 1090 </case> 1091 <case name="core"> 1092 <enumref ref="DeviceControl">core</enumref> 1093 <field type="CARD8" name="status" /> 1094 <field type="CARD8" name="iscore" /> 1095 <pad bytes="2" /> 1096 </case> 1097 <case name="enable"> 1098 <enumref ref="DeviceControl">enable</enumref> 1099 <field type="CARD8" name="enable" /> 1100 <pad bytes="3" /> 1101 </case> 1102 <case name="abs_area"> 1103 <enumref ref="DeviceControl">abs_area</enumref> 1104 <field type="CARD32" name="offset_x" /> 1105 <field type="CARD32" name="offset_y" /> 1106 <field type="CARD32" name="width" /> 1107 <field type="CARD32" name="height" /> 1108 <field type="CARD32" name="screen" /> 1109 <field type="CARD32" name="following" /> 1110 </case> 1111 </switch> 1112 </struct> 1113 1114 <request name="GetDeviceControl" opcode="34"> 1115 <field type="CARD16" name="control_id" enum="DeviceControl" /> 1116 <field type="CARD8" name="device_id" /> 1117 <pad bytes="1" /> 1118 <reply> 1119 <field type="CARD8" name="xi_reply_type" /> 1120 <field type="CARD8" name="status" altenum="GrabStatus" /> 1121 <pad bytes="23" /> 1122 <field type="DeviceState" name="control" /> 1123 </reply> 1124 </request> 1125 1126 <!-- ChangeDeviceControl --> 1127 1128 <struct name="DeviceResolutionCtl"> 1129 <field type="CARD16" name="control_id" enum="DeviceControl" /> 1130 <field type="CARD16" name="len" /> 1131 <field type="CARD8" name="first_valuator" /> 1132 <field type="CARD8" name="num_valuators" /> 1133 <pad bytes="2" /> 1134 <list type="CARD32" name="resolution_values"> 1135 <fieldref>num_valuators</fieldref> 1136 </list> 1137 </struct> 1138 1139 <struct name="DeviceAbsCalibCtl"> 1140 <field type="CARD16" name="control_id" enum="DeviceControl" /> 1141 <field type="CARD16" name="len" /> 1142 <field type="INT32" name="min_x" /> 1143 <field type="INT32" name="max_x" /> 1144 <field type="INT32" name="min_y" /> 1145 <field type="INT32" name="max_y" /> 1146 <field type="CARD32" name="flip_x" /> 1147 <field type="CARD32" name="flip_y" /> 1148 <field type="CARD32" name="rotation" /> 1149 <field type="CARD32" name="button_threshold" /> 1150 </struct> 1151 1152 <struct name="DeviceAbsAreaCtrl"> 1153 <field type="CARD16" name="control_id" enum="DeviceControl" /> 1154 <field type="CARD16" name="len" /> 1155 <field type="CARD32" name="offset_x" /> 1156 <field type="CARD32" name="offset_y" /> 1157 <field type="INT32" name="width" /> 1158 <field type="INT32" name="height" /> 1159 <field type="INT32" name="screen" /> 1160 <field type="CARD32" name="following" /> 1161 </struct> 1162 1163 <struct name="DeviceCoreCtrl"> 1164 <field type="CARD16" name="control_id" enum="DeviceControl" /> 1165 <field type="CARD16" name="len" /> 1166 <field type="CARD8" name="status" /> 1167 <pad bytes="3" /> 1168 </struct> 1169 1170 <struct name="DeviceEnableCtrl"> 1171 <field type="CARD16" name="control_id" enum="DeviceControl" /> 1172 <field type="CARD16" name="len" /> 1173 <field type="CARD8" name="enable" /> 1174 <pad bytes="3" /> 1175 </struct> 1176 1177 <struct name="DeviceCtl"> 1178 <field type="CARD16" name="control_id" enum="DeviceControl" /> 1179 <field type="CARD16" name="len" /> 1180 <switch name="data"> 1181 <fieldref>control_id</fieldref> 1182 <case name="resolution"> 1183 <enumref ref="DeviceControl">resolution</enumref> 1184 <field type="CARD8" name="first_valuator" /> 1185 <field type="CARD8" name="num_valuators" /> 1186 <pad bytes="2" /> 1187 <list type="CARD32" name="resolution_values"> 1188 <fieldref>num_valuators</fieldref> 1189 </list> 1190 </case> 1191 <case name="abs_calib"> 1192 <enumref ref="DeviceControl">abs_calib</enumref> 1193 <field type="INT32" name="min_x" /> 1194 <field type="INT32" name="max_x" /> 1195 <field type="INT32" name="min_y" /> 1196 <field type="INT32" name="max_y" /> 1197 <field type="CARD32" name="flip_x" /> 1198 <field type="CARD32" name="flip_y" /> 1199 <field type="CARD32" name="rotation" /> 1200 <field type="CARD32" name="button_threshold" /> 1201 </case> 1202 <case name="core"> 1203 <enumref ref="DeviceControl">core</enumref> 1204 <field type="CARD8" name="status" /> 1205 <pad bytes="3" /> 1206 </case> 1207 <case name="enable"> 1208 <enumref ref="DeviceControl">enable</enumref> 1209 <field type="CARD8" name="enable" /> 1210 <pad bytes="3" /> 1211 </case> 1212 <case name="abs_area"> 1213 <enumref ref="DeviceControl">abs_area</enumref> 1214 <field type="CARD32" name="offset_x" /> 1215 <field type="CARD32" name="offset_y" /> 1216 <field type="INT32" name="width" /> 1217 <field type="INT32" name="height" /> 1218 <field type="INT32" name="screen" /> 1219 <field type="CARD32" name="following" /> 1220 </case> 1221 </switch> 1222 </struct> 1223 1224 <request name="ChangeDeviceControl" opcode="35"> 1225 <field type="CARD16" name="control_id" enum="DeviceControl" /> 1226 <field type="CARD8" name="device_id" /> 1227 <pad bytes="1" /> 1228 <field type="DeviceCtl" name="control" /> 1229 <reply> 1230 <field type="CARD8" name="xi_reply_type" /> 1231 <field type="CARD8" name="status" altenum="GrabStatus" /> 1232 <pad bytes="23" /> 1233 </reply> 1234 </request> 1235 1236 <!-- ⋅⋅⋅ Requests (v1.5) ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ --> 1237 1238 <!-- ListDeviceProperties --> 1239 1240 <request name="ListDeviceProperties" opcode="36"> 1241 <field type="CARD8" name="device_id" /> 1242 <pad bytes="3" /> 1243 <reply> 1244 <field type="CARD8" name="xi_reply_type" /> 1245 <field type="CARD16" name="num_atoms" /> 1246 <pad bytes="22" /> 1247 <list type="ATOM" name="atoms"> 1248 <fieldref>num_atoms</fieldref> 1249 </list> 1250 </reply> 1251 </request> 1252 1253 <!-- ChangeDeviceProperty --> 1254 1255 <enum name="PropertyFormat"> 1256 <item name="8Bits"> <value>8</value> </item> 1257 <item name="16Bits"> <value>16</value> </item> 1258 <item name="32Bits"> <value>32</value> </item> 1259 </enum> 1260 1261 <request name="ChangeDeviceProperty" opcode="37"> 1262 <field type="ATOM" name="property" /> 1263 <field type="ATOM" name="type" /> 1264 <field type="CARD8" name="device_id" /> 1265 <field type="CARD8" name="format" enum="PropertyFormat" /> 1266 <field type="CARD8" name="mode" enum="PropMode" /> 1267 <pad bytes="1" /> 1268 <field type="CARD32" name="num_items" /> 1269 <switch name="items"> 1270 <fieldref>format</fieldref> 1271 <case> 1272 <enumref ref="PropertyFormat">8Bits</enumref> 1273 <list type="CARD8" name="data8"> 1274 <fieldref>num_items</fieldref> 1275 </list> 1276 <pad align="4" /> 1277 </case> 1278 <case> 1279 <enumref ref="PropertyFormat">16Bits</enumref> 1280 <list type="CARD16" name="data16"> 1281 <fieldref>num_items</fieldref> 1282 </list> 1283 <pad align="4" /> 1284 </case> 1285 <case> 1286 <enumref ref="PropertyFormat">32Bits</enumref> 1287 <list type="CARD32" name="data32"> 1288 <fieldref>num_items</fieldref> 1289 </list> 1290 </case> 1291 </switch> 1292 </request> 1293 1294 <!-- DeleteDeviceProperty --> 1295 1296 <request name="DeleteDeviceProperty" opcode="38"> 1297 <field type="ATOM" name="property" /> 1298 <field type="CARD8" name="device_id" /> 1299 <pad bytes="3" /> 1300 </request> 1301 1302 <!-- GetDeviceProperty --> 1303 1304 <request name="GetDeviceProperty" opcode="39"> 1305 <field type="ATOM" name="property" /> 1306 <field type="ATOM" name="type" /> 1307 <field type="CARD32" name="offset" /> 1308 <field type="CARD32" name="len" /> 1309 <field type="CARD8" name="device_id" /> 1310 <field type="BOOL" name="delete" /> 1311 <pad bytes="2" /> 1312 <reply> 1313 <field type="CARD8" name="xi_reply_type" /> 1314 <field type="ATOM" name="type" /> 1315 <field type="CARD32" name="bytes_after" /> 1316 <field type="CARD32" name="num_items" /> 1317 <field type="CARD8" name="format" enum="PropertyFormat" /> 1318 <field type="CARD8" name="device_id" /> 1319 <pad bytes="10" /> 1320 <switch name="items"> 1321 <fieldref>format</fieldref> 1322 <case> 1323 <enumref ref="PropertyFormat">8Bits</enumref> 1324 <list type="CARD8" name="data8"> 1325 <fieldref>num_items</fieldref> 1326 </list> 1327 <pad align="4" /> 1328 </case> 1329 <case> 1330 <enumref ref="PropertyFormat">16Bits</enumref> 1331 <list type="CARD16" name="data16"> 1332 <fieldref>num_items</fieldref> 1333 </list> 1334 <pad align="4" /> 1335 </case> 1336 <case> 1337 <enumref ref="PropertyFormat">32Bits</enumref> 1338 <list type="CARD32" name="data32"> 1339 <fieldref>num_items</fieldref> 1340 </list> 1341 </case> 1342 </switch> 1343 </reply> 1344 </request> 1345 1346 <!-- ⋅⋅⋅ Requests (v2.0) ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ --> 1347 1348 <!-- XIQueryPointer --> 1349 1350 <enum name="Device"> 1351 <item name="All"> <value>0</value> </item> 1352 <item name="AllMaster"> <value>1</value> </item> 1353 </enum> 1354 1355 <struct name="GroupInfo"> 1356 <field type="CARD8" name="base" /> 1357 <field type="CARD8" name="latched" /> 1358 <field type="CARD8" name="locked" /> 1359 <field type="CARD8" name="effective" /> 1360 </struct> 1361 1362 <struct name="ModifierInfo"> 1363 <field type="CARD32" name="base" /> 1364 <field type="CARD32" name="latched" /> 1365 <field type="CARD32" name="locked" /> 1366 <field type="CARD32" name="effective" /> 1367 </struct> 1368 1369 <request name="XIQueryPointer" opcode="40"> 1370 <field type="WINDOW" name="window" /> 1371 <field type="DeviceId" name="deviceid" altenum="Device" /> 1372 <pad bytes="2" /> 1373 <reply> 1374 <pad bytes="1" /> 1375 <field type="WINDOW" name="root" /> 1376 <field type="WINDOW" name="child" /> 1377 <field type="FP1616" name="root_x" /> 1378 <field type="FP1616" name="root_y" /> 1379 <field type="FP1616" name="win_x" /> 1380 <field type="FP1616" name="win_y" /> 1381 <field type="BOOL" name="same_screen" /> 1382 <pad bytes="1" /> 1383 <field type="CARD16" name="buttons_len" /> 1384 <field type="ModifierInfo" name="mods" /> 1385 <field type="GroupInfo" name="group" /> 1386 <list type="CARD32" name="buttons"> 1387 <fieldref>buttons_len</fieldref> 1388 </list> 1389 </reply> 1390 </request> 1391 1392 <!-- XIWarpPointer --> 1393 1394 <request name="XIWarpPointer" opcode="41"> 1395 <field type="WINDOW" name="src_win" /> 1396 <field type="WINDOW" name="dst_win" /> 1397 <field type="FP1616" name="src_x" /> 1398 <field type="FP1616" name="src_y" /> 1399 <field type="CARD16" name="src_width" /> 1400 <field type="CARD16" name="src_height" /> 1401 <field type="FP1616" name="dst_x" /> 1402 <field type="FP1616" name="dst_y" /> 1403 <field type="DeviceId" name="deviceid" altenum="Device" /> 1404 <pad bytes="2" /> 1405 </request> 1406 1407 <!-- XIChangeCursor --> 1408 1409 <request name="XIChangeCursor" opcode="42"> 1410 <field type="WINDOW" name="window" /> 1411 <field type="CURSOR" name="cursor" /> 1412 <field type="DeviceId" name="deviceid" altenum="Device" /> 1413 <pad bytes="2" /> 1414 </request> 1415 1416 <!-- XIChangeHierarchy --> 1417 1418 <enum name="HierarchyChangeType"> 1419 <item name="AddMaster"> <value>1</value> </item> 1420 <item name="RemoveMaster"> <value>2</value> </item> 1421 <item name="AttachSlave"> <value>3</value> </item> 1422 <item name="DetachSlave"> <value>4</value> </item> 1423 </enum> 1424 1425 <enum name="ChangeMode"> 1426 <item name="Attach"> <value>1</value> </item> 1427 <item name="Float"> <value>2</value> </item> 1428 </enum> 1429 1430 <struct name="AddMaster"> 1431 <field type="CARD16" name="type" enum="HierarchyChangeType" /> 1432 <field type="CARD16" name="len" /> 1433 <field type="CARD16" name="name_len" /> 1434 <field type="BOOL" name="send_core" /> 1435 <field type="BOOL" name="enable" /> 1436 <list type="char" name="name"> 1437 <fieldref>name_len</fieldref> 1438 </list> 1439 <pad align="4" /> 1440 </struct> 1441 1442 <struct name="RemoveMaster"> 1443 <field type="CARD16" name="type" enum="HierarchyChangeType" /> 1444 <field type="CARD16" name="len" /> 1445 <field type="DeviceId" name="deviceid" altenum="Device" /> 1446 <field type="CARD8" name="return_mode" enum="ChangeMode" /> 1447 <pad bytes="1" /> 1448 <field type="DeviceId" name="return_pointer" altenum="Device" /> 1449 <field type="DeviceId" name="return_keyboard" altenum="Device" /> 1450 </struct> 1451 1452 <struct name="AttachSlave"> 1453 <field type="CARD16" name="type" enum="HierarchyChangeType" /> 1454 <field type="CARD16" name="len" /> 1455 <field type="DeviceId" name="deviceid" altenum="Device" /> 1456 <field type="DeviceId" name="master" altenum="Device" /> 1457 </struct> 1458 1459 <struct name="DetachSlave"> 1460 <field type="CARD16" name="type" enum="HierarchyChangeType" /> 1461 <field type="CARD16" name="len" /> 1462 <field type="DeviceId" name="deviceid" altenum="Device" /> 1463 <pad bytes="2" /> 1464 </struct> 1465 1466 <struct name="HierarchyChange"> 1467 <field type="CARD16" name="type" enum="HierarchyChangeType" /> 1468 <field type="CARD16" name="len" /> 1469 <switch name="data"> 1470 <fieldref>type</fieldref> 1471 <case name="add_master"> 1472 <enumref ref="HierarchyChangeType">AddMaster</enumref> 1473 <field type="CARD16" name="name_len" /> 1474 <field type="BOOL" name="send_core" /> 1475 <field type="BOOL" name="enable" /> 1476 <list type="char" name="name"> 1477 <fieldref>name_len</fieldref> 1478 </list> 1479 <pad align="4" /> 1480 </case> 1481 <case name="remove_master"> 1482 <enumref ref="HierarchyChangeType">RemoveMaster</enumref> 1483 <field type="DeviceId" name="deviceid" altenum="Device" /> 1484 <field type="CARD8" name="return_mode" enum="ChangeMode" /> 1485 <pad bytes="1" /> 1486 <field type="DeviceId" name="return_pointer" altenum="Device" /> 1487 <field type="DeviceId" name="return_keyboard" altenum="Device" /> 1488 </case> 1489 <case name="attach_slave"> 1490 <enumref ref="HierarchyChangeType">AttachSlave</enumref> 1491 <field type="DeviceId" name="deviceid" altenum="Device" /> 1492 <field type="DeviceId" name="master" altenum="Device" /> 1493 </case> 1494 <case name="detach_slave"> 1495 <enumref ref="HierarchyChangeType">DetachSlave</enumref> 1496 <field type="DeviceId" name="deviceid" altenum="Device" /> 1497 <pad bytes="2" /> 1498 </case> 1499 </switch> 1500 </struct> 1501 1502 <request name="XIChangeHierarchy" opcode="43"> 1503 <field type="CARD8" name="num_changes" /> 1504 <pad bytes="3" /> 1505 <list type="HierarchyChange" name="changes"> 1506 <fieldref>num_changes</fieldref> 1507 </list> 1508 </request> 1509 1510 <!-- XISetClientPointer --> 1511 1512 <request name="XISetClientPointer" opcode="44"> 1513 <field type="WINDOW" name="window" /> 1514 <field type="DeviceId" name="deviceid" altenum="Device" /> 1515 <pad bytes="2" /> 1516 </request> 1517 1518 <!-- XIGetClientPointer --> 1519 1520 <request name="XIGetClientPointer" opcode="45"> 1521 <field type="WINDOW" name="window" /> 1522 <reply> 1523 <pad bytes="1" /> 1524 <field type="BOOL" name="set" /> 1525 <pad bytes="1" /> 1526 <field type="DeviceId" name="deviceid" altenum="Device" /> 1527 <pad bytes="20" /> 1528 </reply> 1529 </request> 1530 1531 <!-- XISelectEvents --> 1532 1533 <enum name="XIEventMask"> 1534 <item name="DeviceChanged"> <bit>1</bit> </item> 1535 <item name="KeyPress"> <bit>2</bit> </item> 1536 <item name="KeyRelease"> <bit>3</bit> </item> 1537 <item name="ButtonPress"> <bit>4</bit> </item> 1538 <item name="ButtonRelease"> <bit>5</bit> </item> 1539 <item name="Motion"> <bit>6</bit> </item> 1540 <item name="Enter"> <bit>7</bit> </item> 1541 <item name="Leave"> <bit>8</bit> </item> 1542 <item name="FocusIn"> <bit>9</bit> </item> 1543 <item name="FocusOut"> <bit>10</bit> </item> 1544 <item name="Hierarchy"> <bit>11</bit> </item> 1545 <item name="Property"> <bit>12</bit> </item> 1546 <!-- ⋅⋅⋅ Events (v2.1) ⋅⋅⋅ --> 1547 <item name="RawKeyPress"> <bit>13</bit> </item> 1548 <item name="RawKeyRelease"> <bit>14</bit> </item> 1549 <item name="RawButtonPress"> <bit>15</bit> </item> 1550 <item name="RawButtonRelease"> <bit>16</bit> </item> 1551 <item name="RawMotion"> <bit>17</bit> </item> 1552 <!-- ⋅⋅⋅ Events (v2.2) ⋅⋅⋅ --> 1553 <item name="TouchBegin"> <bit>18</bit> </item> 1554 <item name="TouchUpdate"> <bit>19</bit> </item> 1555 <item name="TouchEnd"> <bit>20</bit> </item> 1556 <item name="TouchOwnership"> <bit>21</bit> </item> 1557 <item name="RawTouchBegin"> <bit>22</bit> </item> 1558 <item name="RawTouchUpdate"> <bit>23</bit> </item> 1559 <item name="RawTouchEnd"> <bit>24</bit> </item> 1560 <!-- ⋅⋅⋅ Events (v2.3) ⋅⋅⋅ --> 1561 <item name="BarrierHit"> <bit>25</bit> </item> 1562 <item name="BarrierLeave"> <bit>26</bit> </item> 1563 </enum> 1564 1565 <struct name="EventMask"> 1566 <field type="DeviceId" name="deviceid" altenum="Device" /> 1567 <field type="CARD16" name="mask_len" /> 1568 <list type="CARD32" name="mask" mask="XIEventMask"> 1569 <fieldref>mask_len</fieldref> 1570 </list> 1571 </struct> 1572 1573 <request name="XISelectEvents" opcode="46"> 1574 <field type="WINDOW" name="window" /> 1575 <field type="CARD16" name="num_mask" /> 1576 <pad bytes="2" /> 1577 <list type="EventMask" name="masks"> 1578 <fieldref>num_mask</fieldref> 1579 </list> 1580 </request> 1581 1582 <!-- XIQueryVersion --> 1583 1584 <request name="XIQueryVersion" opcode="47"> 1585 <field type="CARD16" name="major_version" /> 1586 <field type="CARD16" name="minor_version" /> 1587 1588 <reply> 1589 <pad bytes="1" /> 1590 <field type="CARD16" name="major_version" /> 1591 <field type="CARD16" name="minor_version" /> 1592 <pad bytes="20" /> 1593 </reply> 1594 </request> 1595 1596 <!-- XIQueryDevice --> 1597 1598 <enum name="DeviceClassType"> 1599 <item name="Key"> <value>0</value> </item> 1600 <item name="Button"> <value>1</value> </item> 1601 <item name="Valuator"> <value>2</value> </item> 1602 <item name="Scroll"> <value>3</value> </item> 1603 <item name="Touch"> <value>8</value> </item> 1604 <item name="Gesture"> <value>9</value> </item> 1605 </enum> 1606 1607 <enum name="DeviceType"> 1608 <item name="MasterPointer"> <value>1</value> </item> 1609 <item name="MasterKeyboard"> <value>2</value> </item> 1610 <item name="SlavePointer"> <value>3</value> </item> 1611 <item name="SlaveKeyboard"> <value>4</value> </item> 1612 <item name="FloatingSlave"> <value>5</value> </item> 1613 </enum> 1614 1615 <enum name="ScrollFlags"> 1616 <item name="NoEmulation"> <bit>0</bit> </item> 1617 <item name="Preferred"> <bit>1</bit> </item> 1618 </enum> 1619 1620 <enum name="ScrollType"> 1621 <item name="Vertical"> <value>1</value> </item> 1622 <item name="Horizontal"> <value>2</value> </item> 1623 </enum> 1624 1625 <enum name="TouchMode"> 1626 <item name="Direct"> <value>1</value> </item> 1627 <item name="Dependent"> <value>2</value> </item> 1628 </enum> 1629 1630 <struct name="ButtonClass"> 1631 <field type="CARD16" name="type" enum="DeviceClassType" /> 1632 <field type="CARD16" name="len" /> 1633 <field type="DeviceId" name="sourceid" /> 1634 <field type="CARD16" name="num_buttons" /> 1635 <list type="CARD32" name="state"> 1636 <op op="/"> 1637 <op op="+"> 1638 <fieldref>num_buttons</fieldref> 1639 <value>31</value> 1640 </op> 1641 <value>32</value> 1642 </op> 1643 </list> 1644 <list type="ATOM" name="labels"> 1645 <fieldref>num_buttons</fieldref> 1646 </list> 1647 </struct> 1648 1649 <struct name="KeyClass"> 1650 <field type="CARD16" name="type" enum="DeviceClassType" /> 1651 <field type="CARD16" name="len" /> 1652 <field type="DeviceId" name="sourceid" /> 1653 <field type="CARD16" name="num_keys" /> 1654 <list type="CARD32" name="keys"> 1655 <fieldref>num_keys</fieldref> 1656 </list> 1657 </struct> 1658 1659 <struct name="ScrollClass"> 1660 <field type="CARD16" name="type" enum="DeviceClassType" /> 1661 <field type="CARD16" name="len" /> 1662 <field type="DeviceId" name="sourceid" /> 1663 <field type="CARD16" name="number" /> 1664 <field type="CARD16" name="scroll_type" enum="ScrollType" /> 1665 <pad bytes="2" /> 1666 <field type="CARD32" name="flags" mask="ScrollFlags" /> 1667 <field type="FP3232" name="increment" /> 1668 </struct> 1669 1670 <struct name="TouchClass"> 1671 <field type="CARD16" name="type" enum="DeviceClassType" /> 1672 <field type="CARD16" name="len" /> 1673 <field type="DeviceId" name="sourceid" /> 1674 <field type="CARD8" name="mode" enum="TouchMode" /> 1675 <field type="CARD8" name="num_touches" /> 1676 </struct> 1677 1678 <struct name="GestureClass"> 1679 <field type="CARD16" name="type" enum="DeviceClassType" /> 1680 <field type="CARD16" name="len" /> 1681 <field type="DeviceId" name="sourceid" /> 1682 <field type="CARD8" name="num_touches" /> 1683 <pad bytes="1" /> 1684 </struct> 1685 1686 <struct name="ValuatorClass"> 1687 <field type="CARD16" name="type" enum="DeviceClassType" /> 1688 <field type="CARD16" name="len" /> 1689 <field type="DeviceId" name="sourceid" /> 1690 <field type="CARD16" name="number" /> 1691 <field type="ATOM" name="label" /> 1692 <field type="FP3232" name="min" /> 1693 <field type="FP3232" name="max" /> 1694 <field type="FP3232" name="value" /> 1695 <field type="CARD32" name="resolution" /> 1696 <field type="CARD8" name="mode" enum="ValuatorMode" /> 1697 <pad bytes="3" /> 1698 </struct> 1699 1700 <struct name="DeviceClass"> 1701 <length> 1702 <op op="*"> 1703 <fieldref>len</fieldref> 1704 <value>4</value> 1705 </op> 1706 </length> 1707 <field type="CARD16" name="type" enum="DeviceClassType" /> 1708 <field type="CARD16" name="len" /> 1709 <field type="DeviceId" name="sourceid" /> 1710 <switch name="data"> 1711 <fieldref>type</fieldref> 1712 <required_start_align align="4" offset="2" /> 1713 <case name="key"> 1714 <enumref ref="DeviceClassType">Key</enumref> 1715 <required_start_align align="4" offset="2" /> 1716 <field type="CARD16" name="num_keys" /> 1717 <list type="CARD32" name="keys"> 1718 <fieldref>num_keys</fieldref> 1719 </list> 1720 </case> 1721 <case name="button"> 1722 <enumref ref="DeviceClassType">Button</enumref> 1723 <required_start_align align="4" offset="2" /> 1724 <field type="CARD16" name="num_buttons" /> 1725 <list type="CARD32" name="state"> 1726 <op op="/"> 1727 <op op="+"> 1728 <fieldref>num_buttons</fieldref> 1729 <value>31</value> 1730 </op> 1731 <value>32</value> 1732 </op> 1733 </list> 1734 <list type="ATOM" name="labels"> 1735 <fieldref>num_buttons</fieldref> 1736 </list> 1737 </case> 1738 <case name="valuator"> 1739 <enumref ref="DeviceClassType">Valuator</enumref> 1740 <required_start_align align="4" offset="2" /> 1741 <field type="CARD16" name="number" /> 1742 <field type="ATOM" name="label" /> 1743 <field type="FP3232" name="min" /> 1744 <field type="FP3232" name="max" /> 1745 <field type="FP3232" name="value" /> 1746 <field type="CARD32" name="resolution" /> 1747 <field type="CARD8" name="mode" enum="ValuatorMode" /> 1748 <pad bytes="3" /> 1749 </case> 1750 <case name="scroll"> 1751 <enumref ref="DeviceClassType">Scroll</enumref> 1752 <required_start_align align="4" offset="2" /> 1753 <field type="CARD16" name="number" /> 1754 <field type="CARD16" name="scroll_type" enum="ScrollType" /> 1755 <pad bytes="2" /> 1756 <field type="CARD32" name="flags" mask="ScrollFlags" /> 1757 <field type="FP3232" name="increment" /> 1758 </case> 1759 <case name="touch"> 1760 <enumref ref="DeviceClassType">Touch</enumref> 1761 <field type="CARD8" name="mode" enum="TouchMode" /> 1762 <field type="CARD8" name="num_touches" /> 1763 </case> 1764 <case name="gesture"> 1765 <enumref ref="DeviceClassType">Gesture</enumref> 1766 <field type="CARD8" name="num_touches" /> 1767 <pad bytes="1" /> 1768 </case> 1769 </switch> 1770 </struct> 1771 1772 <struct name="XIDeviceInfo"> 1773 <field type="DeviceId" name="deviceid" altenum="Device" /> 1774 <field type="CARD16" name="type" enum="DeviceType" /> 1775 <field type="DeviceId" name="attachment" altenum="Device" /> 1776 <field type="CARD16" name="num_classes" /> 1777 <field type="CARD16" name="name_len" /> 1778 <field type="BOOL" name="enabled" /> 1779 <pad bytes="1" /> 1780 <list type="char" name="name"> 1781 <fieldref>name_len</fieldref> 1782 </list> 1783 <pad align="4" /> 1784 <list type="DeviceClass" name="classes"> 1785 <fieldref>num_classes</fieldref> 1786 </list> 1787 </struct> 1788 1789 <request name="XIQueryDevice" opcode="48"> 1790 <field type="DeviceId" name="deviceid" altenum="Device" /> 1791 <pad bytes="2" /> 1792 <reply> 1793 <pad bytes="1" /> 1794 <field type="CARD16" name="num_infos" /> 1795 <pad bytes="22" /> 1796 <list type="XIDeviceInfo" name="infos"> 1797 <fieldref>num_infos</fieldref> 1798 </list> 1799 </reply> 1800 </request> 1801 1802 <!-- XISetFocus --> 1803 1804 <request name="XISetFocus" opcode="49"> 1805 <field type="WINDOW" name="window" /> 1806 <field type="TIMESTAMP" name="time" altenum="Time" /> 1807 <field type="DeviceId" name="deviceid" altenum="Device" /> 1808 <pad bytes="2" /> 1809 </request> 1810 1811 <!-- XIGetFocus --> 1812 1813 <request name="XIGetFocus" opcode="50"> 1814 <field type="DeviceId" name="deviceid" altenum="Device" /> 1815 <pad bytes="2" /> 1816 <reply> 1817 <pad bytes="1" /> 1818 <field type="WINDOW" name="focus" /> 1819 <pad bytes="20" /> 1820 </reply> 1821 </request> 1822 1823 <!-- XIGrabDevice --> 1824 1825 <enum name="GrabOwner"> 1826 <item name="NoOwner"> <value>0</value> </item> 1827 <item name="Owner"> <value>1</value> </item> 1828 </enum> 1829 1830 <request name="XIGrabDevice" opcode="51"> 1831 <field type="WINDOW" name="window" /> 1832 <field type="TIMESTAMP" name="time" altenum="Time" /> 1833 <field type="CURSOR" name="cursor" /> 1834 <field type="DeviceId" name="deviceid" altenum="Device" /> 1835 <field type="CARD8" name="mode" enum="GrabMode" /> 1836 <field type="CARD8" name="paired_device_mode" enum="GrabMode" /> 1837 <field type="BOOL" name="owner_events" enum="GrabOwner" /> 1838 <pad bytes="1" /> 1839 <field type="CARD16" name="mask_len" /> 1840 <list type="CARD32" name="mask"> 1841 <fieldref>mask_len</fieldref> 1842 </list> 1843 <reply> 1844 <pad bytes="1" /> 1845 <field type="CARD8" name="status" enum="GrabStatus" /> 1846 <pad bytes="23" /> 1847 </reply> 1848 </request> 1849 1850 <!-- XIUngrabDevice --> 1851 1852 <request name="XIUngrabDevice" opcode="52"> 1853 <field type="TIMESTAMP" name="time" altenum="Time" /> 1854 <field type="DeviceId" name="deviceid" altenum="Device" /> 1855 <pad bytes="2" /> 1856 </request> 1857 1858 <!-- XIAllowEvents --> 1859 1860 <enum name="EventMode"> 1861 <item name="AsyncDevice"> <value>0</value> </item> 1862 <item name="SyncDevice"> <value>1</value> </item> 1863 <item name="ReplayDevice"> <value>2</value> </item> 1864 <item name="AsyncPairedDevice"> <value>3</value> </item> 1865 <item name="AsyncPair"> <value>4</value> </item> 1866 <item name="SyncPair"> <value>5</value> </item> 1867 <item name="AcceptTouch"> <value>6</value> </item> 1868 <item name="RejectTouch"> <value>7</value> </item> 1869 </enum> 1870 1871 <request name="XIAllowEvents" opcode="53"> 1872 <field type="TIMESTAMP" name="time" altenum="Time" /> 1873 <field type="DeviceId" name="deviceid" altenum="Device" /> 1874 <field type="CARD8" name="event_mode" enum="EventMode" /> 1875 <pad bytes="1" /> 1876 <field type="CARD32" name="touchid" /> 1877 <field type="WINDOW" name="grab_window" /> 1878 </request> 1879 1880 <!-- XIPassiveGrabDevice --> 1881 1882 <enum name="GrabMode22"> 1883 <item name="Sync"> <value>0</value> </item> 1884 <item name="Async"> <value>1</value> </item> 1885 <item name="Touch"> <value>2</value> </item> 1886 </enum> 1887 1888 <enum name="GrabType"> 1889 <item name="Button"> <value>0</value> </item> 1890 <item name="Keycode"> <value>1</value> </item> 1891 <item name="Enter"> <value>2</value> </item> 1892 <item name="FocusIn"> <value>3</value> </item> 1893 <item name="TouchBegin"> <value>4</value> </item> 1894 <item name="GesturePinchBegin"> <value>5</value> </item> 1895 <item name="GestureSwipeBegin"> <value>6</value> </item> 1896 </enum> 1897 1898 <enum name="ModifierMask"> 1899 <item name="Any"> <bit>31</bit> </item> 1900 </enum> 1901 1902 <struct name="GrabModifierInfo"> 1903 <field type="CARD32" name="modifiers" altenum="ModifierMask" /> 1904 <field type="CARD8" name="status" enum="GrabStatus" /> 1905 <pad bytes="3" /> 1906 </struct> 1907 1908 <request name="XIPassiveGrabDevice" opcode="54"> 1909 <!-- field "time" is unused and its value is undefined --> 1910 <field type="TIMESTAMP" name="time" altenum="Time" /> 1911 <field type="WINDOW" name="grab_window" /> 1912 <field type="CURSOR" name="cursor" /> 1913 <field type="CARD32" name="detail" /> 1914 <field type="DeviceId" name="deviceid" altenum="Device" /> 1915 <field type="CARD16" name="num_modifiers" /> 1916 <field type="CARD16" name="mask_len" /> 1917 <field type="CARD8" name="grab_type" enum="GrabType" /> 1918 <field type="CARD8" name="grab_mode" enum="GrabMode22" /> 1919 <field type="CARD8" name="paired_device_mode" enum="GrabMode" /> 1920 <field type="BOOL" name="owner_events" enum="GrabOwner" /> 1921 <pad bytes="2" /> 1922 <list type="CARD32" name="mask"> 1923 <fieldref>mask_len</fieldref> 1924 </list> 1925 <list type="CARD32" name="modifiers"> 1926 <fieldref>num_modifiers</fieldref> 1927 </list> 1928 <reply> 1929 <pad bytes="1" /> 1930 <field type="CARD16" name="num_modifiers" /> 1931 <pad bytes="22" /> 1932 <list type="GrabModifierInfo" name="modifiers"> 1933 <fieldref>num_modifiers</fieldref> 1934 </list> 1935 </reply> 1936 </request> 1937 1938 <!-- XIPassiveUngrabDevice --> 1939 1940 <request name="XIPassiveUngrabDevice" opcode="55"> 1941 <field type="WINDOW" name="grab_window" /> 1942 <field type="CARD32" name="detail" /> 1943 <field type="DeviceId" name="deviceid" altenum="Device" /> 1944 <field type="CARD16" name="num_modifiers" /> 1945 <field type="CARD8" name="grab_type" enum="GrabType" /> 1946 <pad bytes="3" /> 1947 <list type="CARD32" name="modifiers"> 1948 <fieldref>num_modifiers</fieldref> 1949 </list> 1950 </request> 1951 1952 <!-- XIListProperties --> 1953 1954 <request name="XIListProperties" opcode="56"> 1955 <field type="DeviceId" name="deviceid" altenum="Device" /> 1956 <pad bytes="2" /> 1957 <reply> 1958 <pad bytes="1" /> 1959 <field type="CARD16" name="num_properties" /> 1960 <pad bytes="22" /> 1961 <list type="ATOM" name="properties"> 1962 <fieldref>num_properties</fieldref> 1963 </list> 1964 </reply> 1965 </request> 1966 1967 <!-- XIChangeProperty --> 1968 1969 <request name="XIChangeProperty" opcode="57"> 1970 <field type="DeviceId" name="deviceid" altenum="Device" /> 1971 <field type="CARD8" name="mode" enum="PropMode" /> 1972 <field type="CARD8" name="format" enum="PropertyFormat" /> 1973 <field type="ATOM" name="property" /> 1974 <field type="ATOM" name="type" /> 1975 <field type="CARD32" name="num_items" /> 1976 <switch name="items"> 1977 <fieldref>format</fieldref> 1978 <case> 1979 <enumref ref="PropertyFormat">8Bits</enumref> 1980 <list type="CARD8" name="data8"> 1981 <fieldref>num_items</fieldref> 1982 </list> 1983 <pad align="4" /> 1984 </case> 1985 <case> 1986 <enumref ref="PropertyFormat">16Bits</enumref> 1987 <list type="CARD16" name="data16"> 1988 <fieldref>num_items</fieldref> 1989 </list> 1990 <pad align="4" /> 1991 </case> 1992 <case> 1993 <enumref ref="PropertyFormat">32Bits</enumref> 1994 <list type="CARD32" name="data32"> 1995 <fieldref>num_items</fieldref> 1996 </list> 1997 </case> 1998 </switch> 1999 </request> 2000 2001 <!-- XIDeleteProperty --> 2002 2003 <request name="XIDeleteProperty" opcode="58"> 2004 <field type="DeviceId" name="deviceid" altenum="Device" /> 2005 <pad bytes="2" /> 2006 <field type="ATOM" name="property" /> 2007 </request> 2008 2009 <!-- XIGetProperty --> 2010 2011 <request name="XIGetProperty" opcode="59"> 2012 <field type="DeviceId" name="deviceid" altenum="Device" /> 2013 <field type="BOOL" name="delete" /> 2014 <pad bytes="1" /> 2015 <field type="ATOM" name="property" /> 2016 <field type="ATOM" name="type" /> 2017 <field type="CARD32" name="offset" /> 2018 <field type="CARD32" name="len" /> 2019 <reply> 2020 <pad bytes="1" /> 2021 <field type="ATOM" name="type" /> 2022 <field type="CARD32" name="bytes_after" /> 2023 <field type="CARD32" name="num_items" /> 2024 <field type="CARD8" name="format" enum="PropertyFormat" /> 2025 <pad bytes="11" /> 2026 <switch name="items"> 2027 <fieldref>format</fieldref> 2028 <case> 2029 <enumref ref="PropertyFormat">8Bits</enumref> 2030 <list type="CARD8" name="data8"> 2031 <fieldref>num_items</fieldref> 2032 </list> 2033 <pad align="4" /> 2034 </case> 2035 <case> 2036 <enumref ref="PropertyFormat">16Bits</enumref> 2037 <list type="CARD16" name="data16"> 2038 <fieldref>num_items</fieldref> 2039 </list> 2040 <pad align="4" /> 2041 </case> 2042 <case> 2043 <enumref ref="PropertyFormat">32Bits</enumref> 2044 <list type="CARD32" name="data32"> 2045 <fieldref>num_items</fieldref> 2046 </list> 2047 </case> 2048 </switch> 2049 </reply> 2050 </request> 2051 2052 <!-- XIGetSelectedEvents --> 2053 2054 <request name="XIGetSelectedEvents" opcode="60"> 2055 <field type="WINDOW" name="window" /> 2056 <reply> 2057 <pad bytes="1" /> 2058 <field type="CARD16" name="num_masks" /> 2059 <pad bytes="22" /> 2060 <list type="EventMask" name="masks"> 2061 <fieldref>num_masks</fieldref> 2062 </list> 2063 </reply> 2064 </request> 2065 2066 <!-- ⋅⋅⋅ Requests (v2.3) ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ --> 2067 2068 <!-- XIBarrierReleasePointer --> 2069 2070 <struct name="BarrierReleasePointerInfo"> 2071 <field type="DeviceId" name="deviceid" /> 2072 <pad bytes="2" /> 2073 <field type="BARRIER" name="barrier" /> 2074 <field type="CARD32" name="eventid" /> 2075 </struct> 2076 2077 <request name="XIBarrierReleasePointer" opcode="61"> 2078 <field type="CARD32" name="num_barriers" /> 2079 <list type="BarrierReleasePointerInfo" name="barriers"> 2080 <fieldref>num_barriers</fieldref> 2081 </list> 2082 </request> 2083 2084 <!-- ⋅⋅⋅ Events (v1.0) ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ --> 2085 <!-- Notes: 2086 - A 'len' field in a v1++ structure is in bytes. 2087 --> 2088 2089 <event name="DeviceValuator" number="0"> 2090 <field type="CARD8" name="device_id" /> 2091 <field type="CARD16" name="device_state" /> 2092 <field type="CARD8" name="num_valuators" /> 2093 <field type="CARD8" name="first_valuator" /> 2094 <list type="INT32" name="valuators"> 2095 <value>6</value> 2096 </list> 2097 </event> 2098 2099 <!-- the highest bit in a CARD8 device_id-field indicates that more 2100 events will follow --> 2101 <enum name="MoreEventsMask"> 2102 <item name="MoreEvents"> <bit>7</bit> </item> <!-- 0x80 --> 2103 </enum> 2104 2105 <event name="DeviceKeyPress" number="1"> 2106 <field type="BYTE" name="detail" /> 2107 <field type="TIMESTAMP" name="time" /> 2108 <field type="WINDOW" name="root" /> 2109 <field type="WINDOW" name="event" /> 2110 <field type="WINDOW" name="child" altenum="Window" /> 2111 <field type="INT16" name="root_x" /> 2112 <field type="INT16" name="root_y" /> 2113 <field type="INT16" name="event_x" /> 2114 <field type="INT16" name="event_y" /> 2115 <field type="CARD16" name="state" mask="KeyButMask" /> 2116 <field type="BOOL" name="same_screen" /> 2117 <field type="CARD8" name="device_id" altmask="MoreEventsMask" /> 2118 </event> 2119 2120 <eventcopy name="DeviceKeyRelease" number="2" ref="DeviceKeyPress" /> 2121 <eventcopy name="DeviceButtonPress" number="3" ref="DeviceKeyPress" /> 2122 <eventcopy name="DeviceButtonRelease" number="4" ref="DeviceKeyPress" /> 2123 <eventcopy name="DeviceMotionNotify" number="5" ref="DeviceKeyPress" /> 2124 2125 <event name="DeviceFocusIn" number="6"> 2126 <field type="BYTE" name="detail" enum="xproto:NotifyDetail" /> 2127 <field type="TIMESTAMP" name="time" /> 2128 <field type="WINDOW" name="window" /> 2129 <field type="BYTE" name="mode" enum="xproto:NotifyMode" /> 2130 <field type="CARD8" name="device_id" /> 2131 <pad bytes="18" /> 2132 </event> 2133 2134 <eventcopy name="DeviceFocusOut" number="7" ref="DeviceFocusIn" /> 2135 <eventcopy name="ProximityIn" number="8" ref="DeviceKeyPress" /> 2136 <eventcopy name="ProximityOut" number="9" ref="DeviceKeyPress" /> 2137 2138 <enum name="ClassesReportedMask"> 2139 <item name="OutOfProximity"> <bit>7</bit> </item> <!-- 0x80 --> 2140 <!-- 0 = InProxmity, 1 = OutOfProximity --> 2141 2142 <item name="DeviceModeAbsolute"> <bit>6</bit> </item> <!-- 0x40 --> 2143 <!-- 0 = Relative, 1 = Absolute --> 2144 2145 <item name="ReportingValuators"> <bit>2</bit> </item> <!-- 0x04 --> 2146 <item name="ReportingButtons"> <bit>1</bit> </item> <!-- 0x02 --> 2147 <item name="ReportingKeys"> <bit>0</bit> </item> <!-- 0x01 --> 2148 </enum> 2149 2150 <event name="DeviceStateNotify" number="10"> 2151 <field type="BYTE" name="device_id" altmask="MoreEventsMask" /> 2152 <field type="TIMESTAMP" name="time" /> 2153 <field type="CARD8" name="num_keys" /> 2154 <field type="CARD8" name="num_buttons" /> 2155 <field type="CARD8" name="num_valuators" /> 2156 <field type="CARD8" name="classes_reported" mask="ClassesReportedMask" /> 2157 <list type="CARD8" name="buttons"> 2158 <value>4</value> 2159 </list> 2160 <list type="CARD8" name="keys"> 2161 <value>4</value> 2162 </list> 2163 <list type="CARD32" name="valuators"> 2164 <value>3</value> 2165 </list> 2166 </event> 2167 2168 <event name="DeviceMappingNotify" number="11"> 2169 <field type="BYTE" name="device_id" /> 2170 <field type="CARD8" name="request" enum="Mapping" /> 2171 <field type="KeyCode" name="first_keycode" /> 2172 <field type="CARD8" name="count" /> 2173 <pad bytes="1" /> 2174 <field type="TIMESTAMP" name="time" /> 2175 <pad bytes="20" /> 2176 </event> 2177 2178 <enum name="ChangeDevice"> 2179 <item name="NewPointer"> <value>0</value> </item> 2180 <item name="NewKeyboard"> <value>1</value> </item> 2181 </enum> 2182 2183 <event name="ChangeDeviceNotify" number="12"> 2184 <field type="BYTE" name="device_id" /> 2185 <field type="TIMESTAMP" name="time" /> 2186 <field type="CARD8" name="request" enum="ChangeDevice" /> 2187 <pad bytes="23" /> 2188 </event> 2189 2190 <event name="DeviceKeyStateNotify" number="13"> 2191 <field type="BYTE" name="device_id" altmask="MoreEventsMask" /> 2192 <list type="CARD8" name="keys"> 2193 <value>28</value> 2194 </list> 2195 </event> 2196 2197 <event name="DeviceButtonStateNotify" number="14"> 2198 <field type="BYTE" name="device_id" altmask="MoreEventsMask" /> 2199 <list type="CARD8" name="buttons"> 2200 <value>28</value> 2201 </list> 2202 </event> 2203 2204 <!-- ⋅⋅⋅ Events (v1.4) ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ --> 2205 2206 <enum name="DeviceChange"> 2207 <item name="Added"> <value>0</value> </item> 2208 <item name="Removed"> <value>1</value> </item> 2209 <item name="Enabled"> <value>2</value> </item> 2210 <item name="Disabled"> <value>3</value> </item> 2211 <item name="Unrecoverable"> <value>4</value> </item> 2212 <item name="ControlChanged"> <value>5</value> </item> 2213 </enum> 2214 2215 <event name="DevicePresenceNotify" number="15"> 2216 <pad bytes="1" /> 2217 <field type="TIMESTAMP" name="time" /> 2218 <field type="BYTE" name="devchange" enum="DeviceChange" /> 2219 <field type="BYTE" name="device_id" /> 2220 <field type="CARD16" name="control" /> 2221 <pad bytes="20" /> 2222 </event> 2223 2224 <!-- ⋅⋅⋅ Events (v1.5) ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ --> 2225 2226 <event name="DevicePropertyNotify" number="16"> 2227 <field type="BYTE" name="state" enum="Property" /> 2228 <field type="TIMESTAMP" name="time" /> 2229 <field type="ATOM" name="property" /> 2230 <pad bytes="19" /> 2231 <field type="CARD8" name="device_id" /> 2232 </event> 2233 2234 <!-- ⋅⋅⋅ Events (v2.0) ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ --> 2235 <!-- Notes: 2236 - A 'len' field in a v2++ structure is in 4 byte units. 2237 --> 2238 2239 <enum name="ChangeReason"> 2240 <item name="SlaveSwitch"> <value>1</value> </item> 2241 <item name="DeviceChange"> <value>2</value> </item> 2242 </enum> 2243 2244 <event name="DeviceChanged" number="1" xge="true"> 2245 <field type="DeviceId" name="deviceid" altenum="Device" /> 2246 <field type="TIMESTAMP" name="time" altenum="Time" /> 2247 <!-- event specific fields --> 2248 <field type="CARD16" name="num_classes" /> 2249 <field type="DeviceId" name="sourceid" altenum="Device" /> 2250 <field type="CARD8" name="reason" enum="ChangeReason" /> 2251 <pad bytes="11" /> 2252 <!-- 32 byte boundary --> 2253 <list type="DeviceClass" name="classes"> 2254 <fieldref>num_classes</fieldref> 2255 </list> 2256 </event> 2257 2258 <enum name="KeyEventFlags"> 2259 <item name="KeyRepeat"> <bit>16</bit> </item> 2260 </enum> 2261 2262 <event name="KeyPress" number="2" xge="true"> 2263 <field type="DeviceId" name="deviceid" altenum="Device" /> 2264 <field type="TIMESTAMP" name="time" altenum="Time" /> 2265 <!-- event specific fields --> 2266 <field type="CARD32" name="detail" /> 2267 <field type="WINDOW" name="root" /> 2268 <field type="WINDOW" name="event" /> 2269 <field type="WINDOW" name="child" /> 2270 <!-- 32 byte boundary --> 2271 <field type="FP1616" name="root_x" /> 2272 <field type="FP1616" name="root_y" /> 2273 <field type="FP1616" name="event_x" /> 2274 <field type="FP1616" name="event_y" /> 2275 <field type="CARD16" name="buttons_len" /> 2276 <field type="CARD16" name="valuators_len" /> 2277 <field type="DeviceId" name="sourceid" altenum="Device" /> 2278 <pad bytes="2" /> 2279 <field type="CARD32" name="flags" mask="KeyEventFlags" /> 2280 <field type="ModifierInfo" name="mods" /> 2281 <field type="GroupInfo" name="group" /> 2282 <list type="CARD32" name="button_mask"> 2283 <fieldref>buttons_len</fieldref> 2284 </list> 2285 <list type="CARD32" name="valuator_mask"> 2286 <fieldref>valuators_len</fieldref> 2287 </list> 2288 <list type="FP3232" name="axisvalues"> 2289 <sumof ref="valuator_mask"> 2290 <popcount> 2291 <listelement-ref/> 2292 </popcount> 2293 </sumof> 2294 </list> 2295 </event> 2296 2297 <eventcopy name="KeyRelease" number="3" ref="KeyPress" /> 2298 2299 <enum name="PointerEventFlags"> 2300 <item name="PointerEmulated"> <bit>16</bit> </item> 2301 </enum> 2302 2303 <event name="ButtonPress" number="4" xge="true"> 2304 <field type="DeviceId" name="deviceid" altenum="Device" /> 2305 <field type="TIMESTAMP" name="time" altenum="Time" /> 2306 <!-- event specific fields --> 2307 <field type="CARD32" name="detail" /> 2308 <field type="WINDOW" name="root" /> 2309 <field type="WINDOW" name="event" /> 2310 <field type="WINDOW" name="child" /> 2311 <!-- 32 byte boundary --> 2312 <field type="FP1616" name="root_x" /> 2313 <field type="FP1616" name="root_y" /> 2314 <field type="FP1616" name="event_x" /> 2315 <field type="FP1616" name="event_y" /> 2316 <field type="CARD16" name="buttons_len" /> 2317 <field type="CARD16" name="valuators_len" /> 2318 <field type="DeviceId" name="sourceid" altenum="Device" /> 2319 <pad bytes="2" /> 2320 <field type="CARD32" name="flags" mask="PointerEventFlags" /> 2321 <field type="ModifierInfo" name="mods" /> 2322 <field type="GroupInfo" name="group" /> 2323 <list type="CARD32" name="button_mask"> 2324 <fieldref>buttons_len</fieldref> 2325 </list> 2326 <list type="CARD32" name="valuator_mask"> 2327 <fieldref>valuators_len</fieldref> 2328 </list> 2329 <list type="FP3232" name="axisvalues"> 2330 <sumof ref="valuator_mask"> 2331 <popcount> 2332 <listelement-ref/> 2333 </popcount> 2334 </sumof> 2335 </list> 2336 </event> 2337 2338 <eventcopy name="ButtonRelease" number="5" ref="ButtonPress" /> 2339 <eventcopy name="Motion" number="6" ref="ButtonPress" /> 2340 2341 <enum name="NotifyMode"> 2342 <item name="Normal"> <value>0</value> </item> 2343 <item name="Grab"> <value>1</value> </item> 2344 <item name="Ungrab"> <value>2</value> </item> 2345 <item name="WhileGrabbed"> <value>3</value> </item> 2346 <item name="PassiveGrab"> <value>4</value> </item> 2347 <item name="PassiveUngrab"> <value>5</value> </item> 2348 </enum> 2349 2350 <enum name="NotifyDetail"> 2351 <item name="Ancestor"> <value>0</value> </item> 2352 <item name="Virtual"> <value>1</value> </item> 2353 <item name="Inferior"> <value>2</value> </item> 2354 <item name="Nonlinear"> <value>3</value> </item> 2355 <item name="NonlinearVirtual"> <value>4</value> </item> 2356 <item name="Pointer"> <value>5</value> </item> 2357 <item name="PointerRoot"> <value>6</value> </item> 2358 <item name="None"> <value>7</value> </item> 2359 </enum> 2360 2361 <event name="Enter" number="7" xge="true"> 2362 <field type="DeviceId" name="deviceid" altenum="Device" /> 2363 <field type="TIMESTAMP" name="time" altenum="Time" /> 2364 <!-- event specific fields --> 2365 <field type="DeviceId" name="sourceid" altenum="Device" /> 2366 <field type="CARD8" name="mode" enum="xinput:NotifyMode" /> 2367 <field type="CARD8" name="detail" enum="xinput:NotifyDetail" /> 2368 <field type="WINDOW" name="root" /> 2369 <field type="WINDOW" name="event" /> 2370 <field type="WINDOW" name="child" /> 2371 <!-- 32 byte boundary --> 2372 <field type="FP1616" name="root_x" /> 2373 <field type="FP1616" name="root_y" /> 2374 <field type="FP1616" name="event_x" /> 2375 <field type="FP1616" name="event_y" /> 2376 <field type="BOOL" name="same_screen" /> 2377 <field type="BOOL" name="focus" /> 2378 <field type="CARD16" name="buttons_len" /> 2379 <field type="ModifierInfo" name="mods" /> 2380 <field type="GroupInfo" name="group" /> 2381 <list type="CARD32" name="buttons"> 2382 <fieldref>buttons_len</fieldref> 2383 </list> 2384 </event> 2385 2386 <eventcopy name="Leave" number="8" ref="Enter" /> 2387 <eventcopy name="FocusIn" number="9" ref="Enter" /> 2388 <eventcopy name="FocusOut" number="10" ref="Enter" /> 2389 2390 <enum name="HierarchyMask"> 2391 <item name="MasterAdded"> <bit>0</bit> </item> 2392 <item name="MasterRemoved"> <bit>1</bit> </item> 2393 <item name="SlaveAdded"> <bit>2</bit> </item> 2394 <item name="SlaveRemoved"> <bit>3</bit> </item> 2395 <item name="SlaveAttached"> <bit>4</bit> </item> 2396 <item name="SlaveDetached"> <bit>5</bit> </item> 2397 <item name="DeviceEnabled"> <bit>6</bit> </item> 2398 <item name="DeviceDisabled"> <bit>7</bit> </item> 2399 </enum> 2400 2401 <struct name="HierarchyInfo"> 2402 <field type="DeviceId" name="deviceid" altenum="Device" /> 2403 <field type="DeviceId" name="attachment" altenum="Device" /> 2404 <field type="CARD8" name="type" enum="DeviceType"/> 2405 <field type="BOOL" name="enabled" /> 2406 <pad bytes="2" /> 2407 <field type="CARD32" name="flags" mask="HierarchyMask" /> 2408 </struct> 2409 2410 <event name="Hierarchy" number="11" xge="true"> 2411 <field type="DeviceId" name="deviceid" altenum="Device" /> 2412 <field type="TIMESTAMP" name="time" altenum="Time" /> 2413 <!-- event specific fields --> 2414 <field type="CARD32" name="flags" mask="HierarchyMask" /> 2415 <field type="CARD16" name="num_infos" /> 2416 <pad bytes="10" /> 2417 <!-- 32 byte boundary --> 2418 <list type="HierarchyInfo" name="infos"> 2419 <fieldref>num_infos</fieldref> 2420 </list> 2421 </event> 2422 2423 <enum name="PropertyFlag"> 2424 <item name="Deleted"> <value>0</value> </item> 2425 <item name="Created"> <value>1</value> </item> 2426 <item name="Modified"> <value>2</value> </item> 2427 </enum> 2428 2429 <event name="Property" number="12" xge="true"> 2430 <field type="DeviceId" name="deviceid" altenum="Device" /> 2431 <field type="TIMESTAMP" name="time" altenum="Time" /> 2432 <!-- event specific fields --> 2433 <field type="ATOM" name="property" /> 2434 <field type="CARD8" name="what" enum="PropertyFlag" /> 2435 <pad bytes="11" /> 2436 <!-- 32 byte boundary --> 2437 </event> 2438 2439 <!-- ⋅⋅⋅ Events (v2.1) ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ --> 2440 2441 <event name="RawKeyPress" number="13" xge="true"> 2442 <field type="DeviceId" name="deviceid" altenum="Device" /> 2443 <field type="TIMESTAMP" name="time" altenum="Time" /> 2444 <!-- event specific fields --> 2445 <field type="CARD32" name="detail" /> 2446 <field type="DeviceId" name="sourceid" /> 2447 <field type="CARD16" name="valuators_len" /> 2448 <field type="CARD32" name="flags" mask="KeyEventFlags"/> 2449 <pad bytes="4" /> 2450 <!-- 32 byte boundary --> 2451 <list type="CARD32" name="valuator_mask"> 2452 <fieldref>valuators_len</fieldref> 2453 </list> 2454 <list type="FP3232" name="axisvalues"> 2455 <sumof ref="valuator_mask"> 2456 <popcount> 2457 <listelement-ref/> 2458 </popcount> 2459 </sumof> 2460 </list> 2461 <list type="FP3232" name="axisvalues_raw"> 2462 <sumof ref="valuator_mask"> 2463 <popcount> 2464 <listelement-ref/> 2465 </popcount> 2466 </sumof> 2467 </list> 2468 </event> 2469 2470 <eventcopy name="RawKeyRelease" number="14" ref="RawKeyPress" /> 2471 2472 <event name="RawButtonPress" number="15" xge="true"> 2473 <field type="DeviceId" name="deviceid" altenum="Device" /> 2474 <field type="TIMESTAMP" name="time" altenum="Time" /> 2475 <!-- event specific fields --> 2476 <field type="CARD32" name="detail" /> 2477 <field type="DeviceId" name="sourceid" /> 2478 <field type="CARD16" name="valuators_len" /> 2479 <field type="CARD32" name="flags" mask="PointerEventFlags"/> 2480 <pad bytes="4" /> 2481 <!-- 32 byte boundary --> 2482 <list type="CARD32" name="valuator_mask"> 2483 <fieldref>valuators_len</fieldref> 2484 </list> 2485 <list type="FP3232" name="axisvalues"> 2486 <sumof ref="valuator_mask"> 2487 <popcount> 2488 <listelement-ref/> 2489 </popcount> 2490 </sumof> 2491 </list> 2492 <list type="FP3232" name="axisvalues_raw"> 2493 <sumof ref="valuator_mask"> 2494 <popcount> 2495 <listelement-ref/> 2496 </popcount> 2497 </sumof> 2498 </list> 2499 </event> 2500 2501 <eventcopy name="RawButtonRelease" number="16" ref="RawButtonPress" /> 2502 <eventcopy name="RawMotion" number="17" ref="RawButtonPress" /> 2503 2504 <!-- ⋅⋅⋅ Events (v2.2) ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ --> 2505 2506 <enum name="TouchEventFlags"> 2507 <item name="TouchPendingEnd"> <bit>16</bit> </item> 2508 <item name="TouchEmulatingPointer"> <bit>17</bit> </item> 2509 </enum> 2510 2511 <event name="TouchBegin" number="18" xge="true"> 2512 <field type="DeviceId" name="deviceid" altenum="Device" /> 2513 <field type="TIMESTAMP" name="time" altenum="Time" /> 2514 <!-- event specific fields --> 2515 <field type="CARD32" name="detail" /> 2516 <field type="WINDOW" name="root" /> 2517 <field type="WINDOW" name="event" /> 2518 <field type="WINDOW" name="child" /> 2519 <!-- 32 byte boundary --> 2520 <field type="FP1616" name="root_x" /> 2521 <field type="FP1616" name="root_y" /> 2522 <field type="FP1616" name="event_x" /> 2523 <field type="FP1616" name="event_y" /> 2524 <field type="CARD16" name="buttons_len" /> 2525 <field type="CARD16" name="valuators_len" /> 2526 <field type="DeviceId" name="sourceid" altenum="Device" /> 2527 <pad bytes="2" /> 2528 <field type="CARD32" name="flags" mask="TouchEventFlags" /> 2529 <field type="ModifierInfo" name="mods" /> 2530 <field type="GroupInfo" name="group" /> 2531 <list type="CARD32" name="button_mask"> 2532 <fieldref>buttons_len</fieldref> 2533 </list> 2534 <list type="CARD32" name="valuator_mask"> 2535 <fieldref>valuators_len</fieldref> 2536 </list> 2537 <list type="FP3232" name="axisvalues"> 2538 <sumof ref="valuator_mask"> 2539 <popcount> 2540 <listelement-ref/> 2541 </popcount> 2542 </sumof> 2543 </list> 2544 </event> 2545 2546 <eventcopy name="TouchUpdate" number="19" ref="TouchBegin" /> 2547 <eventcopy name="TouchEnd" number="20" ref="TouchBegin" /> 2548 2549 <enum name="TouchOwnershipFlags"> 2550 <!-- XXX: Remove this enum? Currently, no flag is defined. --> 2551 <item name="None"> <value>0</value> </item> 2552 </enum> 2553 2554 <event name="TouchOwnership" number="21" xge="true"> 2555 <field type="DeviceId" name="deviceid" altenum="Device" /> 2556 <field type="TIMESTAMP" name="time" altenum="Time" /> 2557 <!-- event specific fields --> 2558 <field type="CARD32" name="touchid" /> 2559 <field type="WINDOW" name="root" /> 2560 <field type="WINDOW" name="event" /> 2561 <field type="WINDOW" name="child" /> 2562 <!-- 32 byte boundary --> 2563 <field type="DeviceId" name="sourceid" altenum="Device" /> 2564 <pad bytes="2" /> 2565 <field type="CARD32" name="flags" enum="TouchOwnershipFlags" /> 2566 <pad bytes="8" /> 2567 </event> 2568 2569 <event name="RawTouchBegin" number="22" xge="true"> 2570 <field type="DeviceId" name="deviceid" altenum="Device" /> 2571 <field type="TIMESTAMP" name="time" altenum="Time" /> 2572 <!-- event specific fields --> 2573 <field type="CARD32" name="detail" /> 2574 <field type="DeviceId" name="sourceid" /> 2575 <field type="CARD16" name="valuators_len" /> 2576 <field type="CARD32" name="flags" mask="TouchEventFlags"/> 2577 <pad bytes="4" /> 2578 <!-- 32 byte boundary --> 2579 <list type="CARD32" name="valuator_mask"> 2580 <fieldref>valuators_len</fieldref> 2581 </list> 2582 <list type="FP3232" name="axisvalues"> 2583 <sumof ref="valuator_mask"> 2584 <popcount> 2585 <listelement-ref/> 2586 </popcount> 2587 </sumof> 2588 </list> 2589 <list type="FP3232" name="axisvalues_raw"> 2590 <sumof ref="valuator_mask"> 2591 <popcount> 2592 <listelement-ref/> 2593 </popcount> 2594 </sumof> 2595 </list> 2596 </event> 2597 2598 <eventcopy name="RawTouchUpdate" number="23" ref="RawTouchBegin" /> 2599 <eventcopy name="RawTouchEnd" number="24" ref="RawTouchBegin" /> 2600 2601 <!-- ⋅⋅⋅ Events (v2.3) ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ --> 2602 2603 <enum name="BarrierFlags"> 2604 <item name="PointerReleased"> <bit>0</bit> </item> 2605 <item name="DeviceIsGrabbed"> <bit>1</bit> </item> 2606 </enum> 2607 2608 <event name="BarrierHit" number="25" xge="true"> 2609 <field type="DeviceId" name="deviceid" altenum="Device" /> 2610 <field type="TIMESTAMP" name="time" altenum="Time" /> 2611 <!-- event specific fields --> 2612 <field type="CARD32" name="eventid" /> 2613 <field type="WINDOW" name="root" /> 2614 <field type="WINDOW" name="event" /> 2615 <field type="BARRIER" name="barrier" /> 2616 <!-- 32 byte boundary --> 2617 <field type="CARD32" name="dtime" /> 2618 <field type="CARD32" name="flags" mask="BarrierFlags" /> 2619 <field type="DeviceId" name="sourceid" altenum="Device" /> 2620 <pad bytes="2" /> 2621 <field type="FP1616" name="root_x" /> 2622 <field type="FP1616" name="root_y" /> 2623 <field type="FP3232" name="dx" /> 2624 <field type="FP3232" name="dy" /> 2625 </event> 2626 2627 <eventcopy name="BarrierLeave" number="26" ref="BarrierHit" /> 2628 2629 <!-- ⋅⋅⋅ Events (v2.4) ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ --> 2630 2631 <enum name="GesturePinchEventFlags"> 2632 <item name="GesturePinchCancelled"> <bit>0</bit> </item> 2633 </enum> 2634 2635 <event name="GesturePinchBegin" number="27" xge="true"> 2636 <field type="DeviceId" name="deviceid" altenum="Device" /> 2637 <field type="TIMESTAMP" name="time" altenum="Time" /> 2638 <!-- event specific fields --> 2639 <field type="CARD32" name="detail" /> 2640 <field type="WINDOW" name="root" /> 2641 <field type="WINDOW" name="event" /> 2642 <field type="WINDOW" name="child" /> 2643 <!-- 32 byte boundary --> 2644 <field type="FP1616" name="root_x" /> 2645 <field type="FP1616" name="root_y" /> 2646 <field type="FP1616" name="event_x" /> 2647 <field type="FP1616" name="event_y" /> 2648 <field type="FP1616" name="delta_x" /> 2649 <field type="FP1616" name="delta_y" /> 2650 <field type="FP1616" name="delta_unaccel_x" /> 2651 <field type="FP1616" name="delta_unaccel_y" /> 2652 <field type="FP1616" name="scale" /> 2653 <field type="FP1616" name="delta_angle" /> 2654 <field type="DeviceId" name="sourceid" altenum="Device" /> 2655 <pad bytes="2" /> 2656 <field type="ModifierInfo" name="mods" /> 2657 <field type="GroupInfo" name="group" /> 2658 <field type="CARD32" name="flags" mask="GesturePinchEventFlags" /> 2659 </event> 2660 2661 <eventcopy name="GesturePinchUpdate" number="28" ref="GesturePinchBegin" /> 2662 <eventcopy name="GesturePinchEnd" number="29" ref="GesturePinchBegin" /> 2663 2664 <enum name="GestureSwipeEventFlags"> 2665 <item name="GestureSwipeCancelled"> <bit>0</bit> </item> 2666 </enum> 2667 2668 <event name="GestureSwipeBegin" number="30" xge="true"> 2669 <field type="DeviceId" name="deviceid" altenum="Device" /> 2670 <field type="TIMESTAMP" name="time" altenum="Time" /> 2671 <!-- event specific fields --> 2672 <field type="CARD32" name="detail" /> 2673 <field type="WINDOW" name="root" /> 2674 <field type="WINDOW" name="event" /> 2675 <field type="WINDOW" name="child" /> 2676 <!-- 32 byte boundary --> 2677 <field type="FP1616" name="root_x" /> 2678 <field type="FP1616" name="root_y" /> 2679 <field type="FP1616" name="event_x" /> 2680 <field type="FP1616" name="event_y" /> 2681 <field type="FP1616" name="delta_x" /> 2682 <field type="FP1616" name="delta_y" /> 2683 <field type="FP1616" name="delta_unaccel_x" /> 2684 <field type="FP1616" name="delta_unaccel_y" /> 2685 <field type="DeviceId" name="sourceid" altenum="Device" /> 2686 <pad bytes="2" /> 2687 <field type="ModifierInfo" name="mods" /> 2688 <field type="GroupInfo" name="group" /> 2689 <field type="CARD32" name="flags" mask="GestureSwipeEventFlags" /> 2690 </event> 2691 2692 <eventcopy name="GestureSwipeUpdate" number="31" ref="GestureSwipeBegin" /> 2693 <eventcopy name="GestureSwipeEnd" number="32" ref="GestureSwipeBegin" /> 2694 2695 <!-- ⋅⋅⋅ Requests that depend on events ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ --> 2696 2697 <!-- SendExtensionEvent --> 2698 <eventstruct name="EventForSend"> 2699 <allowed extension="Input" xge="false" opcode-min="0" opcode-max="16" /> 2700 <!-- We need not allow the newer events which are based on 2701 the GenericEvent extension: 2702 The wire-protocol-spec 2703 https://cgit.freedesktop.org/xorg/lib/libXi/tree/specs/encoding.xml?idĺibXi-1.7.9#n1793 2704 only allows fixed sized events, which seems 2705 to rule out GenericEvent. 2706 2707 The xlib-implementation also assumes fixed-sized events. 2708 https://cgit.freedesktop.org/xorg/lib/libXi/tree/src/XSndExEv.c?id=libXi-1.7.9#n106 2709 2710 The Xserver also allows only non-GE events: 2711 https:g/xorg/xserver/tree/Xi/sendexev.c?id=xorg-server-1.19.1#n144 2712 --> 2713 </eventstruct> 2714 2715 <request name="SendExtensionEvent" opcode="31"> 2716 <field type="WINDOW" name="destination" /> 2717 <field type="CARD8" name="device_id" /> 2718 <field type="BOOL" name="propagate" /> 2719 <field type="CARD16" name="num_classes" /> 2720 <field type="CARD8" name="num_events" /> 2721 <pad bytes="3" /> 2722 <list type="EventForSend" name="events"> 2723 <fieldref>num_events</fieldref> 2724 </list> 2725 <list type="EventClass" name="classes"> 2726 <fieldref>num_classes</fieldref> 2727 </list> 2728 </request> 2729 2730 2731 <!-- ⋅⋅⋅ Errors (v1.0) ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ --> 2732 2733 <error name="Device" number="0" /> 2734 <error name="Event" number="1" /> 2735 <error name="Mode" number="2" /> 2736 <error name="DeviceBusy" number="3" /> 2737 <error name="Class" number="4" /> 2738 2739</xcb> 2740