xtest1.xml revision a5602400
1<?xml version="1.0" encoding="UTF-8" ?> 2<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" 3 "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"> 4 5 6<article id="xtest1"> 7 8<articleinfo> 9 <title>X11 INPUT SYNTHESIS EXTENSION PROPOSAL</title> 10 <subtitle>X Consortium Standard</subtitle> 11 <releaseinfo>Version 1.0</releaseinfo> 12 <authorgroup> 13 <author> 14 <firstname>Larry</firstname><surname>Woestman</surname> 15 <affiliation><jobtitle>Member of Technical Staff</jobtitle> 16 <orgname>Hewlett Packard</orgname></affiliation> 17 </author> 18 </authorgroup> 19 <corpname>X Consortium Standard</corpname> 20 <copyright><year>1993</year><holder>X Consortium</holder></copyright> 21 <affiliation><orgname>X Consortium</orgname></affiliation> 22 <productnumber>X Version 11, Release 7</productnumber> 23 24<abstract> 25<para> 26This is a proposal for an extension to the X11 server and Xlib. 27</para> 28</abstract> 29 30</articleinfo> 31 32<sect1 id="introduction"> 33<title>Introduction</title> 34<para> 35This is a proposal for an extension to the X11 server and Xlib. 36It provides two capabilities: 37</para> 38 39<itemizedlist> 40 <listitem> 41 <para> 42It allows a client to generate user input actions in the server without 43requiring a user to be present. 44 </para> 45 </listitem> 46 <listitem> 47 <para> 48It also allows a client to control the 49handling of user input actions by the server. 50 </para> 51 </listitem> 52</itemizedlist> 53 54<para> 55The capability 56to allow a client to generate user input actions in the server 57will be used by some of the X Testing Consortium Xlib tests. 58Both capabilities will be used by the X Testing Consortium client exerciser 59program. 60These capabilities may also be useful in other programs. 61</para> 62 63<para> 64This extension requires modification to device-dependent code in the 65server. Therefore it is not a 'portable' extension as defined by the 66X11 Server Extensions document. However, the majority of the code 67and functionality of this extension will be implementation-independent. 68</para> 69 70</sect1> 71 72<sect1 id="conventions_used_in_this_document"> 73<title>Conventions Used In This Document</title> 74 75<para> 76The naming conventions used in the Xlib documentation are followed 77with these additions: 78</para> 79 80<itemizedlist> 81 <listitem> 82 <para> 83The names of all functions defined in this extension begin with 'XTest', 84with the first letter of each additional word capitalized. 85 </para> 86 </listitem> 87 <listitem> 88 <para> 89The names of the protocol request structures follow the Xlib convention 90of 'x<name>Req'. 91 </para> 92 </listitem> 93 <listitem> 94 <para> 95The names of the protocol request minor type codes follow the Xlib convention 96of 'X_<name>'. 97 </para> 98 </listitem> 99 <listitem> 100 <para> 101The names of all other constants defined in this extension begin with 'XTest', 102with the rest of the name in upper case letters. 103 </para> 104 </listitem> 105 <listitem> 106 <para> 107All constants and structures defined in this extension will have their 108values specified in the 'xtestext1.h' file (listed in section 5). 109 </para> 110 </listitem> 111</itemizedlist> 112 113</sect1> 114<sect1 id="definition_of_terms"> 115<title>Definition Of Terms</title> 116 117<sect2 id="input_actions"> 118<title>Input Actions</title> 119<para> 120Input actions are pointer movements, button presses and releases, 121and key presses and releases. They can be generated by a user or by a client 122(using functions in this extension). 123</para> 124</sect2> 125 126<sect2 id="user_input_actions"> 127<title>User Input Actions</title> 128<para> 129User input actions are input actions that are generated by the user 130moving a pointing device (typically a mouse), pressing and releasing buttons on 131the pointing device, and pressing and releasing keys on the keyboard. 132</para> 133</sect2> 134 135</sect1> 136 137<sect1 id="what_does_this_extension_do"> 138<title>What Does This Extension Do?</title> 139<para> 140Without this extension, user input actions are processed by the server, 141and are converted into normal X events that are sent to the 142appropriate client or clients. 143</para> 144 145<para> 146This extension adds the following capabilities: 147</para> 148 149<itemizedlist> 150 <listitem> 151 <para> 152Input actions may be sent from a client to the server to be 153processed just as if the user had physically performed them. 154The input actions are provided to the server in the form of X protocol 155requests defined by this extension. 156The information provided to the server includes what action should be 157performed, and how long to delay before processing the action in the server. 158 </para> 159 </listitem> 160 <listitem> 161 <para> 162User input actions may be diverted to a client before being processed by the 163server. 164The effect on the server is as if the user had performed no input action. 165The user input actions are provided to the client in the form of X events 166defined by this extension. 167The information provided to the client includes what user input action 168occurred and the delay between this user input action and the previous user 169input action. 170The client may then do anything it wishes with this information. 171 </para> 172 </listitem> 173 <listitem> 174 <para> 175User input actions may be copied, with one copy going to the server in the 176normal way, and the other copy being sent to a client as described above. 177 </para> 178 </listitem> 179</itemizedlist> 180 181</sect1> 182<sect1 id="functions_in_this_extension"> 183<title>Functions In This Extension</title> 184 185<sect2 id="high_level_functions"> 186<title>High Level Functions</title> 187 188<para> 189These functions are built on top of the low level functions described later. 190</para> 191 192<sect3 id="xtestmovepointer"> 193<title>XTestMovePointer</title> 194 195<funcsynopsis> 196<funcprototype> 197 <funcdef>int <function>XTestMovePointer</function></funcdef> 198 <paramdef>Display <parameter>*display</parameter></paramdef> 199 <paramdef>int <parameter>device_id</parameter></paramdef> 200 <paramdef>unsigned long <parameter>delay</parameter></paramdef> 201 <paramdef>int <parameter>x</parameter></paramdef> 202 <paramdef>int <parameter>y</parameter></paramdef> 203 <paramdef>unsigned int <parameter>count</parameter></paramdef> 204</funcprototype> 205</funcsynopsis> 206 207<variablelist> 208 <varlistentry> 209 <term>display</term> 210 <listitem> 211 <para> 212Specifies the connection to the X server. 213 </para> 214 </listitem> 215 </varlistentry> 216 <varlistentry> 217 <term>device_id</term> 218 <listitem> 219 <para> 220Specifies which pointer device was supposed to have caused the input action. 221This is a provision for future support of multiple (distinguishable) pointer 222devices, and should always be set to 0 for now. 223 </para> 224 </listitem> 225 </varlistentry> 226 <varlistentry> 227 <term>delay</term> 228 <listitem> 229 <para> 230Specifies the time (in milliseconds) to wait before each movement 231of the pointer. 232 </para> 233 </listitem> 234 </varlistentry> 235 <varlistentry> 236 <term>x, y</term> 237 <listitem> 238 <para> 239Specifies the x and y coordinates to move the pointer to relative to the 240root window for the specified display. 241 </para> 242 </listitem> 243 </varlistentry> 244 <varlistentry> 245 <term>count</term> 246 <listitem> 247 <para> 248Specifies the number of 'delay, x, y' triplets contained in the 249<emphasis>delay</emphasis>, 250<emphasis>x</emphasis> and 251<emphasis>y</emphasis> arrays. 252 </para> 253 </listitem> 254 </varlistentry> 255</variablelist> 256 257<para> 258The 259<function>XTestMovePointer</function> 260function creates input actions to be sent to the the server. 261The input actions will be accumulated in a request defined by this extension 262until the request is full or the XTestFlush function is called. 263They will then be sent to the server. 264When the input actions are sent to the server, the input actions will cause 265the server to think that the pointer was moved to the specified position(s), 266with the specified delay before each input action. 267</para> 268<para> 269The 270<function>XTestMovePointer</function> 271function will return -1 if there is an error, and 0 otherwise. 272</para> 273</sect3> 274 275<sect3 id="xtestpressbutton"> 276<title>XTestPressButton</title> 277 278<funcsynopsis> 279<funcprototype> 280 <funcdef>int <function>XTestPressButton</function></funcdef> 281 <paramdef>Display <parameter>*display</parameter></paramdef> 282 <paramdef>int <parameter>device_id</parameter></paramdef> 283 <paramdef>unsigned long <parameter>delay</parameter></paramdef> 284 <paramdef>unsigned int <parameter>button_number</parameter></paramdef> 285 <paramdef>unsigned int <parameter>button_action</parameter></paramdef> 286</funcprototype> 287</funcsynopsis> 288 289 290<!-- .VL 15 --> 291<variablelist> 292 <varlistentry> 293 <term>display</term> 294 <listitem> 295 <para> 296Specifies the connection to the X server. 297 </para> 298 </listitem> 299 </varlistentry> 300 <varlistentry> 301 <term>device_id</term> 302 <listitem> 303 <para> 304Specifies which button device was supposed to have caused the input action. 305This is a provision for future support of multiple (distinguishable) button 306devices, and should always be set to 0 for now. 307 </para> 308 </listitem> 309 </varlistentry> 310 <varlistentry> 311 <term>delay</term> 312 <listitem> 313 <para> 314Specifies the time (in milliseconds) to wait before the input action. 315 </para> 316 </listitem> 317 </varlistentry> 318 <varlistentry> 319 <term>button_number</term> 320 <listitem> 321 <para> 322Specifies which button is being acted upon. 323 </para> 324 </listitem> 325 </varlistentry> 326 <varlistentry> 327 <term>button_action</term> 328 <listitem> 329 <para> 330Specifies the action to be performed (one of 331<emphasis>XTestPRESS</emphasis>, 332<emphasis>XTestRELEASE</emphasis>, or 333<emphasis>XTestSTROKE</emphasis>). 334 </para> 335 </listitem> 336 </varlistentry> 337</variablelist> 338 339<para> 340The 341<function>XTestPressButton</function> 342function creates input actions to be sent to the the server. 343The input actions will be accumulated in a request defined by this extension 344until the request is full or the XTestFlush function is called. 345They will then be sent to the server. 346When the input actions are sent to the server, the input actions will cause 347the server to think that the specified button was moved as specified. 348</para> 349<para> 350The 351<function>XTestPressButton</function> 352function will return -1 if there is an error, and 0 otherwise. 353</para> 354</sect3> 355 356<sect3 id="xtestpresskey"> 357<title>XTestPressKey</title> 358 359<funcsynopsis> 360<funcprototype> 361 <funcdef>int <function>XTestPressKey</function></funcdef> 362 <paramdef>Display <parameter>*display</parameter></paramdef> 363 <paramdef>int <parameter>device_id</parameter></paramdef> 364 <paramdef>unsigned long <parameter>delay</parameter></paramdef> 365 <paramdef>unsigned int <parameter>keycode</parameter></paramdef> 366 <paramdef>unsigned int <parameter>key_action</parameter></paramdef> 367</funcprototype> 368</funcsynopsis> 369 370<!-- .VL 12 --> 371<variablelist> 372 <varlistentry> 373 <term>display</term> 374 <listitem> 375 <para> 376Specifies the connection to the X server. 377 </para> 378 </listitem> 379 </varlistentry> 380 <varlistentry> 381 <term>device_id</term> 382 <listitem> 383 <para> 384Specifies which keyboard device was supposed to have caused the input action. 385This is a provision for future support of multiple (distinguishable) keyboard 386devices, and should always be set to 0 for now. 387 </para> 388 </listitem> 389 </varlistentry> 390 <varlistentry> 391 <term>delay</term> 392 <listitem> 393 <para> 394Specifies the time (in milliseconds) to wait before the input action. 395 </para> 396 </listitem> 397 </varlistentry> 398 <varlistentry> 399 <term>keycode</term> 400 <listitem> 401 <para> 402Specifies which keycode is being acted upon. 403 </para> 404 </listitem> 405 </varlistentry> 406 <varlistentry> 407 <term>key_action</term> 408 <listitem> 409 <para> 410Specifies the action to be performed (one of 411<emphasis>XTestPRESS</emphasis>, 412<emphasis>XTestRELEASE</emphasis>, or 413<emphasis>XTestSTROKE</emphasis>). 414 </para> 415 </listitem> 416 </varlistentry> 417</variablelist> 418 419 420<para> 421The 422<function>XTestPressKey</function> 423function creates input actions to be sent to the the server. 424The input actions will be accumulated in a request defined by this extension 425until the request is full or the XTestFlush function is called. 426They will then be sent to the server. 427When the input actions are sent to the server, the input actions will cause 428the server to think that the specified key on the keyboard was moved as 429specified. 430</para> 431 432<para> 433The 434<function>XTestPressKey</function> 435function will return -1 if there is an error, and 0 otherwise. 436</para> 437 438</sect3> 439<sect3 id="xtestflush"> 440<title>XTestFlush</title> 441 442<funcsynopsis> 443<funcprototype> 444 <funcdef>int <function>XTestFlush</function></funcdef> 445 <paramdef>Display <parameter>*display</parameter></paramdef> 446</funcprototype> 447</funcsynopsis> 448 449<!-- .VL 9 --> 450<variablelist> 451 <varlistentry> 452 <term>display</term> 453 <listitem> 454 <para> 455Specifies the connection to the X server. 456 </para> 457 </listitem> 458 </varlistentry> 459</variablelist> 460 461<para> 462The 463<function>XTestFlush</function> 464will send any remaining input actions to the server. 465</para> 466 467<para> 468The 469<function>XTestFlush</function> 470function will return -1 if there is an error, and 0 otherwise. 471</para> 472 473</sect3> 474</sect2> 475 476<!-- .H 2 Low~Level~Functions --> 477<sect2 id="low_level_functions"> 478<title>Low Level Functions</title> 479 480<!-- .H 3 XTestGetInput --> 481<sect3 id="xtestgetinput"> 482<title>XTestGetInput</title> 483 484<funcsynopsis> 485<funcprototype> 486 <funcdef>int <function>XTestGetInput</function></funcdef> 487 <paramdef>Display <parameter>*display</parameter></paramdef> 488 <paramdef>int <parameter>action_handling</parameter></paramdef> 489</funcprototype> 490</funcsynopsis> 491 492 493<variablelist> 494 <varlistentry> 495 <term>display</term> 496 <listitem> 497 <para> 498Specifies the connection to the X server. 499 </para> 500 </listitem> 501 </varlistentry> 502 <varlistentry> 503 <term>action_handling</term> 504 <listitem> 505 <para> 506Specifies to the server what to do with the user input actions. (one of 5070, <emphasis>XTestPACKED_MOTION</emphasis> or 508<emphasis>XTestPACKED_ACTIONS</emphasis>; optionally 'or'ed 509with <emphasis>XTestEXCLUSIVE</emphasis>). 510 </para> 511 </listitem> 512 </varlistentry> 513</variablelist> 514 515 516<para> 517The 518<function>XTestGetInput</function> 519function tells the server to begin putting information about user input actions 520into events to be sent to the client that called this function. These events 521can be read via the Xlib <function>XNextEvent</function>fR function. 522</para> 523 524<para> 525The server assigns an event type of 526<emphasis>XTestInputActionType</emphasis> to these events 527to distinguish them from other events. 528Since the actual value of the event type may vary depending on how many 529extensions are included with an X11 implementation, 530<emphasis>XTestInputActionType</emphasis> is a variable that will be 531contained in the Xlib 532part of this extension. It may be referenced as follows: 533</para> 534 535<para> 536extern int XTestInputActionType; 537</para> 538 539<itemizedlist> 540 <listitem> 541 <para> 542An <emphasis>action_handling</emphasis> value of 0 causes the server 543to send one user input action in each 544<emphasis>XTestInputActionType</emphasis> event. 545This can sometimes cause performance problems. 546 </para> 547 </listitem> 548 <listitem> 549 <para> 550An <emphasis>action_handling</emphasis> value of 551<emphasis>XTestPACKED_ACTIONS</emphasis> causes the server 552to pack as many user input actions as possible into a 553<emphasis>XTestInputActionType</emphasis> event. 554This is needed if user input actions are happening rapidly (such as 555when the user moves the pointer) to keep performance at a reasonable level. 556 </para> 557 </listitem> 558 <listitem> 559 <para> 560An <emphasis>action_handling</emphasis> value of 561<emphasis>XTestPACKED_MOTION</emphasis> causes the server 562to pack only user input actions associated with moving the pointer. 563This allows the 564client to receive button and key motions as they happen without waiting for the 565event to fill up, while still keeping performance at a reasonable level. 566 </para> 567 </listitem> 568 <listitem> 569 <para> 570An <emphasis>action_handling</emphasis> value with 571<emphasis>XTestEXCLUSIVE</emphasis> 'or'ed in 572causes the server to send user input actions only to the client. 573The effect on the server is as if the user had performed no input actions. 574 </para> 575 </listitem> 576 <listitem> 577 <para> 578An <emphasis>action_handling</emphasis> value without 579<emphasis>XTestEXCLUSIVE</emphasis> 580causes the server to copy user input actions, sending one copy to the 581client, and handling the other copy normally (as it would if this extension 582were not installed). 583 </para> 584 </listitem> 585</itemizedlist> 586 587<para> 588There are four types of input actions that are passed from the server 589to the client. They are: 590</para> 591 592<variablelist> 593 <varlistentry> 594 <term>key/button~state~change</term> 595 <listitem> 596 <para> 597This type of input action contains the keycode of the key or button that 598changed state; 599whether the key or button is up or down, 600and the time delay between this input action and the previous input action. 601 </para> 602 </listitem> 603 </varlistentry> 604 <varlistentry> 605 <term>pointer~motions</term> 606 <listitem> 607 <para> 608This type of input action contains information about the motion of the 609pointer when the pointer has only moved a short distance. 610If the pointer has moved a long distance, 611the pointer jump input action is used. 612 </para> 613 </listitem> 614 </varlistentry> 615 <varlistentry> 616 <term>pointer~jumps</term> 617 <listitem> 618 <para> 619This type of input action contains information about the motion of the 620pointer when the pointer has moved a long distance. 621 </para> 622 </listitem> 623 </varlistentry> 624 <varlistentry> 625 <term>delays</term> 626 <listitem> 627 <para> 628This type of input action is used when the delay between input actions is too 629large to be held in the other input actions. 630 </para> 631 </listitem> 632 </varlistentry> 633</variablelist> 634 635<para> 636The 637<function>XTestGetInput</function> 638function will return -1 if there is an error, and 0 otherwise. 639</para> 640<para> 641An error code of <emphasis>BadAccess</emphasis> means that another client 642has already requested that user input actions be sent to it. 643</para> 644 645</sect3> 646 647<!-- .H 3 XTestStopInput --> 648<sect3 id="xteststopinput"> 649<title>XTestStopInput</title> 650 651<funcsynopsis> 652<funcprototype> 653 <funcdef>int <function>XTestStopInput</function></funcdef> 654 <paramdef>Display <parameter>*display</parameter></paramdef> 655</funcprototype> 656</funcsynopsis> 657 658 659 660<variablelist> 661 <varlistentry> 662 <term>display</term> 663 <listitem> 664 <para> 665Specifies the connection to the X server. 666 </para> 667 </listitem> 668 </varlistentry> 669</variablelist> 670 671<para> 672The 673<function>XTestStopInput</function> 674function tells the server to stop putting information about user input actions 675into events. 676The server will process user input actions normally (as it would 677if this extension were not in the server). 678</para> 679 680<para> 681The 682<function>XTestStopInput</function> 683function will return -1 if there is an error, and 0 otherwise. 684</para> 685 686<para> 687An error code of <emphasis>BadAccess</emphasis> means that a request 688was made to stop input when input has never been started. 689</para> 690 691</sect3> 692 693<!-- .H 3 XTestFakeInput --> 694<sect3 id="xtestfakeinput"> 695<title>XTestFakeInput</title> 696 697<funcsynopsis> 698<funcprototype> 699 <funcdef>int <function>XTestFakeInput</function></funcdef> 700 <paramdef>Display <parameter>*display</parameter></paramdef> 701 <paramdef>char <parameter>*action_list_addr</parameter></paramdef> 702 <paramdef>int <parameter>action_list_size</parameter></paramdef> 703 <paramdef>int <parameter>ack_flag</parameter></paramdef> 704</funcprototype> 705</funcsynopsis> 706 707 708<!-- .VL 18 --> 709 710<variablelist> 711 <varlistentry> 712 <term>display</term> 713 <listitem> 714 <para> 715Specifies the connection to the X server. 716 </para> 717 </listitem> 718 </varlistentry> 719 <varlistentry> 720 <term>action_list_addr</term> 721 <listitem> 722 <para> 723Specifies the address of an list of input actions to be sent to the server. 724 </para> 725 </listitem> 726 </varlistentry> 727 <varlistentry> 728 <term>action_list_size</term> 729 <listitem> 730 <para> 731Specifies the size (in bytes) of the list of input actions. 732It may be no larger than <emphasis>XTestMAX_ACTION_LIST_SIZE</emphasis> bytes. 733 </para> 734 </listitem> 735 </varlistentry> 736 <varlistentry> 737 <term>ack_flag</term> 738 <listitem> 739 <para> 740Specifies whether the server needs to send an event to indicate that its 741input action buffer is empty (one of 742<emphasis>XTestFAKE_ACK_NOT_NEEDED</emphasis> or 743<emphasis>XTestFAKE_ACK_REQUEST</emphasis>). 744 </para> 745 </listitem> 746 </varlistentry> 747</variablelist> 748 749<para> 750The 751<function>XTestFakeInput</function> 752function tells the server to take the specified user input actions and process 753them as if the user had physically performed them. 754</para> 755 756<para> 757The server can only accept a limited number of input actions at one 758time. This limit can be determined by the 759<function>XTestQueryInputSize</function> function 760in this extension. 761</para> 762 763<para> 764The client should set <emphasis>ack_flag</emphasis> to 765<emphasis>XTestFAKE_ACK_NOT_NEEDED</emphasis> 766on calls to <emphasis>XTestFakeInput</emphasis> that do not reach this limit. 767</para> 768 769<para> 770The client should set <emphasis>ack_flag</emphasis> to 771<emphasis>XTestFAKE_ACK_REQUEST</emphasis> 772on the call to <emphasis>XTestFakeInput</emphasis> that reaches this limit. 773</para> 774 775<para> 776When the server sees an <emphasis>ack_flag</emphasis> value of 777<emphasis>XTestFAKE_ACK_REQUEST</emphasis> 778it finishes processing its input action buffer, then sends an event with 779type <emphasis>XTestFakeAckType</emphasis> to the client. 780When the client reads this event, it knows that it is safe to resume 781sending input actions to the server. 782</para> 783 784<para> 785Since the actual value of the event type may vary depending on how many 786extensions are included with an X11 implementation, 787<emphasis>XTestFakeAckType</emphasis> is a variable that is contained 788in the Xlib part of this extension. It may be referenced as follows: 789</para> 790 791<para> 792extern int XTestFakeAckType; 793</para> 794 795<para> 796There are four types of input actions that are passed from the client 797to the server. They are: 798</para> 799 800<variablelist> 801 <varlistentry> 802 <term>key/button~state~change</term> 803 <listitem> 804 <para> 805This type of input action contains the keycode of the key or button that 806is to change state; 807whether the key or button is to be up or down, 808and the time to delay before changing the state of the key or button. 809 </para> 810 </listitem> 811 </varlistentry> 812 <varlistentry> 813 <term>pointer~motions</term> 814 <listitem> 815 <para> 816This type of input action contains information about the motion of the 817pointer when the pointer is to be moved a short distance, 818and the time to delay before moving the pointer. 819If the pointer is to be moved a long distance, 820the pointer jump input action must be used. 821 </para> 822 </listitem> 823 </varlistentry> 824 <varlistentry> 825 <term>pointer~jumps</term> 826 <listitem> 827 <para> 828This type of input action contains information about the motion of the 829pointer when the pointer is to be moved a long distance, 830and the time to delay before moving the pointer. 831 </para> 832 </listitem> 833 </varlistentry> 834 <varlistentry> 835 <term>delays</term> 836 <listitem> 837 <para> 838This type of input action is used when the delay between input actions is too 839large to be held in the other input actions. 840 </para> 841 </listitem> 842 </varlistentry> 843</variablelist> 844 845 846<para> 847The 848<function>XTestFakeInput</function> 849function will return -1 if there is an error, and 0 otherwise. 850</para> 851 852<para> 853An error code of \fIBadAccess\fR means that another client has already 854sent user input actions to the server, and the server has not finished 855processing the user input actions. 856</para> 857 858</sect3> 859 860<!-- .H 3 XTestQueryInputSize --> 861<sect3 id="xtestqueryinputsize"> 862<title>XTestQueryInputSize</title> 863 864<funcsynopsis> 865<funcprototype> 866 <funcdef>int <function>XTestQueryInputSize</function></funcdef> 867 <paramdef>Display <parameter>*display</parameter></paramdef> 868 <paramdef>unsigned long <parameter>size_return</parameter></paramdef> 869</funcprototype> 870</funcsynopsis> 871 872 873<variablelist> 874 <varlistentry> 875 <term>display</term> 876 <listitem> 877 <para> 878Specifies the connection to the X server. 879 </para> 880 </listitem> 881 </varlistentry> 882 <varlistentry> 883 <term>size_return</term> 884 <listitem> 885 <para> 886Returns the number of input actions that the server's input action buffer can 887hold. 888 </para> 889 </listitem> 890 </varlistentry> 891</variablelist> 892 893<para> 894The 895<function>XTestQueryInputSize</function> 896function asks the server to return the number of input actions that it can hold 897in its input action buffer in the unsigned long pointed to by \fIsize_return\fR. 898</para> 899<para> 900The 901<function>XTestQueryInputSize</function> 902function will return -1 if there is an error, and 0 otherwise. 903</para> 904</sect3> 905 906<!-- .H 3 XTestReset --> 907<sect3 id="xtestreset"> 908<title>XTestReset</title> 909 910<funcsynopsis> 911<funcprototype> 912 <funcdef>int <function>XTestReset</function></funcdef> 913 <paramdef>Display <parameter>*display</parameter></paramdef> 914</funcprototype> 915</funcsynopsis> 916 917 918<variablelist> 919 <varlistentry> 920 <term>display</term> 921 <listitem> 922 <para> 923Specifies the connection to the X server. 924 </para> 925 </listitem> 926 </varlistentry> 927</variablelist> 928 929<para> 930The 931<function>XTestReset</function> 932function tells the server to set everything having to do with this extension 933back to its initial state. After this call the server will act as if this 934extension were not installed until one of the extension functions is called by 935a client. This function is not normally needed, but is included in case a 936client wishes to clean up the server state, such as after a serious error. 937</para> 938 939<para> 940The 941<function>XTestReset</function> 942function will return -1 if there is an error, and 0 otherwise. 943</para> 944 945</sect3> 946</sect2> 947</sect1> 948 949<!-- .H 1 'xtestext1.h'~File~Listing --> 950<!-- .so xtestext1.h --> 951<!-- .TC 1 1 4 --> 952</article> 953