diff options
author | Gaetan Nadon <memsize@videotron.ca> | 2010-06-26 13:36:29 -0400 |
---|---|---|
committer | Gaetan Nadon <memsize@videotron.ca> | 2010-06-26 16:53:58 -0400 |
commit | b6a6644e371192be281ff96c59aa39f32ba64a84 (patch) | |
tree | 6e1daa905e6f78a6eba7ecf676550d96129700b8 | |
parent | bbae053ca8bce46639f74f88dc9f687fe53e7c86 (diff) |
doc: replace groff input format with docbook xml format
Initial version of xtestlib and recordlib docbook xml.
recordlib is missing and will be added later
Requires util-macros 1.10
Signed-off-by: Gaetan Nadon <memsize@videotron.ca>
-rw-r--r-- | configure.ac | 9 | ||||
-rw-r--r-- | specs/.gitignore | 6 | ||||
-rw-r--r-- | specs/Makefile.am | 71 | ||||
-rw-r--r-- | specs/macros.t | 226 | ||||
-rw-r--r-- | specs/recordlib.ms | 1409 | ||||
-rw-r--r-- | specs/xtestlib.ms | 446 | ||||
-rw-r--r-- | specs/xtestlib.xml | 468 |
7 files changed, 503 insertions, 2132 deletions
diff --git a/configure.ac b/configure.ac index 08ec061..a747151 100644 --- a/configure.ac +++ b/configure.ac @@ -27,14 +27,15 @@ AC_INIT(libXtst, 1.1.0, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg AM_INIT_AUTOMAKE([foreign dist-bzip2]) AM_MAINTAINER_MODE -# Require xorg-macros: XORG_DEFAULT_OPTIONS +# Require xorg-macros minimum of 1.10 for DocBook XML documentation m4_ifndef([XORG_MACROS_VERSION], - [m4_fatal([must install xorg-macros 1.6 or later before running autoconf/autogen])]) -XORG_MACROS_VERSION(1.6) + [m4_fatal([must install xorg-macros 1.10 or later before running autoconf/autogen])]) +XORG_MACROS_VERSION(1.10) XORG_DEFAULT_OPTIONS XORG_ENABLE_SPECS XORG_WITH_XMLTO(0.0.20) -XORG_WITH_GROFF +XORG_WITH_FOP +XORG_CHECK_SGML_DOCTOOLS(1.5) AM_CONFIG_HEADER(config.h) # Check for progs diff --git a/specs/.gitignore b/specs/.gitignore index 84d7456..12fe512 100644 --- a/specs/.gitignore +++ b/specs/.gitignore @@ -1,8 +1,6 @@ # Add & Override for this directory and it's subdirectories *.html *.ps +*.pdf *.txt -*.html.raw -*.ps.raw -*.txt.raw -/images +*.css diff --git a/specs/Makefile.am b/specs/Makefile.am index 74669fd..8ba5590 100644 --- a/specs/Makefile.am +++ b/specs/Makefile.am @@ -21,59 +21,44 @@ # DEALINGS IN THE SOFTWARE. # -EXTRA_DIST = macros.t recordlib.ms xtestlib.ms - if ENABLE_SPECS -if HAVE_GROFF_MS -doc_DATA = recordlib.txt recordlib.ps recordlib.html xtestlib.txt xtestlib.ps xtestlib.html -imagesdir = $(docdir)/images +doc_sources = xtestlib.xml +dist_doc_DATA = $(doc_sources) -CLEANFILES = $(doc_DATA) -MOSTLYCLEANFILES = index.* +if HAVE_XMLTO +doc_DATA = $(doc_sources:.xml=.html) -install-data-local: - test -z "$(imagesdir)" || $(mkdir_p) "$(DESTDIR)$(imagesdir)" - @d="$(srcdir)/images/"; \ - list=`ls $$d`; \ - for p in $$list; do \ - echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(imagesdir)/$$p'"; \ - $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(imagesdir)/$$p"; \ - done; +if HAVE_FOP +doc_DATA += $(doc_sources:.xml=.ps) $(doc_sources:.xml=.pdf) +endif -uninstall-local: - @if test -n $(DESTDIR)$(imagesdir); then \ - if test -d $(DESTDIR)$(imagesdir); then \ - list=`ls $(DESTDIR)$(imagesdir)`; \ - for p in $$list; do \ - echo " rm -f '$(DESTDIR)$(imagesdir)/$$p'"; \ - rm -f "$(DESTDIR)$(imagesdir)/$$p"; \ - done \ - fi; \ - fi; +if HAVE_XMLTO_TEXT +doc_DATA += $(doc_sources:.xml=.txt) +endif -mostlyclean-local: - @rm -fr images +if HAVE_STYLESHEETS +XMLTO_FLAGS = -m $(XSL_STYLESHEET) -# Pass version string as a troff string for substitution -GROFF_DEFS = -dxV="$(PACKAGE_STRING)" +doc_DATA += xorg.css +xorg.css: $(STYLESHEET_SRCDIR)/xorg.css + $(AM_V_GEN)cp -pf $(STYLESHEET_SRCDIR)/xorg.css $@ +endif -# -t to run through tbl -GROFF_FLAGS = -t -ms $(GROFF_DEFS) $(srcdir)/macros.t +CLEANFILES = $(doc_DATA) -SUFFIXES = .ms .ps .txt .html +SUFFIXES = .xml .ps .pdf .txt .html -.ms.ps: - -$(AM_V_GEN) $(GROFF) -Tps $(GROFF_FLAGS) $< 2> index.$@.raw > $@ - @if grep '^[^1-9.]' index.$@.raw | grep -v warning; then exit 1; \ - else test $$? -le 1; fi +.xml.txt: + $(AM_V_GEN)$(XMLTO) $(XMLTO_FLAGS) txt $< -.ms.txt: - $(AM_V_GEN) env GROFF_NO_SGR=TRUE $(GROFF) -Tutf8 $(GROFF_FLAGS) \ - $< 2> index.$@.raw > $@ +.xml.html: + $(AM_V_GEN)$(XMLTO) $(XMLTO_FLAGS) xhtml-nochunks $< -.ms.html: - $(AM_V_GEN) $(GROFF) -Thtml -P-Dimages -P-I$*-image $(GROFF_FLAGS) $< 2> index.$@.raw > $@ +.xml.pdf: + $(AM_V_GEN)$(XMLTO) $(XMLTO_FLAGS) --with-fop pdf $< -endif HAVE_GROFF_MS -endif ENABLE_SPECS +.xml.ps: + $(AM_V_GEN)$(XMLTO) $(XMLTO_FLAGS) --with-fop ps $< +endif HAVE_XMLTO +endif ENABLE_SPECS diff --git a/specs/macros.t b/specs/macros.t deleted file mode 100644 index cbc599b..0000000 --- a/specs/macros.t +++ /dev/null @@ -1,226 +0,0 @@ -.\" $Xorg: macros.t,v 1.3 2000/08/17 19:42:51 cpqbld Exp $ -.\" macros.t -- macros for X Consortium documents -.\" Revised and commented by smarks 93.12.20. -.\" -.\" global setup: set ragged right, assign string variables -.\" -.na -.ie n \{\ -.ds Q \&" -.ds U \&" -.ds - \%-- -.\} -.el \{\ -.ds Q `\h'-\w'\^'u'` -.ds U '\h'-\w'\^'u'' -.ds - \(em -.\} -.\" -.\" --- Ds --- displayed text (like .DS) with no keep -.\" .Ds is obsolete. Change to something from this table: -.\" for this use instead -.\" .Ds .ID -.\" .Ds n .LD (where "n" is a number) -.\" (Numbers don't work in these macros, so ".Ds 5" -.\" comes out the same as ".Ds 0".) -.\" -.de Ds -.nf -.\\$1D \\$2 \\$1 -.ft 1 -.ps \\n(PS -.if \\n(VS>=40 .vs \\n(VSu -.if \\n(VS<=39 .vs \\n(VSp -.. -.de D -.ID \\$1 -.. -.de 0D -.LD -.. -.\" backward compatibility for the Xt spec -.de 5D -.LD -.. -.\" -.\" --- De --- obsolete: use .DE instead -.\" -.de De -.DE -.. -.\" -.\" --- FD --- -.\" -.de FD -.LP -.KS -.TA .5i 3i -.ta .5i 3i -.nf -.. -.\" -.\" --- FN --- -.\" -.de FN -.fi -.KE -.LP -.. -.\" -.\" --- IN --- send an index entry to the stderr -.\" -.de IN -.tm \\n%:\\$1:\\$2:\\$3 -.. -.\" -.\" --- C{ --- -.\" -.de C{ -.KS -.nf -.D -.\" -.\" choose appropriate monospace font -.\" the imagen conditional, 480, -.\" may be changed to L if LB is too -.\" heavy for your eyes... -.\" -.ie "\\*(.T"480" .ft L -.el .ie "\\*(.T"300" .ft L -.el .ie "\\*(.T"202" .ft PO -.el .ie "\\*(.T"aps" .ft CW -.el .ft R -.ps \\n(PS -.ie \\n(VS>40 .vs \\n(VSu -.el .vs \\n(VSp -.. -.\" -.\" --- C} --- -.\" -.de C} -.DE -.R -.. -.\" -.\" --- Pn --- like PN, but use $2; $1 and $3 abut -.\" -.de Pn -.IN \\$2 -.ie t \\$1\fB\^\\$2\^\fR\\$3 -.el \\$1\fI\^\\$2\^\fP\\$3 -.. -.\" -.\" --- PN --- put $1 in boldface and add index entry; $2 abuts -.\" -.de PN -.IN \\$1 -.ie t \fB\^\\$1\^\fR\\$2 -.el \fI\^\\$1\^\fP\\$2 -.. -.\" -.\" --- hI --- add index entry for $1 as header file -.\" -.de hI -.IN <\\$1> -.IN Files <\\$1> -.IN Headers <\\$1> -.. -.\" -.\" --- hN --- put $1 in boldface as header and add index entry; $2 abuts -.\" -.de hN -.hI \\$1 -.ie t <\fB\\$1\fR>\\$2 -.el <\fI\\$1\fP>\\$2 -.. -.\" -.\" --- NT --- -.\" -.de NT -.br -.ne 7 -.ds NO Note -.if \\n(.$ .ds NO \\$1 -.ie n .sp -.el .sp 10p -.ce -\\*(NO -.ie n .sp -.el .sp 5p -.if '\\$1'C' .ce 99 -.if '\\$2'C' .ce 99 -.\" .QS/.QE macros don't exist in older versions of -ms -.ie \\n(GS .QS -.el \{\ -. in +5n -. ll -5n -.\} -.R -.. -.\" -.\" --- NE --- Note End (doug kraft 3/85) -.\" -.de NE -.ce 0 -.ie \\n(GS .QE -.el \{\ -. in -5n -. ll +5n -.\} -.ie n .sp -.el .sp 10p -.. -.\" -.\" --- nH --- numbered header (like NH) but with automatic TOC entry -.\" usage: .nH level "section title, preferable in quotes" -.\" -.de nH -.NH \\$1 -\\$2 -.XS -\\*(SN \\$2 -.XE -.. -.\" -.\" --- sM --- put start-marker in margin -.\" -.de sM -.KS -.sp 1 -\\h'-0.5i'\\L'-1v'\\v'1p'\\l'1v'\\v'1v-1p' -.sp -1 -.. -.\" -.\" --- eM --- put end-marker in margin -.\" -.de eM -.sp -1 -\\h'-0.5i'\\L'-1v'\\v'1v+1p'\\l'1v'\\v'-1p' -.sp 1 -.KE -.. -.\" -.\" --- YZ --- finish up; $1 is the starting page number of the TOC -.\" -.de YZ -. \" Force there to be an even number of pages, so the table of -. \" contents doesn't end up on the back of the last page in -. \" the case of duplex printing. -.if o .bp -. \" Emit a .pn directive with one plus the last page number. - \" This will be the number of the first page of the index. -.nr YZ \\n%+1 -.tm .pn \\n(YZ -. \" Issue the table of contents, setting roman numerals, -. \" and redefining the footer to use them. -.bp \\$1 -.af PN i -.EF ''\\\\\\\\n(PN'' -.OF ''\\\\\\\\n(PN'' -. \" Why all the backslashes? This string is evaluated -. \" three times: 1) during the definition of this macro, -. \" 2) when the .EF and .OF macros are expanded, and 3) -. \" when the bottom-of-page trap is invoked. Thus, -. \" eight backslashes are reduced to one in the final output. -.PX -.. diff --git a/specs/recordlib.ms b/specs/recordlib.ms deleted file mode 100644 index c9fe8e0..0000000 --- a/specs/recordlib.ms +++ /dev/null @@ -1,1409 +0,0 @@ -.\" Record Extension Library, v1.13 -.\" Use -ms and macros.t -.\" edited for DP edits and code consistency w/ core protocol/xlib 4/1/96 -.\" $Xorg: recordlib.ms,v 1.3 2000/08/17 19:42:36 cpqbld Exp $ -.\" $XdotOrg: xc/doc/specs/Xext/recordlib.ms,v 1.2 2004/04/23 18:42:18 eich Exp $ -.\" ----------------------------------------------- -.de Ip -.IP \(bu 5 -.. -.de sC \" start change (gildea). arg is issue number -.mc \s+5\(br\s0\" \" make tall enough to span paragraph skip -.if !^\\$1^^ \{\ -'sp -1 -.lt +\w'000'u+\w'\s-2\&\\$1\s0'u -.tl !!!\v'\n(.vu'\s-2\&\\$1\s0! -.lt -\w'000'u+\w'\s-2\&\\$1\s0'u -.\} -.. -.de eC \" end change -.if \\n(.u .mc \s+5\(br\s0\" ensure it appears on the last line -.mc -.. -.\" -.hw XRecord-Register-Clients XRecord-Unregister-Clients -.hw XRecord-Intercept-Data XRecord-Query-Version XRecord-Process-Replies -.hw XRecord-EndOfData -.hw XButton-Released-Event XMotion-Event -.hw XRecord-Context -.EH '''' -.OH '''' -.EF '''' -.OF '''' -.fi -.ps 11 -.nr PS 11 -\& -.sp 8 -.ce 50 -\s+3\fBX Record Extension Library\fP\s0 -.sp -\fBVersion 1.13\fP -.sp -\fBX Consortium Standard\fP -.sp -\fBX Version 11, Release 6.8\fP -.sp 6 -Martha Zimet -Network Computing Devices, Inc. -.sp 6 -edited by -Stephen Gildea -X Consortium -.ce 0 -.bp -.br -\& -.sp 13 -.ps 9 -.nr PS 9 -.fi -.LP -Copyright \(co 1994 Network Computing Devices, Inc. -.LP -Permission to use, copy, modify, distribute, and sell this -documentation for any purpose is hereby granted without fee, -provided that the above copyright notice and this permission -notice appear in all copies. Network Computing Devices, Inc. -makes no representations about the suitability for any purpose -of the information in this document. This documentation is -provided \*Qas is\*U without express or implied warranty. -.LP -Copyright \(co 1995 X Consortium -.LP -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -\*QSoftware\*U), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: -.LP -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. -.LP -THE SOFTWARE IS PROVIDED \*QAS IS\*U, WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. -.LP -Except as contained in this notice, the name of the X Consortium and -shall not be used in advertising or otherwise to promote the sale, use -or other dealings in this Software without prior written authorization -from the X Consortium. -.ps 11 -.nr PS 11 -.P1 -.nr LL 6.5i -.nr LT 6.5i -.nr FL 6.5i -.ll 6.5i -.EH '\fBX Record Extension Library, Version 1.13\fP''\fBX11, Release 6.8\fP' -.OH '\fBX11, Release 6.8\fP''\fBX Record Extension Library, Version 1.13\fP' -.bp 1 -.EF ''\fB\\\\n(PN\fP'' -.OF ''\fB\\\\n(PN\fP'' -.hy 14 - -.NH 1 -Record Extension Overview -.XS -\*(SN Record Extension Overview -.XE -.LP -The purpose -of this extension is to support the recording and reporting of all -core X protocol and arbitrary X extension protocol. This first section -gives an overview of the Record extension. The following sections -describe how to use the Record extension library. -.NH 2 -Synchronous Playback -.XS -\*(SN Synchronous Playback -.XE -.LP -Environment information is generally provided to an X-based playback -mechanism, which might use the XTest extension to synthesize input events. -This synchronization information defines the X state prior to -event synthesis (for example, location of the cursor, window locations and -sizes, installed colormap, window manager running, and so on) and the -consequences that occur after the playback mechanism synthesizes -the event. If the user moves the mouse into the icon window and -presses and releases a mouse button, the device events -.PN MotionNotify , -.PN ButtonPress , -and -.PN ButtonRelease -are generated by the X server. -Because -X follows an event-driven model, there are consequences that -follow from -the user actions, or device events, that are in the form of X protocol. -As a result of the previous user actions, the client could -generate requests such as -.PN ImageText8 -and -.PN PolyLine -to the X server, -or the X server could send non-device events such as -.PN Expose -and -.PN MapNotify -to the client window. Both the requests and non-device events that -result from user actions are known as \fIconsequences\fP, which -can be used as a synchronization, or control point, during playback. -That is, the playback mechanism does not generate a specific synthesized -event until its matching synchronization condition occurs (for example, -the window is mapped or unmapped, the cursor changes, a text string -displays, and so on) -.LP -Because -it cannot be predicted what synchronization information is -required during playback, the Record extension makes no assumptions -about the intended use of the recorded data. Facilities exist to -record any core X protocol or X extension protocol. -Therefore, Record does not enforce a specific synchronization -methodology. -.NH 2 -Design Approach -.XS -\*(SN Design Approach -.XE -.LP -The design approach of the extension is to record core X protocol -and arbitrary X extension protocol entirely within the X server -itself. When the extension has been requested to record specific -protocol by one or more recording clients, the protocol data is formatted -and returned to the recording clients. The extension provides a mechanism -for capturing all events, including input device events that do not go to any -clients. -.NH 2 -Record Clients -.XS -\*(SN Record Clients -.XE -.LP -The recommended -communication model for a Record application is to open two -connections to the server\*-one connection for recording control -and one connection for reading recorded protocol data. -.LP -Information about recording (for example, what clients to record, -what protocol to record for each client, and so on) is stored in -resources called \fIrecord contexts\fP\^ -(type -.PN XRecordContext ). -Most Record extension functions take a record context as an argument. -Although in theory it is possible -to share record contexts between applications, -it is expected that -applications will use their own context when performing recording -operations. -.LP -A client that wishes to record X protocol does so through the library -functions defined in -section 3 \*QLibrary Extension Requests\*U. A typical sequence -of requests that a client would make is as follows: -.Ip -.PN XRecordQueryVersion -\- query the extension protocol version. -.Ip -.PN XRecordCreateContext -\- request that the server create a record context -for access by this client, and express interest in clients and protocol -to be recorded. This request returns an -.PN XRecordContext , -which is an XID that is used -by most other extension requests to identify the specified context. -.Ip -.PN XRecordEnableContext -\- begin the recording and reporting of protocol -data. -.Ip -.PN XRecordDisableContext -\- end the recording and reporting of protocol data. -.Ip -.PN XRecordFreeContext -\- free the record context. -.LP -The header for this library is -.Pn < X11/extensions/record.h >. -All identifiers defined in the interface are supplied by this header -and are prefixed with \*QXRecord\*U. The -.PN Xtst -library contains the -.PN XRecord -functions. -.NH 1 -Common Arguments -.XS -\*(SN What Is Recorded -.XE -.LP -The Record extension functions -.PN XRecordCreateContext -and -.PN XRecordRegisterClients -allow applications to specify the following: -.Ip -Individual clients or sets of clients to record -.Ip -Ranges of core X protocol and X extension protocol to record for -each client -.LP -Protocol in the ranges specified by the recording client -will be recorded by the server. The device_events -protocol type can be specified by a recording -client although it may not be sent to a recorded client. -The device_events type differs from delivered_events, -which also can be specified by a recording client; -delivered_events are actually delivered to one or more clients. -These event types are discussed in section 2.3 \*QProtocol Ranges\*U. -.LP -The Record extension functions -.PN XRecordCreateContext -and -.PN XRecordRegisterClients -have the common arguments -datum_flags, -clients, and ranges, which specify -whether server time and/or client -sequence number should precede protocol elements, -the clients or client set to -record, and the protocol ranges to record, respectively. -These are discussed in the following sections. -.NH 2 -Datum Flags -.LP -The datum_flags argument is a set of flags OR'ed together to -specify options for the record context. Specify zero to disable all -the options. -.LP -The -.PN XRecordFromServerTime -flag specifies that -.PN XRecordInterceptData -structures with a category of -.PN XRecordFromServer -will have a server_time field specific to each -protocol element. -.LP -The -.PN XRecordFromClientTime -flag specifies that -.PN XRecordInterceptData -structures with a category of -.PN XRecordFromClient -will have a server_time field specific to each protocol element. -.LP -The -.PN XRecordFromClientSequence -flag specifies that -.PN XRecordInterceptData -structures with a category of -.PN XRecordFromClient -or -.PN XRecordClientDied -will have a valid client_seq field. -.NH 2 -Selecting Clients -.LP -The clients argument is a pointer to an array of -.PN XRecordClientSpec . -.PN XRecordClientSpec -is an integral type that holds a resource ID, -a client resource ID base, or one -of the \fIclient set\fP constants defined below. -.LP -Duplicate -elements in the array are ignored by the functions, and if any element -in the array is not valid, a -.PN "BadMatch" -error results. -A resource ID references the client that created that resource. -The client set may be one of the following constants: -.PN XRecordCurrentClients , -.PN XRecordFutureClients , -or -.PN XRecordAllClients . -.LP -If the element in the array identifies a particular client, protocol -specified by the ranges argument will be recorded by the server. -The recorded protocol data will not be returned to the recording client -until the record context has been enabled. This is described in section -3.4 \*QData Transfer\*U. -.LP -If the element is -.PN XRecordCurrentClients , -the protocol ranges specified by the -ranges argument, except for device_events, are associated with -each current client connection. If the element is -.PN XRecordFutureClients , -the protocol ranges specified by the ranges argument are associated -with each new client connection. If the element is -.PN XRecordAllClients , -the protocol ranges specified by the ranges argument are associated -with each current client connection and with each new client connection. -.LP -When the context is enabled, the data connection is unregistered if it -was registered. -If the context is enabled, -.PN XRecordCurrentClients -and -.PN XRecordAllClients -silently exclude the recording data connection. -It is an error to explicitly register the data connection. -.NH 2 -Protocol Ranges -.LP -The functions -.PN XRecordCreateContext -and -.PN XRecordRegisterClients -have another common argument, ranges, -which is an array of pointers to -.PN XRecordRange -structures. Each structure contains ranges of numeric values for each -of the protocol types that can be specified and recorded individually -by the Record extension. -An -.PN XRecordRange -structure must be allocated -by the Record library using the -.PN XRecordAllocRange -function. -.LP -The -.PN XRecordRange -typedef is a structure with the following members: -.LP -.sM -.Ds 0 -.TA .5i 3.0i -.ta .5i 3.0i -XRecordRange: - XRecordRange8 core_requests /* core X requests */ - XRecordRange8 core_replies /* core X replies */ - XRecordExtRange ext_requests /* extension requests */ - XRecordExtRange ext_replies /* extension replies */ - XRecordRange8 delivered_events /* delivered core and ext events */ - XRecordRange8 device_events /* all core and ext device events */ - XRecordRange8 errors /* core X and X ext errors */ - Bool client_started /* connection setup reply from server */ - Bool client_died /* notification of client disconnect */ -.De -.LP -.eM -The types used in -.PN XRecordRange -members are defined as follows. -The -.PN XRecordRange8 -typedef is a structure with the following members: -.LP -.sM -.Ds 0 -.TA .5i -.ta .5i -XRecordRange8: - unsigned char first - unsigned char last -.De -.LP -.eM -The -.PN XRecordRange16 -typedef is a structure with the following members: -.LP -.sM -.Ds 0 -.TA .5i -.ta .5i -XRecordRange16: - unsigned short first - unsigned short last -.De -.LP -.eM -The -.PN XRecordExtRange -typedef is a structure with the following members: -.LP -.sM -.Ds 0 -.TA .5i -.ta .5i -XRecordExtRange: - XRecordRange8 ext_major - XRecordRange16 ext_minor -.De -.LP -.eM -If any of the values specified in -.PN XRecordRange -is invalid, a -.PN "BadValue" -error results. -.LP -The core_requests member specifies the range of core X protocol -requests to record. Core X protocol requests with a major opcode -that is between first and last, inclusive, will be -recorded. A -.PN "BadValue" -error results -if the value of first is greater than the value of last. -If the values of both first and last are zero, no core -X protocol requests will be recorded. -.LP -The core_replies member specifies the range of replies resulting -from core X protocol requests to record. Replies that result from -core X protocol requests with a major opcode between first -and last, inclusive, will be recorded. A -.PN "BadValue" -error results -if the value of first is greater than the value of last. -If the values of both first and last are zero, -no core X protocol replies will be recorded. -.LP -The ext_requests member specifies the range of X extension -requests to record. X extension requests with a major opcode -between ext_major.first and ext_major.last, and with a -minor opcode -between ext_minor.first and ext_minor.last, inclusive, will be -recorded. A -.PN "BadValue" -error results -if the value of ext_major.first is greater than the value of -ext_major.last or if the value of ext_minor.first is -greater than the value of ext_minor.last. If the values of both -ext_major.first -and ext_major.last are zero, -no X extension requests will be recorded. -.LP -The ext_replies member specifies the range of replies resulting -from X extension requests to record. Replies that result from an X -extension request with a major opcode between -ext_major.first and -ext_major.last, and a minor opcode that is between -ext_minor.first and ext_minor.last will be recorded. A -.PN "BadValue" -error results -if the value of ext_major.first is greater than the value of -ext_major.last or if the value of ext_minor.first is greater than -the value of ext_minor.last. If the values of both -ext_major.first and ext_major.last -are zero, no X extension -replies will be recorded. -.LP -The delivered_events member specifies the range of both core -X events and X extension events to record. These events are -delivered to at least one client. Core X events and X extension events -with a code value between first and -last inclusive will be recorded. A -.PN "BadValue" -error results -if the value of first -is greater than the value of last. If the values of first -and last are zero, no events will be recorded. -.LP -The device_events member specifies the range of -both core X device events and X extension device events -to record. These events may or may not be delivered to a client. -Core X device events and X extension device events with a code value -between first and last inclusive that are not delivered to any -clients will be recorded. A -.PN "BadValue" -error results -if the value of first -is greater than the value of last. A -.PN "BadValue" -error results -if first -is less than two or last is less than two, except that if -first and last are zero, no events will be -recorded. -.LP -The errors member specifies the range of both core X errors and X -extension errors to record. Core X errors and X extension errors with -a code value between first and last inclusive will be -recorded. A -.PN "BadValue" -error results -if the value of first -is greater than the value of last. If the values of first and -last are zero, no errors will be recorded. -.LP -A value of -.PN True -for the client_started member specifies the -connection setup reply from the server to new clients. -If -.PN False , -the connection setup reply is -not specified by this -.PN XRecordRange . -.LP -A value of -.PN True -for the client_died member specifies -notification when a client disconnects. -If -.PN False , -notification when a client disconnects is -not specified by this -.PN XRecordRange . -.NH 1 -Library Extension Requests -.XS -\*(SN Library Extension Requests -.XE -.LP -Recording operations are accessed by programs through the use of -new protocol requests. The following functions are provided as extensions -to Xlib. An Xlib error results if -an extension request is made to an X server that does not support the -Record extension. Note that any of the extension protocol requests may generate -.PN BadAlloc -or -.PN BadLength -errors. -.NH 2 -Query Extension Version -.XS -\*(SN Query Extension Version -.XE -.LP -An application uses the -.PN XRecordQueryVersion -function to determine -the version of the Record extension protocol supported by an X server. -.sM -.FD 0 -Status -XRecordQueryVersion\^(Display *\fIdisplay\fP, int *\fIcmajor_return\fP, \ -int *\fIcminor_return\fP) -.FN -.IP \fIdisplay\fP 1i -Specifies the connection to the X server. -.IP "\fIcmajor_return\fP" 1i -Returns the extension protocol major version in use. -.IP "\fIcminor_return\fP" 1i -Returns the extension protocol minor version in use. -.LP -.eM -The -.PN XRecordQueryVersion -function returns the major and minor -protocol version numbers supported by the server. -.PN XRecordQueryVersion -returns nonzero (success) only if the returned version numbers are -common to both the library and the -server; otherwise, it returns zero. -.NH 2 -Create and Modify Context -.XS -\*(SN Create and Modify Context -.XE -.LP -An application uses the -.PN XRecordCreateContext -function to create a -record context. At the time the record context is -created by the recording client, the clients to be recorded and the -protocol to record for each client may be specified. -.LP -.sM -.FD 0 -XRecordContext -XRecordCreateContext\^(Display *\fIdisplay\fP, int \fIdatum_flags\fP, \ -XRecordClientSpec *\fIclients\fP, int \fInclients\fP, -.br - XRecordRange **\fIranges\fP, int \fInranges\fP) -.FN -.IP "\fIdisplay\fP" 1i -Specifies the connection to the X server. -.IP \fIdatum_flags\fP 1i -Specifies whether detailed time or sequence info should be sent. -.IP "\fIclients\fP" 1i -Specifies the clients to record. -.IP "\fInclients\fP" 1i -Specifies the number of clients. -.IP "\fIranges\fP" 1i -Specifies the protocol ranges to record. -.IP "\fInranges\fP" 1i -Specifies the number of protocol ranges. -.LP -.eM -The -.PN XRecordCreateContext -function creates a record context and returns an -.PN XRecordContext , -which is then used -in the other Record library calls. This request is typically -executed by the recording client over its control connection to -the X server. -The datum_flags specifies whether server time and/or client -sequence number should precede protocol elements recorded by context -(see section 2.1). -When a clients element identifies -a particular client, the client is added to the context and -the protocol to record for that client is set to the union of -all ranges. When a clients element is -.PN XRecordCurrentClients , -.PN XRecordFutureClients , -or -.PN XRecordAllClients , -the actions described in section 2.2 \*QSelecting Clients\*U -are performed. -.LP -.PN XRecordCreateContext -returns zero if the request failed. -.PN XRecordCreateContext -can generate -.PN BadIDChoice , -.PN BadMatch , -and -.PN BadValue -errors. -.LP -The ranges argument is an -.PN XRecordRange * -array, that is, an array -of pointers. The structures the elements point to shall be allocated -by calling -.PN XRecordAllocRange . -.LP -.sM -.FD 0 -XRecordRange * -XRecordAllocRange\^(void) -.FN -.LP -.eM -The -.PN XRecordAllocRange -function -allocates and returns an -.PN XRecordRange -structure. -The structure is initialized to specify no protocol. -The function returns NULL if the structure allocation fails. -The application can free the structure by calling -.PN XFree . -.NH 3 -Additions -.LP -An application uses the -.PN XRecordRegisterClients -function to modify a previously created -record context, by adding clients or modifying the recorded protocol, -typically over its control connection to the X server. -.LP -.sM -.FD 0 -Status -XRecordRegisterClients\^(Display *\fIdisplay\fP, XRecordContext \fIcontext\fP, \ -int \fIdatum_flags\fP, -.br - XRecordClientSpec *\fIclients\fP, int \fInclients\fP, \ -XRecordRange **\fIranges\fP, int \fInranges\fP) -.FN -.IP "\fIdisplay\fP " 1i -Specifies the connection to the X server. -.IP "\fIcontext\fP" 1i -Specifies the record context to modify. -.IP \fIdatum_flags\fP 1i -Specifies whether detailed time or sequence info should be sent. -.IP "\fIclients\fP" 1i -Specifies the clients to record. -.IP "\fInclients\fP" 1i -Specifies the number of clients. -.IP "\fIranges\fP" 1i -Specifies the protocol ranges to record. -.IP "\fInranges\fP" 1i -Specifies the number of protocol ranges. -.LP -.eM -The datum_flags specifies whether server time and/or client -sequence number should precede protocol elements -for all clients -recorded by context -(see section 2.1). -When a clients element identifies a particular client and the -client is not yet -targeted for recording in the given context, -the client is added to the set of clients to record, and the protocol -to record for that client is set to the union of all ranges. -When the client is -already targeted for recording, the protocol to record for that client -is set to the union of all ranges. When the element is -.PN XRecordCurrentClients , -.PN XRecordFutureClients , -or -.PN XRecordAllClients , -the actions described -in section 2.2 \*QSelecting Clients\*U -are performed. -.LP -.PN XRecordRegisterClients -returns zero if the request failed; otherwise, it -returns nonzero. -.LP -.PN XRecordRegisterClients -can generate -.PN XRecordBadContext , -.PN BadMatch , -and -.PN BadValue -errors. -.NH 3 -Deletions -.LP -An application uses -the -.PN XRecordUnregisterClients -function to delete clients from a -previously created -record context, typically over its control connection to the X server. -.LP -.sM -.FD 0 -Status -XRecordUnregisterClients\^(Display *\fIdisplay\fP, XRecordContext \fIcontext\fP, \ -RecordClientSpec *\fIclients\fP, -.br - int \fInclients\fP\^) -.FN -.IP "\fIdisplay\fP " 1i -Specifies the connection to the X server. -.IP "\fIcontext\fP" 1i -Specifies the record context to modify. -.IP "\fIclients\fP" 1i -Specifies the clients to stop recording. -.IP "\fInclients\fP" 1i -Specifies the number of clients. -.LP -.eM -When an element in clients identifies a particular client, and the -specified client is already targeted for recording in the given -context, the client and the set of protocol to record for that -client are deleted from the context. If the specified client is not -targeted for recording, then no action is performed. -.LP -When the element is -.PN XRecordCurrentClients , -all clients currently targeted -for recording in context and their corresponding sets of -protocol to record are deleted from context. -.LP -When the item is -.PN XRecordFutureClients , -any future client connections will -not automatically be targeted for recording in context. -.LP -When the element is -.PN XRecordAllClients , -all clients currently targeted -for recording in context and their corresponding sets of -protocol to record are deleted from context. Any future -client connections will not automatically be targeted for recording -in context. -.LP -.PN XRecordUnregisterClients -returns zero if the request failed; otherwise, -it returns nonzero. -.LP -.PN XRecordUnregisterClients -can generate -.PN XRecordBadContext , -.PN BadMatch , -and -.PN BadValue -errors. -.NH 2 -Query Context State -.XS -\*(SN Query Context State -.XE -.LP -An application uses the -.PN XRecordGetContext -function to query the -current state of a record context, typically over its control connection -to the X server. -.LP -.sM -.FD 0 -Status -XRecordGetContext\^(Display *\fIdisplay\fP, XRecordContext \fIcontext\fP, \ - XRecordState **\fIstate_return\fP) -.FN -.IP \fIdisplay\fP 1i -Specifies the connection to the X server. -.IP "\fIcontext\fP" 1i -Specifies the record context to query. -.IP "\fIstate_return\fP" 1i -Specifies the address of a variable into which the function stores a -pointer to the current state of the record context. -.LP -.eM -The -.PN XRecordState -typedef returned by -.PN XRecordGetContext -is a structure -with the following members: -.LP -.sM -.Ds 0 -.TA .5i -.ta .5i -XRecordState: - Bool enabled - int datum_flags - unsigned long nclients - XRecordClientInfo **client_info -.De -.LP -.eM -The enabled member is set to the state of data transfer and is -.PN True -when the recording client has asked that recorded data be sent; -otherwise it is -.PN False . -The datum_flags member is set to the value of these flags for -this context. -The nclients member is set to the -number of -.PN XRecordClientInfo -structures returned. The client_info member -is an array of pointers to -.PN XRecordClientInfo -structures that contain -the protocol -to record for each targeted client. -The -.PN XRecordClientInfo -typedef is a structure with the following members: -.LP -.sM -.Ds 0 -.TA .5i -.ta .5i -XRecordClientInfo: - XRecordClientSpec client - unsigned long nranges - XRecordRange **ranges -.De -.LP -.eM -The client member either identifies a client targeted for recording -or is set to -.PN XRecordFutureClients -to describe how future clients -will be automatically targeted for recording. -The nranges member is set to the number of protocol -ranges to be recorded for the specified client. The ranges member -is an array of pointers to -.PN XRecordRange -structures, which specify the -protocol ranges to record. -.LP -.PN XRecordGetContext -returns zero if the request failed; otherwise, it -returns nonzero. -The context argument must specify a valid -.PN XRecordContext -or a -.PN XRecordBadContext -error results. -.LP -Recording clients should use the -.PN XRecordFreeState -function to free the state data returned by -.PN XRecordGetContext . -.LP -.sM -.FD 0 -void -XRecordFreeState\^(XRecordState *\fIstate\fP) -.FN -.IP "\fIstate\fP" 1i -Specifies the structure that is to be freed. -.LP -.eM -.PN XRecordFreeState -frees the data pointed to by state. -If the argument does not match an -.PN XRecordState -pointer -returned from a successful call to -.PN XRecordGetContext , -or if -.PN XRecordFreeState -has already been -called with it, the behavior is undefined. -.NH 2 -Data Transfer -.XS -\*(SN Data Transfer -.XE -.LP -An application uses the -.PN XRecordEnableContext -and -.PN XRecordDisableContext -functions to change the state of data transfer -between the X server and the recording client. These functions allow -the application to start recording and reporting of protocol data -and to stop recording and reporting of protocol data, respectively. -.NH 3 -Enable Context -.XS -\*(SN Enable Context -.XE -.LP -To direct the X server to record and report protocol, a program -uses -.PN XRecordEnableContext , -typically over its data connection to the X -server. The reporting of recorded protocol back to the recording client -is handled by the following data structures and procedure definitions. -Each recorded protocol element is reported -to the recording client through an -.PN XRecordInterceptData -typedef, -a structure with the following members: -.LP -.sM -.Ds 0 -.TA .5i -.ta .25i -XRecordInterceptData: - XID id_base - Time server_time - unsigned long client_seq - int category - Bool client_swapped - unsigned char *data - unsigned long data_len -.De -.LP -.eM -The id_base member is set to the resource identifier base sent to the -client in the connection setup reply and therefore identifies the client -being recorded, except when the recorded protocol data is a device -event that may have not been delivered to a client. In this case, -id_base is set to zero. The server_time member -is set to the time of the server when the protocol was recorded. -It is the time that was attached to this protocol element in the reply, -if so specified by datum_flags, -or else the time from the header of the reply that contained -this protocol element. -The client_seq member is the sequence number of the recorded -client's most recent request processed by the server at the time this -protocol element was recorded, if this information were included in the -recorded data; otherwise client_seq is 0. -The category member is set to one of the following values: -.PN XRecordStartOfData , -.PN XRecordFromServer , -.PN XRecordFromClient , -.PN XRecordClientStarted , -.PN XRecordClientDied , -or -.PN XRecordEndOfData . -.PN XRecordStartOfData -is immediately sent as the first reply to confirm -that the context is enabled. -.PN XRecordFromClient -indicates the protocol -data is from the recorded client to the server (requests). -.PN XRecordFromServer -indicates the protocol data is from the server to the recorded client -(replies, errors, events, or device events). -.PN XRecordClientStarted -indicates that the protocol data is the -connection setup reply from the server. -.PN XRecordClientDied -indicates that the recorded -client has closed its connection -to the X server; there is no protocol data. -.PN XRecordEndOfData -indicates that the context has been disabled and that -this is the last datum. It does not correspond to any protocol or -state change in a recorded client. There is no protocol data. -.LP -The client_swapped member is set to -.PN True -if the byte order of the client being recorded is swapped relative to -the recording client; otherwise, it is set to -.PN False . -All -recorded protocol data is returned in the byte order of the recorded -client. Therefore, recording clients are responsible for all byte swapping, -if required. -Device events are in the byte order of the -recording client. -For replies of category -.PN XRecordStartOfData -and -.PN XRecordEndOfData , -client_swapped is set -according -to the byte order of the server relative to the recording client. -.LP -The data member contains the actual recorded -protocol data. -When category is set to -.PN XRecordStartOfData , -.PN XRecordClientDied , -or -.PN XRecordEndOfData , -no protocol -data are contained in data. -.\" -.LP -.\" copied exactly from the protocol document -For the core X events -.PN KeyPress , -.PN KeyRelease , -.PN ButtonPress , -and -.PN ButtonRelease , -the fields of a device event that contain -valid information are time and detail. -For the core X event -.PN MotionNotify , -the fields of a device event that contain -valid information are time, root, -root-x and root-y. -The time field refers to the time the event was generated by the -device. -.LP -For the extension input device events -.PN DeviceKeyPress , -.PN DeviceKeyRelease , -.PN DeviceButtonPress , -and -.PN DeviceButtonRelease , -the fields of a device event that contain valid information are -device, time, and detail. -For -.PN DeviceMotionNotify , -the valid device event fields are -device and time. -For the extension input device events -.PN ProximityIn -and -.PN ProximityOut , -the fields of a device event that contain valid -information are device and time. -For the extension input device event -.PN DeviceValuator , -the fields of a device event that contain valid information are -device, -num_valuators, first_valuator, and valuators. -The time field refers to the time the event was generated by the -device. -.\" -.LP -The data_len member is set to the -length of the actual recorded protocol data in 4-byte units. -.LP -When the context has been enabled, protocol data the recording client has -previously expressed interest in is recorded and returned to the -recording client via multiple replies. -Because -the X server batches -the recorded data, more than one protocol element may be contained -in the same reply packet. -When a reply is received, a procedure of type -.PN XRecordInterceptProc -is -called for each protocol -element in the reply. -.LP -.sM -.FD 0 -typedef void\^(*XRecordInterceptProc) -.br - (XPointer \fIclosure\fP, XRecordInterceptData *\fIrecorded_data\fP) -.FN -.IP "\fIclosure\fP" 1i -Pointer that was passed in when the context was enabled. -.IP "\fIrecorded_data\fP" 1i -A protocol element recorded by the server extension. -.LP -.eM -This callback -may use the control display connection (or any display connection -other than the data connection). -.LP -Recording clients should use the -.PN XRecordFreeData -function -to free the -.PN XRecordInterceptData -structure. -.LP -.sM -.FD 0 -Status -XRecordEnableContext\^(Display *\fIdisplay\fP, XRecordContext \fIcontext\fP, \ -XRecordInterceptProc \fIcallback\fP, -.br - XPointer \fIclosure\fP) -.FN -.IP "\fIdisplay\fP" 1i -Specifies the connection to the X server. -.IP "\fIcontext\fP" 1i -Specifies the record context to enable. -.IP "\fIcallback\fP" 1i -Specifies the function to be called for each protocol element received. -.IP "\fIclosure\fP" 1i -Specifies data passed to \fIcallback.\fP -.LP -.eM -.PN XRecordEnableContext -enables data transfer between the recording client and -the X server. All core and extension protocol received from or sent to -targeted clients that the recording client has expressed -interest in will be recorded and reported to the recording client. -.LP -.PN XRecordEnableContext -returns zero if the request failed; otherwise, it -returns nonzero. The context argument must specify a valid -.PN XRecordContext -or a -.PN XRecordBadContext -error results. The error -.PN BadMatch -results when data transfer is already enabled -on the given context. -.NH 3 -Enable Context Asynchronously -.XS -\*(SN Enable Context Asynchronously -.XE -.LP -Because -.PN XRecordEnableContext -does not return until -.PN XRecordDisableContext -is executed on the control connection, a nonblocking interface in -addition to -.PN XRecordEnableContext -is provided. This interface also -enables data transfer; however, it does not block. -.LP -This interface is defined as follows: -.LP -.sM -.FD 0 -Status -XRecordEnableContextAsync\^(Display *\fIdisplay\fP, XRecordContext \fIcontext\fP, -.br - XRecordInterceptProc \fIcallback\fP, XPointer \fIclosure\fP) -.FN -.IP \fIdisplay\fP 1i -Specifies the connection to the X server. -.IP \fIcontext\fP 1i -Specifies the record context to enable. -.IP \fIcallback\fP 1i -Specifies the function to be called for each protocol element received. -.IP \fIclosure\fP 1i -Data passed to \fIcallback\fP. -.LP -.eM -.PN XRecordEnableContextAsync -enables data transfer between the recording -client and the X server just as -.PN XRecordEnableContext -does. -Unlike -.PN XRecordEnableContext , -it does not wait for the context to be disabled -before returning; -.PN XRecordEnableContextAsync -returns as soon as the -.PN XRecordStartOfData -reply has been received and processed. -.LP -.PN XRecordEnableContextAsync -returns zero if it could not allocate the -necessary memory and nonzero if it sent the request successfully to -the server. The context argument must specify a valid -.PN XRecordContext -or a -.PN XRecordBadContext -error results. The error -.PN BadMatch -results when data transfer is already enabled. -.LP -Each time it reads data from the server connection, Xlib will check -for incoming replies and call \fIcallback\fP as necessary. The -application may direct Xlib explicitly to check for Record data with -the -.PN XRecordProcessReplies -function. -.LP -.sM -.FD 0 -void -XRecordProcessReplies\^(Display *\fIdisplay\fP) -.FN -.IP \fIdisplay\fP 11 -Specifies the connection to the X server. -.LP -.eM -.PN XRecordProcessReplies -will check for any replies that have not yet -been processed by the application. The asynchronous callback will be called -as appropriate. -.PN XRecordProcessReplies -returns when all immediately -available replies have been processed. It does not block. -.LP -.sp -To free the data passed to the -.PN XRecordInterceptProc -callback, -use -.PN XRecordFreeData . -.LP -.sM -.FD 0 -void -XRecordFreeData\^(XRecordInterceptData *\fIdata\fP) -.FN -.IP "\fIdata\fP" 1i -Specifies the structure that is to be freed. -.LP -.eM -.PN XRecordFreeData -frees the data pointed to by data. -If the argument does not match an -.PN XRecordInterceptData -pointer earlier -passed to an -.PN XRecordInterceptProc -callback or if -.PN XRecordFreeData -has -already been called with it, the behavior is undefined. -.NH 3 -Disable Context -.XS -\*(SN Disable Context -.XE -.LP -To direct the X server to halt the reporting of recorded protocol, the -program executes -.PN XRecordDisableContext , -typically over its -control connection to the X server. -.LP -.sM -.FD 0 -Status -XRecordDisableContext\^(Display *\fIdisplay\fP, XRecordContext \fIcontext\fP) -.FN -.IP "\fIdisplay\fP" 1i -Specifies the connection to the X server. -.IP "\fIcontext\fP" 1i -Specifies the record context to disable. -.LP -.eM -The -.PN XRecordDisableContext -function disables context, stopping -all recording over its data connection. -Any complete protocol elements for context -that were buffered in the server will be sent to the -recording client rather than being discarded. -If a program attempts to disable an -.PN XRecordContext -that has not been enabled, no action will take place. -.LP -.PN XRecordDisableContext -returns zero if the request failed; otherwise, it -returns nonzero. The context argument must specify a valid -.PN XRecordContext -or an -.PN XRecordBadContext -error results. -.NH 2 -ID Base Mask -.XS -\*(SN ID Base Mask -.XE -.LP -To determine the mask the server uses for the client ID base, use -.PN XRecordIdBaseMask . -.LP -.sM -.FD 0 -XID -XRecordIdBaseMask\^(Display *\fIdisplay\fP) -.FN -.IP "\fIdisplay\fP" 1i -Specifies the connection to the X server. -.LP -.eM -The -.PN XRecordIdBaseMask -function returns the resource ID mask passed to the client by the -server at connection setup. -.NH 2 -Free Context -.XS -\*(SN Free Context -.XE -.LP -Before terminating, the program should request that the server -free the record context. This is done with the -.PN XRecordFreeContext -function, typically over the record client's control connection -to the X server. -.LP -.sM -.FD 0 -Status -XRecordFreeContext\^(Display *\fIdisplay\fP, XRecordContext \fIcontext\fP) -.FN -.IP "\fIdisplay\fP" 1i -Specifies the connection to the X server. -.IP "\fIcontext\fP" 1i -Specifies the record context to free. -.LP -.eM -The -.PN XRecordFreeContext -function frees the given context for the -requesting client. Freeing a record context releases the clients -targeted for recording and their respective protocol ranges to -record. If protocol data is being reported to the recording client, -generally over the data connection to the X server, the reporting -ceases as if -.PN XRecordDisableContext -had been called on the given context. -When a program terminates without freeing -its record context, the X server will automatically free that context -on behalf of the client. -.LP -.PN XRecordFreeContext -returns zero if the request failed; otherwise,it -returns nonzero. The context argument must specify a valid -.PN XRecordContext -or a -.PN XRecordBadContext -error results. -.\" -.\" Local Variables: -.\" time-stamp-start: "^\\.ds Ts " -.\" time-stamp-end: "\\\\\"" -.\" time-stamp-format: "%d %3b %y (%H:%02M)" -.\" End: diff --git a/specs/xtestlib.ms b/specs/xtestlib.ms deleted file mode 100644 index 9ccdfef..0000000 --- a/specs/xtestlib.ms +++ /dev/null @@ -1,446 +0,0 @@ -.\" Use -ms and macros.t -.\" edited for DP edits and code consistency w/ core protocol/xlib 4/2/96 -.\" $Xorg: xtestlib.ms,v 1.3 2000/08/17 19:42:37 cpqbld Exp $ -.de lP -.ne 8 -.LP -.. -.EH '''' -.OH '''' -.EF '''' -.OF '''' -.ps 10 -.nr PS 10 -\& -.sp 8 -.ce 1 -\s+2\fBXTEST Extension Library\fP\s-2 -.sp 3 -.ce 3 -Version 2.2 -X Consortium Standard -.sp 6 -.ce 4 -\s-1Kieron Drake -.sp 6p -UniSoft Ltd.\s+1 -.bp -.sp 10 -.ps 9 -.nr PS 9 -.sp 8 -.lP -Copyright \(co 1992 by UniSoft Group Ltd. -.lP -Permission to use, copy, modify, and distribute this documentation for any -purpose and without fee is hereby granted, provided that the above copyright -notice and this permission notice appear in all copies. UniSoft makes no -representations about the suitability for any purpose of the information in -this document. This documentation is provided ``as is'' without express or -implied warranty. -.lP -.sp 5 -Copyright \(co 1992, 1994 X Consortium -.lP -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the ``Software''), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: -.lP -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. -.lP -THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -.lP -Except as contained in this notice, the name of the X Consortium shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from the X Consortium. -.ps 10 -.nr PS 10 -.bp 1 -.EH ''XTEST Extension Library'' -.OH ''XTEST Extension Library'' -.EF ''\fB % \fP'' -.OF ''\fB % \fP'' -.NH 1 -Overview -.lP -This extension is a minimal set of client and server extensions -required to completely test the X11 server with no user intervention. -.lP -This extension is not intended to support general journaling and -playback of user actions. This is a difficult area [XTrap, 89] as it attempts -to synchronize synthetic user interactions with their effects; it is at the -higher level of dialogue recording/playback rather than at the strictly lexical -level. We are interested only in the latter, simpler, case. A more detailed -discussion and justification of the extension functionality is given in -[Drake, 91]. -.lP -We are aiming only to provide a minimum set of facilities that -solve immediate testing and validation problems. The testing extension -itself needs testing, where possible, and so should be as simple as possible. -.lP -We have also tried to: -.IP \(bu 5 -Confine the extension to an appropriate high level within the server -to minimize portability problems. In practice this means that the extension -should be at the DIX level or use the DIX/DDX interface, or both. This -has effects, in particular, on the level at which \*Qinput synthesis\*U -can occur. -.IP \(bu 5 -Minimize the changes required in the rest of the server. -.IP \(bu 5 -Minimize performance penalties on normal server operation. -.lP -.NH 1 -Description -.lP -The functions provided by this extension fall into two groups: -.IP "\fBClient Operations\fP" .5i -These routines manipulate otherwise hidden client-side behavior. The -actual implementation will depend on the details of the actual language -binding and what degree of request buffering, GContext caching, and so on, is -provided. In the C binding, defined in section 7, routines are provided -to access the internals of two opaque data structures -.Pn \*- GC s -and -.PN Visual s\*- -and to discard any requests pending within the -output buffer of a connection. The exact details can be expected to differ for -other language bindings. -.IP "\fBServer Requests\fP" .5i -The first of these requests is similar to that provided in most -extensions: it allows a client to specify a major and minor version -number to the server and for the server to respond with major and minor -versions of its own. The remaining two requests allow the following: -.RS -.IP \(bu 5 -Access to an otherwise \*Qwrite-only\*U server resource: the cursor -associated with a given window -.IP \(bu 5 -Perhaps most importantly, limited synthesis of input device events, -almost as if a cooperative user had moved the pointing device -or pressed a key or button. -.RE -.NH 1 -C Language Binding -.lP -The C functions either -provide direct access to the protocol and add no additional -semantics to those -defined in section 5 or they correspond directly to the abstract descriptions -of client operations in section 4. -.lP -All XTEST extension functions and procedures, and all manifest -constants and macros, will start with the string \*QXTest\*U. -All operations are classified as -server/client (Server) or client-only (Client). -All routines that have return type Status will return nonzero for -\*Qsuccess\*U and zero for \*Qfailure.\*U Even if the XTEST extension is -supported, the server may withdraw such facilities arbitrarily; in which case -they will subsequently return zero. -.lP -The include file for this extension is -.Pn < X11/extensions/XTest.h >. -.LP -.sM -.FD 0 -Bool -XTestQueryExtension(\fIdisplay\fP\^, \fIevent_base\fP\^, \fIerror_base\fP\^, \ -\fImajor_version\fP\^, \fIminor_version\fP\^) -.br - Display *\fIdisplay\fP\^; -.br - int *\fIevent_base\fP\^; /* RETURN */ -.br - int *\fIerror_base\fP\^; /* RETURN */ -.br - int *\fImajor_version\fP\^; /* RETURN */ -.br - int *\fIminor_version\fP\^; /* RETURN */ -.FN -.LP -.eM -.PN XTestQueryExtension -returns -.PN True -if the specified display supports the XTEST extension, else -.PN False . -If the extension is supported, *event_base would be set to the event number for -the first event for this extension and -*error_base would be set to the error number for the first error for -this extension. As no errors or events are defined for this version of the extension, -the values returned here are not defined (nor useful). -If the extension is supported, *major_version and *minor_version are set to -the major and minor version numbers of the extension supported by the -display. Otherwise, none of the arguments are set. -.sp -.LP -.sM -.FD 0 -Bool -XTestCompareCursorWithWindow(\fIdisplay\fP\^, \fIwindow\fP\^, \fIcursor\fP\^) -.br - Display *\fIdisplay\fP\^; -.br - Window \fIwindow\fP\^; -.br - Cursor \fIcursor\fP\^; -.FN -.LP -.eM -If the extension is supported, -.PN XTestCompareCursorWithWindow -performs a comparison of the cursor -whose ID is specified by cursor (which may be -.PN None ) -with the cursor of the window specified by window returning -.PN True -if they are the same and -.PN False -otherwise. -If the extension is not supported, then the request is ignored and -zero is returned. -.sp -.LP -.sM -.FD 0 -Bool -XTestCompareCurrentCursorWithWindow(\fIdisplay\fP\^, \fIwindow\fP\^) -.br - Display *\fIdisplay\fP\^; -.br - Window \fIwindow\fP\^; -.FN -.LP -.eM -If the extension is supported, -.PN XTestCompareCurrentCursorWithWindow -performs a comparison of the current cursor -with the cursor of the specified window returning -.PN True -if they are the same and -.PN False -otherwise. -If the extension is not supported, then the request is ignored and -zero is returned. -.sp -.LP -.sM -.FD 0 -XTestFakeKeyEvent(\fIdisplay\fP\^, \fIkeycode\fP\^, \fIis_press\fP\^, \fIdelay\fP\^) -.br - Display *\fIdisplay\fP\^; -.br - unsigned int \fIkeycode\fP\^; -.br - Bool \fIis_press\fP\^; -.br - unsigned long \fIdelay\fP\^; -.FN -.LP -.eM -If the extension is supported, -.PN XTestFakeKeyEvent -requests the server to simulate either a -.PN KeyPress -(if is_press is -.PN True ) -or a -.PN KeyRelease -(if is_press is -.PN False ) -of the key with the specified keycode; -otherwise, the request is ignored. -.LP -If the extension is supported, -the simulated event will not be processed until delay milliseconds -after the request is received (if delay is -.PN CurrentTime , -then this is interpreted as no delay at all). No other requests from -this client will be processed until this delay, if any, has expired -and subsequent processing of the simulated event has been completed. -.sp -.LP -.sM -.FD 0 -XTestFakeButtonEvent(\fIdisplay\fP\^, \fIbutton\fP\^, \fIis_press\fP\^, \fIdelay\fP\^) -.br - Display *\fIdisplay\fP\^; -.br - unsigned int \fIbutton\fP\^; -.br - Bool \fIis_press\fP\^; -.br - unsigned long \fIdelay\fP\^; -.FN -.LP -.eM -If the extension is supported, -.PN XTestFakeButtonEvent -requests the server to simulate either -a -.PN ButtonPress -(if is_press is -.PN True ) -or a -.PN ButtonRelease -(if is_press is -.PN False ) -of the logical button numbered by the specified button; -otherwise, the request is ignored. -.LP -If the extension is supported, -the simulated event will not be processed until delay milliseconds -after the request is received (if delay is -.PN CurrentTime , -then this is interpreted as no delay at all). No other requests from -this client will be processed until this delay, if any, has expired -and subsequent processing of the simulated event has been completed. -.sp -.LP -.sM -.FD 0 -XTestFakeMotionEvent(\fIdisplay\fP\^, \fIscreen_number\fP\^, \fIx\fP\^, \ -\fIy\fP\^, \fIdelay\fP\^) -.br - Display *\fIdisplay\fP\^; -.br - int \fIscreen_number\fP\^; -.br - int \fIx\fP\^ \fIy\fP\^; -.br - unsigned long \fIdelay\fP\^; -.FN -.LP -.eM -If the extension is supported, -.PN XTestFakeMotionEvent -requests the server to simulate -a movement of the pointer to the specified position (x, y) on the -root window of screen_number; -otherwise, the request is ignored. If screen_number is -1, the -current screen (that the pointer is on) is used. -.LP -If the extension is supported, -the simulated event will not be processed until delay milliseconds -after the request is received (if delay is -.PN CurrentTime , -then this is interpreted as no delay at all). No other requests from -this client will be processed until this delay, if any, has expired -and subsequent processing of the simulated event has been completed. -.sp -.LP -.sM -.FD 0 -XTestFakeRelativeMotionEvent(\fIdisplay\fP\^, \fIscreen_number\fP\^, \ -\fIx\fP\^, \fIy\fP\^, \fIdelay\fP\^) -.br - Display *\fIdisplay\fP\^; -.br - int \fIscreen_number\fP\^; -.br - int \fIx\fP\^ \fIy\fP\^; -.br - unsigned long \fIdelay\fP\^; -.FN -.LP -.eM -If the extension is supported, -.PN XTestFakeRelativeMotionEvent -requests the server to simulate -a movement of the pointer by the specified offsets (x, y) relative -to the current pointer position on screen_number; -otherwise, the request is ignored. If screen_number is -1, the -current screen (that the pointer is on) is used. -.LP -If the extension is supported, -the simulated event will not be processed until delay milliseconds -after the request is received (if delay is -.PN CurrentTime , -then this is interpreted as no delay at all). No other requests from -this client will be processed until this delay, if any, has expired -and subsequent processing of the simulated event has been completed. -.sp -.LP -.sM -.FD 0 -XTestGrabControl(\fIdisplay\fP\^, \fIimpervious\fP\^) -.br - Display *\fIdisplay\fP\^; -.br - Bool \fIimpervious\fP\^; -.FN -.LP -.eM -If impervious is -.PN True , -then the executing client becomes impervious to server grabs. -If impervious is -.PN False , -then the executing client returns to the normal state of being -susceptible to server grabs. -.sp -.LP -.sM -.FD 0 -Bool -XTestSetGContextOfGC(\fIgc\fP\^, \fIgid\fP\^) -.br - GC \fIgc\fP\^; -.br - GContext \fIgid\fP\^; -.FN -.LP -.eM -.PN XTestSetGContextOfGC -sets the GContext within the opaque datatype referenced by gc to -be that specified by gid. -.sp -.LP -.sM -.FD 0 -XTestSetVisualIDOfVisual(\fIvisual\fP\^, \fIvisualid\fP\^) -.br - Visual *\fIvisual\fP\^; -.br - VisualID \fIvisualid\fP\^; -.FN -.LP -.eM -.PN XTestSetVisualIDOfVisual -sets the VisualID within the opaque datatype referenced by visual to -be that specified by visualid. -.sp -.LP -.sM -.FD 0 -Bool -XTestDiscard(\fIdisplay\fP\^) -.br - Display *\fIdisplay\fP\^; -.FN -.LP -.eM -.PN XTestDiscard -discards any requests within the output buffer for the specified display. -It returns -.PN True -if any requests were discarded; otherwise, it returns -.PN False . -.NH 1 -References -.XP -Annicchiarico, D., et al., \fIXTrap: The XTrap Architecture\fP\^. -Digital Equipment Corporation, July 1991. -.XP -Drake, K. J., \fISome Proposals for a Minimum X11 Testing Extension\fP\^. -UniSoft Ltd., June 1991. -.LP diff --git a/specs/xtestlib.xml b/specs/xtestlib.xml new file mode 100644 index 0000000..ab41656 --- /dev/null +++ b/specs/xtestlib.xml @@ -0,0 +1,468 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" + "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"> + + +<!-- lifted from troff+ms+XMan by doclifter --> +<book id="xtestlib"> + +<bookinfo> + <title>XTEST Extension Library</title> + <subtitle>X Consortium Standard</subtitle> + <releaseinfo>X Version 11, Release 6.4</releaseinfo> + <authorgroup> + <author> + <firstname>Kieron</firstname><surname>Drake</surname> + </author> + </authorgroup> + <corpname>UniSoft Ltd.</corpname> + <copyright><year>1992</year><holder>UniSoft Group Ltd.</holder></copyright> + <copyright><year>1992</year><holder>X Consortium</holder></copyright> + <copyright><year>1994</year><holder>X Consortium</holder></copyright> + <releaseinfo>Version 2.2</releaseinfo> + <affiliation><orgname>X Consortium</orgname></affiliation> + <productnumber>X Version 11, Release 7</productnumber> + +<legalnotice> + +<para> +Permission to use, copy, modify, and distribute this documentation for +any purpose and without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. UniSoft +makes no representations about the suitability for any purpose of the +information in this document. This documentation is provided +“as is” without express or implied warranty. +</para> + +<para> +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files +(the “Software”), to deal in the Software without restriction, +including without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to permit +persons to whom the Software is furnished to do so, subject to the following +conditions: +</para> + +<para> +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. +</para> + +<para> +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +</para> + +<para> +Except as contained in this notice, the name of the X Consortium shall not +be used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from the X Consortium. +</para> + +<para>X Window System is a trademark of The Open Group.</para> + +<para> +Except as contained in this notice, the name of the X Consortium shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from the X Consortium. +</para> +</legalnotice> +</bookinfo> + +<chapter id='overview'> +<title>Overview</title> + +<para> +This extension is a minimal set of client and server extensions +required to completely test the X11 server with no user intervention. +</para> + +<para> +This extension is not intended to support general journaling and +playback of user actions. This is a difficult area [XTrap, 89] as it attempts +to synchronize synthetic user interactions with their effects; it is at the +higher level of dialogue recording/playback rather than at the strictly lexical +level. We are interested only in the latter, simpler, case. A more detailed +discussion and justification of the extension functionality is given in +[Drake, 91]. +</para> + +<para> +We are aiming only to provide a minimum set of facilities that +solve immediate testing and validation problems. The testing extension +itself needs testing, where possible, and so should be as simple as possible. +</para> + +<para>We have also tried to:</para> +<itemizedlist mark='bullet'> + <listitem> + <para> +Confine the extension to an appropriate high level +within the server to minimize portability problems. In practice this +means that the extension should be at the DIX level or use the +DIX/DDX interface, or both. This has effects, in particular, on the +level at which "input synthesis" can occur. + </para> + </listitem> + <listitem> + <para> +Minimize the changes required in the rest of the server. + </para> + </listitem> + <listitem> + <para> +Minimize performance penalties on normal server operation. + </para> + </listitem> +</itemizedlist> +</chapter> + +<chapter id='description'> +<title>Description</title> + +<para>The functions provided by this extension fall into two groups:</para> + +<itemizedlist> + <listitem> + <para>Client Operations</para> + <para> +These routines manipulate otherwise hidden client-side behavior. +The actual implementation will depend on the details of the actual language +binding and what degree of request buffering, GContext caching, and so on, is +provided. In the C binding, defined in section 7, routines are provided +to access the internals of two opaque data structures - +<symbol role='Pn'>GC</symbol>s +and +<function>Visual</function>s - and to discard any requests pending within the +output buffer of a connection. The exact details can be expected to differ for +other language bindings. + </para> + </listitem> + <listitem> + <para>Server Requests</para> + <para> +The first of these requests is similar to that provided in most +extensions: it allows a client to specify a major and minor version +number to the server and for the server to respond with major and minor +versions of its own. The remaining two requests allow the following: + </para> + </listitem> + <listitem> + <itemizedlist> + <listitem> + <para> +Access to an otherwise "write-only" server resource: the +cursor associated with a given window + </para> + </listitem> + <listitem> + <para> +Perhaps most importantly, limited synthesis of input +device events, almost as if a cooperative user had moved the pointing device +or pressed a key or button. + </para> + </listitem> + </itemizedlist> + </listitem> +</itemizedlist> +</chapter> + +<chapter id='c_language_binding'> +<title>C Language Binding</title> + +<para> +The C functions either provide direct access to the protocol and add no +additional semantics to those defined in section 5 or they correspond +directly to the abstract descriptions of client operations in section 4. +</para> + +<para> +All XTEST extension functions and procedures, and all manifest constants +and macros, will start with the string "XTest". All operations are +classified as server/client (Server) or client-only (Client). +All routines that have return type Status will return nonzero for +"success" and zero for "failure." Even if the XTEST extension is +supported, the server may withdraw such facilities arbitrarily; in which case +they will subsequently return zero. +</para> + +<para> +The include file for this extension is +<<symbol role='Pn'>X11/extensions/XTest.h</symbol>>. +</para> + +<funcsynopsis> +<funcprototype> +<funcdef>Bool<function> XTestQueryExtension</function></funcdef> +<paramdef>Display<parameter> *display</parameter></paramdef> +<paramdef>int<parameter> *event_base</parameter></paramdef> +<paramdef>int<parameter> *error_base</parameter></paramdef> +<paramdef>int<parameter> *major_version</parameter></paramdef> +<paramdef>int<parameter> *minor_version</parameter></paramdef> +</funcprototype> +</funcsynopsis> + +<para> +<function>XTestQueryExtension</function> +returns +<function>True</function> +if the specified display supports the XTEST extension, else +<function>False</function> +If the extension is supported, *event_base would be set to the event number +for the first event for this extension and *error_base would be set to the +error number for the first error for this extension. As no errors or +events are defined for this version of the extension, the values returned +here are not defined (nor useful). If the extension is supported, +*major_version and *minor_version are set to the major and minor version +numbers of the extension supported by the display. Otherwise, none of +the arguments are set. +</para> + +<funcsynopsis> +<funcprototype> +<funcdef>Bool<function> XTestCompareCursorWithWindow</function></funcdef> +<paramdef>Display<parameter> *display</parameter></paramdef> +<paramdef>Window<parameter> *window</parameter></paramdef> +<paramdef>Cursor<parameter> cursor</parameter></paramdef> +</funcprototype> +</funcsynopsis> + +<para>If the extension is supported, +<function>XTestCompareCursorWithWindow</function> +performs a comparison of the cursor whose ID is specified by cursor (which +may be +<function>None</function> +with the cursor of the window specified by window returning +<function>True</function> +if they are the same and +<function>False</function> +otherwise. If the extension is not supported, then the request is ignored and +zero is returned. +</para> + +<funcsynopsis> +<funcprototype> +<funcdef>Bool<function>XTestCompareCurrentCursorWithWindow</function></funcdef> +<paramdef>Display<parameter> *display</parameter></paramdef> +<paramdef>Window<parameter> window</parameter></paramdef> +</funcprototype> +</funcsynopsis> + +<para>If the extension is supported, +<function>XTestCompareCurrentCursorWithWindow</function> +performs a comparison of the current cursor with the cursor of the specified +window returning +<function>True</function> +if they are the same and +<function>False</function> +otherwise. If the extension is not supported, then the request is ignored and +zero is returned. +</para> + +<funcsynopsis> +<funcprototype> +<funcdef><function>XTestFakeKeyEvent</function></funcdef> +<paramdef>Display<parameter> *display</parameter></paramdef> +<paramdef>unsigned int<parameter> keycode</parameter></paramdef> +<paramdef>Bool<parameter> is_press</parameter></paramdef> +<paramdef>unsigned long<parameter> delay</parameter></paramdef> +</funcprototype> +</funcsynopsis> + +<para>If the extension is supported, +<function>XTestFakeKeyEvent</function> +requests the server to simulate either a +<function>KeyPress</function> +(if is_press is +<function>True</function> +or a +<function>KeyRelease</function> +(if is_press is +<function>False</function> +of the key with the specified keycode; otherwise, the request is ignored. +</para> + +<para> +If the extension is supported, the simulated event will not be processed +until delay milliseconds after the request is received (if delay is +<function>CurrentTime</function> +then this is interpreted as no delay at all). No other requests from +this client will be processed until this delay, if any, has expired +and subsequent processing of the simulated event has been completed. +</para> + +<funcsynopsis> +<funcprototype> +<funcdef><function>XTestFakeButtonEvent</function></funcdef> +<paramdef>Display<parameter> *display</parameter></paramdef> +<paramdef>unsigned int<parameter> button</parameter></paramdef> +<paramdef>Bool<parameter> is_press</parameter></paramdef> +<paramdef>unsigned long<parameter> delay</parameter></paramdef> +</funcprototype> +</funcsynopsis> + +<para>If the extension is supported, +<function>XTestFakeButtonEvent</function> +requests the server to simulate either a +<function>ButtonPress</function> +(if is_press is +<function>True</function> +or a +<function>ButtonRelease</function> +(if is_press is +<function>False</function> +of the logical button numbered by the specified button; otherwise, the +request is ignored. +</para> + +<para>If the extension is supported, +the simulated event will not be processed until delay milliseconds +after the request is received (if delay is +<function>CurrentTime</function> +then this is interpreted as no delay at all). No other requests from +this client will be processed until this delay, if any, has expired +and subsequent processing of the simulated event has been completed. +</para> + +<funcsynopsis> +<funcprototype> +<funcdef><function>XTestFakeMotionEvent</function></funcdef> +<paramdef>Display<parameter> *display</parameter></paramdef> +<paramdef>int<parameter> screen_number</parameter></paramdef> +<paramdef>int<parameter> x</parameter></paramdef> +<paramdef>int<parameter> y</parameter></paramdef> +<paramdef>unsigned long<parameter> delay</parameter></paramdef> +</funcprototype> +</funcsynopsis> + +<para>If the extension is supported, +<function>XTestFakeMotionEvent</function> +requests the server to simulate a movement of the pointer to the specified +position (x, y) on the root window of screen_number; otherwise, the request +is ignored. If screen_number is -1, the current screen (that the pointer +is on) is used. +</para> + +<para> +If the extension is supported, the simulated event will not be processed +until delay milliseconds after the request is received (if delay is +<function>CurrentTime</function> +then this is interpreted as no delay at all). No other requests from +this client will be processed until this delay, if any, has expired +and subsequent processing of the simulated event has been completed. +</para> + +<funcsynopsis> +<funcprototype> +<funcdef><function>XTestFakeRelativeMotionEvent</function></funcdef> +<paramdef>Display<parameter> *display</parameter></paramdef> +<paramdef>int<parameter> screen_number</parameter></paramdef> +<paramdef>int<parameter> x</parameter></paramdef> +<paramdef>int<parameter> y</parameter></paramdef> +<paramdef>unsigned long<parameter> delay</parameter></paramdef> +</funcprototype> +</funcsynopsis> + +<para> +If the extension is supported, +<function>XTestFakeRelativeMotionEvent</function> +requests the server to simulate a movement of the pointer by the specified +offsets (x, y) relative to the current pointer position on screen_number; +otherwise, the request is ignored. If screen_number is -1, the +current screen (that the pointer is on) is used. +</para> + +<para> +If the extension is supported, the simulated event will not be processed +until delay milliseconds after the request is received (if delay is +<function>CurrentTime</function> +then this is interpreted as no delay at all). No other requests from +this client will be processed until this delay, if any, has expired +and subsequent processing of the simulated event has been completed. +</para> + +<funcsynopsis> +<funcprototype> +<funcdef><function>XTestGrabControl</function></funcdef> +<paramdef>Display<parameter> *display</parameter></paramdef> +<paramdef>Bool<parameter> impervious</parameter></paramdef> +</funcprototype> +</funcsynopsis> + +<para>If impervious is +<function>True</function> +then the executing client becomes impervious to server grabs. If impervious is +<function>False</function> +then the executing client returns to the normal state of being susceptible +to server grabs. +</para> + +<funcsynopsis> +<funcprototype> +<funcdef>Bool<function> XTestSetGContextOfGC</function></funcdef> +<paramdef>GC<parameter> gc</parameter></paramdef> +<paramdef>GContext<parameter> gid</parameter></paramdef> +</funcprototype> +</funcsynopsis> + +<para> +<function>XTestSetGContextOfGC</function> +sets the GContext within the opaque datatype referenced by gc to +be that specified by gid. +</para> + +<funcsynopsis> +<funcprototype> +<funcdef><function>XTestSetVisualIDOfVisual</function></funcdef> +<paramdef>Visual<parameter> *visual</parameter></paramdef> +<paramdef>VisualID<parameter> visualid</parameter></paramdef> +</funcprototype> +</funcsynopsis> + +<para> +<function>XTestSetVisualIDOfVisual</function> +sets the VisualID within the opaque datatype referenced by visual to +be that specified by visualid. +</para> + +<funcsynopsis> +<funcprototype> +<funcdef>Bool<function> XTestDiscard</function></funcdef> +<paramdef>Display<parameter> *display</parameter></paramdef> +</funcprototype> +</funcsynopsis> + +<para> +<function>XTestDiscard</function> +discards any requests within the output buffer for the specified display. +It returns +<function>True</function> +if any requests were discarded; otherwise, it returns +<function>False</function> +</para> +</chapter> + +<chapter id='references'> +<title>References</title> + +<para> +Annicchiarico, D., et al., <emphasis remap='I'>XTrap: The XTrap +Architecture</emphasis>. +Digital Equipment Corporation, July 1991. +</para> + +<para> +Drake, K. J., <emphasis remap='I'>Some Proposals for a Minimum X11 +Testing Extension</emphasis>. +UniSoft Ltd., June 1991. +</para> + +</chapter> +</book> + |