diff options
Diffstat (limited to 'libXext')
-rw-r--r-- | libXext/docbook.am | 112 | ||||
-rw-r--r-- | libXext/specs/dbelib.xml | 8 | ||||
-rw-r--r-- | libXext/specs/dpmslib.xml | 8 | ||||
-rw-r--r-- | libXext/specs/shapelib.xml | 12 | ||||
-rw-r--r-- | libXext/specs/synclib.xml | 11 | ||||
-rw-r--r-- | libXext/specs/xtest1.xml | 1903 |
6 files changed, 1034 insertions, 1020 deletions
diff --git a/libXext/docbook.am b/libXext/docbook.am index 2ffb7e60a..bba4d5453 100644 --- a/libXext/docbook.am +++ b/libXext/docbook.am @@ -21,74 +21,82 @@ shelf_DATA = dist_shelf_DATA = $(docbook) $(chapters) if HAVE_XMLTO -# -# Generate DocBook/XML output formats with or without stylesheets -# - -# Stylesheets are available if the package xorg-sgml-doctools is installed if HAVE_STYLESHEETS -# The location where all cross reference databases are installed -sgmldbsdir = $(XORG_SGML_PATH)/X11/dbs -masterdb = "$(sgmldbsdir)/masterdb$(suffix $@).xml" -XMLTO_FLAGS = \ - --searchpath "$(XORG_SGML_PATH)/X11" \ - --stringparam target.database.document=$(masterdb) \ - --stringparam current.docid="$(<:.xml=)" \ - --stringparam collect.xref.targets="no" - -XMLTO_XHTML_FLAGS = \ - -x $(STYLESHEET_SRCDIR)/xorg-xhtml.xsl \ - --stringparam html.stylesheet=$(STYLESHEET_SRCDIR)/xorg.css - -XMLTO_FO_FLAGS = \ - -x $(STYLESHEET_SRCDIR)/xorg-fo.xsl -endif HAVE_STYLESHEETS +XMLTO_SEARCHPATH_FLAGS = \ + --searchpath "$(XORG_SGML_PATH)/X11" \ + --searchpath "$(abs_top_builddir)" +XMLTO_HTML_OLINK_FLAGS = \ + --stringparam target.database.document=$(XORG_SGML_PATH)/X11/dbs/masterdb.html.xml \ + --stringparam current.docid="$(<:.xml=)" +XMLTO_HTML_STYLESHEET_FLAGS = -x $(STYLESHEET_SRCDIR)/xorg-xhtml.xsl +XMLTO_HTML_FLAGS = \ + $(XMLTO_SEARCHPATH_FLAGS) \ + $(XMLTO_HTML_STYLESHEET_FLAGS) \ + $(XMLTO_HTML_OLINK_FLAGS) shelf_DATA += $(docbook:.xml=.html) -%.html: %.xml $(chapters) - $(AM_V_GEN)$(XMLTO) $(XMLTO_FLAGS) $(XMLTO_XHTML_FLAGS) xhtml-nochunks $< - -if HAVE_FOP -shelf_DATA += $(docbook:.xml=.pdf) $(docbook:.xml=.ps) -%.pdf: %.xml $(chapters) - $(AM_V_GEN)$(XMLTO) $(XMLTO_FLAGS) $(XMLTO_FO_FLAGS) --with-fop pdf $< -%.ps: %.xml $(chapters) - $(AM_V_GEN)$(XMLTO) $(XMLTO_FLAGS) $(XMLTO_FO_FLAGS) --with-fop ps $< -endif HAVE_FOP +%.html: %.xml $(chapters) + $(AM_V_GEN)$(XMLTO) $(XMLTO_HTML_FLAGS) xhtml-nochunks $< if HAVE_XMLTO_TEXT + shelf_DATA += $(docbook:.xml=.txt) %.txt: %.xml $(chapters) - $(AM_V_GEN)$(XMLTO) $(XMLTO_FLAGS) $(XMLTO_XHTML_FLAGS) txt $< + $(AM_V_GEN)$(XMLTO) $(XMLTO_HTML_FLAGS) txt $< endif HAVE_XMLTO_TEXT -# -# Generate documents cross-reference target databases -# +if HAVE_FOP +XMLTO_FO_IMAGEPATH_FLAGS = --stringparam img.src.path=$(abs_builddir)/ +XMLTO_PDF_OLINK_FLAGS = \ + --stringparam target.database.document=$(XORG_SGML_PATH)/X11/dbs/masterdb.pdf.xml \ + --stringparam current.docid="$(<:.xml=)" +XMLTO_FO_STYLESHEET_FLAGS = -x $(STYLESHEET_SRCDIR)/xorg-fo.xsl + +XMLTO_FO_FLAGS = \ + $(XMLTO_SEARCHPATH_FLAGS) \ + $(XMLTO_FO_STYLESHEET_FLAGS) \ + $(XMLTO_FO_IMAGEPATH_FLAGS) \ + $(XMLTO_PDF_OLINK_FLAGS) + +shelf_DATA += $(docbook:.xml=.pdf) +%.pdf: %.xml $(chapters) + $(AM_V_GEN)$(XMLTO) $(XMLTO_FO_FLAGS) --with-fop pdf $< -# This is only possible if the xorg-sgml-doctools package is installed -if HAVE_STYLESHEETS -if HAVE_XSLTPROC +shelf_DATA += $(docbook:.xml=.ps) +%.ps: %.xml $(chapters) + $(AM_V_GEN)$(XMLTO) $(XMLTO_FO_FLAGS) --with-fop ps $< +endif HAVE_FOP -# DocBook/XML generated document cross-reference database -shelf_DATA += $(docbook:.xml=.html.db) $(docbook:.xml=.fo.db) +# Generate documents cross-reference target databases +if HAVE_XSLTPROC -# Generate DocBook/XML document cross-reference database -# Flags for the XSL Transformation processor generating xref target databases -XSLTPROC_FLAGS = \ +XSLT_SEARCHPATH_FLAGS = \ --path "$(XORG_SGML_PATH)/X11" \ - --stringparam targets.filename "$@" \ - --stringparam collect.xref.targets "only" \ - --nonet --xinclude - + --path "$(abs_top_builddir)" +XSLT_OLINK_FLAGS = \ + --stringparam targets.filename "$@" \ + --stringparam collect.xref.targets "only" \ + --stringparam olink.base.uri "$(@:.db=)" + +XSLT_HTML_FLAGS = \ + $(XSLT_SEARCHPATH_FLAGS) \ + $(XSLT_OLINK_FLAGS) \ + --nonet --xinclude \ + $(STYLESHEET_SRCDIR)/xorg-xhtml.xsl +XSLT_PDF_FLAGS = \ + $(XSLT_SEARCHPATH_FLAGS) \ + $(XSLT_OLINK_FLAGS) \ + --nonet --xinclude \ + $(STYLESHEET_SRCDIR)/xorg-fo.xsl + +shelf_DATA += $(docbook:.xml=.html.db) %.html.db: %.xml $(chapters) - $(AM_V_GEN)$(XSLTPROC) $(XSLTPROC_FLAGS) \ - http://docbook.sourceforge.net/release/xsl/current/xhtml/docbook.xsl $< + $(AM_V_GEN)$(XSLTPROC) $(XSLT_HTML_FLAGS) $< -%.fo.db: %.xml $(chapters) - $(AM_V_GEN)$(XSLTPROC) $(XSLTPROC_FLAGS) \ - http://docbook.sourceforge.net/release/xsl/current/fo/docbook.xsl $< +shelf_DATA += $(docbook:.xml=.pdf.db) +%.pdf.db: %.xml $(chapters) + $(AM_V_GEN)$(XSLTPROC) $(XSLT_PDF_FLAGS) $< endif HAVE_XSLTPROC endif HAVE_STYLESHEETS diff --git a/libXext/specs/dbelib.xml b/libXext/specs/dbelib.xml index 5a969a287..1f9068a7d 100644 --- a/libXext/specs/dbelib.xml +++ b/libXext/specs/dbelib.xml @@ -1,6 +1,9 @@ <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" - "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"> + "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" +[ +<!ENTITY % defs SYSTEM "defs.ent"> %defs; +]> <!-- lifted from troff+ms+XMan by doclifter --> @@ -9,7 +12,7 @@ <bookinfo> <title>Double Buffer Extension Library</title> <subtitle>X Consortium Standard</subtitle> - <!-- <releaseinfo>X Version 11, Release 6.4</releaseinfo> --> + <releaseinfo>X Version 11, Release &fullrelvers;</releaseinfo> <authorgroup> <author> <firstname>Ian</firstname><surname>Elliot</surname> @@ -26,7 +29,6 @@ <copyright><year>1995</year><holder>X Consortium, Inc and Hewlett-Packard Company</holder></copyright> <releaseinfo>Version 1.0</releaseinfo> <affiliation><orgname>X Consortium</orgname></affiliation> - <productnumber>X Version 11, Release 7</productnumber> <legalnotice> <para> diff --git a/libXext/specs/dpmslib.xml b/libXext/specs/dpmslib.xml index 1fe81d2af..d0e24472d 100644 --- a/libXext/specs/dpmslib.xml +++ b/libXext/specs/dpmslib.xml @@ -1,6 +1,9 @@ <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" - "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"> + "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" +[ +<!ENTITY % defs SYSTEM "defs.ent"> %defs; +]> <!-- lifted from troff+ms+XMan by doclifter --> <book id="dpmslib"> @@ -8,7 +11,7 @@ <bookinfo> <title>X Display Power Management Signaling (DPMS) Extension</title> <subtitle>X Consortium Standard</subtitle> - <releaseinfo>X Version 11, Release 6.8</releaseinfo> + <releaseinfo>X Version 11, Release &fullrelvers;</releaseinfo> <authorgroup> <author> <firstname>Rob</firstname><surname>Lembree</surname> @@ -18,7 +21,6 @@ <copyright><year>1996</year><holder>X Consortium</holder></copyright> <releaseinfo>Version 1.0</releaseinfo> <affiliation><orgname>X Consortium</orgname></affiliation> - <productnumber>X Version 11, Release 6.8</productnumber> <legalnotice> <para> diff --git a/libXext/specs/shapelib.xml b/libXext/specs/shapelib.xml index 7fb108c77..9a158ee61 100644 --- a/libXext/specs/shapelib.xml +++ b/libXext/specs/shapelib.xml @@ -1,6 +1,9 @@ <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" - "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"> + "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" +[ +<!ENTITY % defs SYSTEM "defs.ent"> %defs; +]> <!-- lifted from troff+ms+XMan by doclifter --> <book id="shapelib"> @@ -8,17 +11,16 @@ <bookinfo> <title>X Nonrectangular Window Shape Extension Library</title> <subtitle>X Consortium Standard</subtitle> - <releaseinfo>X Version 11, Release 6.4</releaseinfo> + <releaseinfo>X Version 11, Release &fullrelvers;</releaseinfo> + <releaseinfo>Version 1.0</releaseinfo> <authorgroup> <author> <firstname>Keith</firstname><surname>Packard</surname> + <affiliation><orgname>MIT X Consortium</orgname></affiliation> </author> </authorgroup> <corpname>MIT X Consortium</corpname> <copyright><year>1989</year><holder>X Consortium</holder></copyright> - <releaseinfo>Version 1.0</releaseinfo> - <affiliation><orgname>MIT X Consortium</orgname></affiliation> - <productnumber>X Version 11, Release 6.4</productnumber> <legalnotice> diff --git a/libXext/specs/synclib.xml b/libXext/specs/synclib.xml index 36c716297..67a7b5255 100644 --- a/libXext/specs/synclib.xml +++ b/libXext/specs/synclib.xml @@ -1,6 +1,9 @@ <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" - "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"> + "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" +[ +<!ENTITY % defs SYSTEM "defs.ent"> %defs; +]> <!-- lifted from troff+ms+XMan by doclifter --> @@ -9,7 +12,8 @@ <bookinfo> <title>X Synchronization Extension Library</title> <subtitle>X Consortium Standard</subtitle> - <releaseinfo>X Version 11, Release 6.4</releaseinfo> + <releaseinfo>X Version 11, Release &fullrelvers;</releaseinfo> + <releaseinfo>Version 3.0</releaseinfo> <authorgroup> <author> <firstname>Tim</firstname><surname>Glauert</surname> @@ -31,9 +35,6 @@ <affiliation><orgname>X Consortium, Inc.</orgname></affiliation> </author> </authorgroup> - <releaseinfo>Version 3.0</releaseinfo> - <affiliation><orgname>X Consortium</orgname></affiliation> - <productnumber>X Version 11, Release 6.4</productnumber> <legalnotice> <para> diff --git a/libXext/specs/xtest1.xml b/libXext/specs/xtest1.xml index 72496210f..22d046767 100644 --- a/libXext/specs/xtest1.xml +++ b/libXext/specs/xtest1.xml @@ -1,952 +1,951 @@ -<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
- "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
-
-
-<article id="xtest1">
-
-<articleinfo>
- <title>X11 INPUT SYNTHESIS EXTENSION PROPOSAL</title>
- <subtitle>X Consortium Standard</subtitle>
- <releaseinfo>Version 1.0</releaseinfo>
- <authorgroup>
- <author>
- <firstname>Larry</firstname><surname>Woestman</surname>
- <affiliation><jobtitle>Member of Technical Staff</jobtitle>
- <orgname>Hewlett Packard</orgname></affiliation>
- </author>
- </authorgroup>
- <corpname>X Consortium Standard</corpname>
- <copyright><year>1993</year><holder>X Consortium</holder></copyright>
- <affiliation><orgname>X Consortium</orgname></affiliation>
- <productnumber>X Version 11, Release 7</productnumber>
-
-<abstract>
-<para>
-This is a proposal for an extension to the X11 server and Xlib.
-</para>
-</abstract>
-
-</articleinfo>
-
-<sect1 id="introduction">
-<title>Introduction</title>
-<para>
-This is a proposal for an extension to the X11 server and Xlib.
-It provides two capabilities:
-</para>
-
-<itemizedlist>
- <listitem>
- <para>
-It allows a client to generate user input actions in the server without
-requiring a user to be present.
- </para>
- </listitem>
- <listitem>
- <para>
-It also allows a client to control the
-handling of user input actions by the server.
- </para>
- </listitem>
-</itemizedlist>
-
-<para>
-The capability
-to allow a client to generate user input actions in the server
-will be used by some of the X Testing Consortium Xlib tests.
-Both capabilities will be used by the X Testing Consortium client exerciser
-program.
-These capabilities may also be useful in other programs.
-</para>
-
-<para>
-This extension requires modification to device-dependent code in the
-server. Therefore it is not a 'portable' extension as defined by the
-X11 Server Extensions document. However, the majority of the code
-and functionality of this extension will be implementation-independent.
-</para>
-
-</sect1>
-
-<sect1 id="conventions_used_in_this_document">
-<title>Conventions Used In This Document</title>
-
-<para>
-The naming conventions used in the Xlib documentation are followed
-with these additions:
-</para>
-
-<itemizedlist>
- <listitem>
- <para>
-The names of all functions defined in this extension begin with 'XTest',
-with the first letter of each additional word capitalized.
- </para>
- </listitem>
- <listitem>
- <para>
-The names of the protocol request structures follow the Xlib convention
-of 'x<name>Req'.
- </para>
- </listitem>
- <listitem>
- <para>
-The names of the protocol request minor type codes follow the Xlib convention
-of 'X_<name>'.
- </para>
- </listitem>
- <listitem>
- <para>
-The names of all other constants defined in this extension begin with 'XTest',
-with the rest of the name in upper case letters.
- </para>
- </listitem>
- <listitem>
- <para>
-All constants and structures defined in this extension will have their
-values specified in the 'xtestext1.h' file (listed in section 5).
- </para>
- </listitem>
-</itemizedlist>
-
-</sect1>
-<sect1 id="definition_of_terms">
-<title>Definition Of Terms</title>
-
-<sect2 id="input_actions">
-<title>Input Actions</title>
-<para>
-Input actions are pointer movements, button presses and releases,
-and key presses and releases. They can be generated by a user or by a client
-(using functions in this extension).
-</para>
-</sect2>
-
-<sect2 id="user_input_actions">
-<title>User Input Actions</title>
-<para>
-User input actions are input actions that are generated by the user
-moving a pointing device (typically a mouse), pressing and releasing buttons on
-the pointing device, and pressing and releasing keys on the keyboard.
-</para>
-</sect2>
-
-</sect1>
-
-<sect1 id="what_does_this_extension_do">
-<title>What Does This Extension Do?</title>
-<para>
-Without this extension, user input actions are processed by the server,
-and are converted into normal X events that are sent to the
-appropriate client or clients.
-</para>
-
-<para>
-This extension adds the following capabilities:
-</para>
-
-<itemizedlist>
- <listitem>
- <para>
-Input actions may be sent from a client to the server to be
-processed just as if the user had physically performed them.
-The input actions are provided to the server in the form of X protocol
-requests defined by this extension.
-The information provided to the server includes what action should be
-performed, and how long to delay before processing the action in the server.
- </para>
- </listitem>
- <listitem>
- <para>
-User input actions may be diverted to a client before being processed by the
-server.
-The effect on the server is as if the user had performed no input action.
-The user input actions are provided to the client in the form of X events
-defined by this extension.
-The information provided to the client includes what user input action
-occurred and the delay between this user input action and the previous user
-input action.
-The client may then do anything it wishes with this information.
- </para>
- </listitem>
- <listitem>
- <para>
-User input actions may be copied, with one copy going to the server in the
-normal way, and the other copy being sent to a client as described above.
- </para>
- </listitem>
-</itemizedlist>
-
-</sect1>
-<sect1 id="functions_in_this_extension">
-<title>Functions In This Extension</title>
-
-<sect2 id="high_level_functions">
-<title>High Level Functions</title>
-
-<para>
-These functions are built on top of the low level functions described later.
-</para>
-
-<sect3 id="xtestmovepointer">
-<title>XTestMovePointer</title>
-
-<funcsynopsis>
-<funcprototype>
- <funcdef>int <function>XTestMovePointer</function></funcdef>
- <paramdef>Display <parameter>*display</parameter></paramdef>
- <paramdef>int <parameter>device_id</parameter></paramdef>
- <paramdef>unsigned long <parameter>delay</parameter></paramdef>
- <paramdef>int <parameter>x</parameter></paramdef>
- <paramdef>int <parameter>y</parameter></paramdef>
- <paramdef>unsigned int <parameter>count</parameter></paramdef>
-</funcprototype>
-</funcsynopsis>
-
-<variablelist>
- <varlistentry>
- <term>display</term>
- <listitem>
- <para>
-Specifies the connection to the X server.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>device_id</term>
- <listitem>
- <para>
-Specifies which pointer device was supposed to have caused the input action.
-This is a provision for future support of multiple (distinguishable) pointer
-devices, and should always be set to 0 for now.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>delay</term>
- <listitem>
- <para>
-Specifies the time (in milliseconds) to wait before each movement
-of the pointer.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>x, y</term>
- <listitem>
- <para>
-Specifies the x and y coordinates to move the pointer to relative to the
-root window for the specified display.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>count</term>
- <listitem>
- <para>
-Specifies the number of 'delay, x, y' triplets contained in the
-<emphasis>delay</emphasis>,
-<emphasis>x</emphasis> and
-<emphasis>y</emphasis> arrays.
- </para>
- </listitem>
- </varlistentry>
-</variablelist>
-
-<para>
-The
-<function>XTestMovePointer</function>
-function creates input actions to be sent to the the server.
-The input actions will be accumulated in a request defined by this extension
-until the request is full or the XTestFlush function is called.
-They will then be sent to the server.
-When the input actions are sent to the server, the input actions will cause
-the server to think that the pointer was moved to the specified position(s),
-with the specified delay before each input action.
-</para>
-<para>
-The
-<function>XTestMovePointer</function>
-function will return -1 if there is an error, and 0 otherwise.
-</para>
-</sect3>
-
-<sect3 id="xtestpressbutton">
-<title>XTestPressButton</title>
-
-<funcsynopsis>
-<funcprototype>
- <funcdef>int <function>XTestPressButton</function></funcdef>
- <paramdef>Display <parameter>*display</parameter></paramdef>
- <paramdef>int <parameter>device_id</parameter></paramdef>
- <paramdef>unsigned long <parameter>delay</parameter></paramdef>
- <paramdef>unsigned int <parameter>button_number</parameter></paramdef>
- <paramdef>unsigned int <parameter>button_action</parameter></paramdef>
-</funcprototype>
-</funcsynopsis>
-
-
-<!-- .VL 15 -->
-<variablelist>
- <varlistentry>
- <term>display</term>
- <listitem>
- <para>
-Specifies the connection to the X server.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>device_id</term>
- <listitem>
- <para>
-Specifies which button device was supposed to have caused the input action.
-This is a provision for future support of multiple (distinguishable) button
-devices, and should always be set to 0 for now.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>delay</term>
- <listitem>
- <para>
-Specifies the time (in milliseconds) to wait before the input action.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>button_number</term>
- <listitem>
- <para>
-Specifies which button is being acted upon.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>button_action</term>
- <listitem>
- <para>
-Specifies the action to be performed (one of
-<emphasis>XTestPRESS</emphasis>,
-<emphasis>XTestRELEASE</emphasis>, or
-<emphasis>XTestSTROKE</emphasis>).
- </para>
- </listitem>
- </varlistentry>
-</variablelist>
-
-<para>
-The
-<function>XTestPressButton</function>
-function creates input actions to be sent to the the server.
-The input actions will be accumulated in a request defined by this extension
-until the request is full or the XTestFlush function is called.
-They will then be sent to the server.
-When the input actions are sent to the server, the input actions will cause
-the server to think that the specified button was moved as specified.
-</para>
-<para>
-The
-<function>XTestPressButton</function>
-function will return -1 if there is an error, and 0 otherwise.
-</para>
-</sect3>
-
-<sect3 id="xtestpresskey">
-<title>XTestPressKey</title>
-
-<funcsynopsis>
-<funcprototype>
- <funcdef>int <function>XTestPressKey</function></funcdef>
- <paramdef>Display <parameter>*display</parameter></paramdef>
- <paramdef>int <parameter>device_id</parameter></paramdef>
- <paramdef>unsigned long <parameter>delay</parameter></paramdef>
- <paramdef>unsigned int <parameter>keycode</parameter></paramdef>
- <paramdef>unsigned int <parameter>key_action</parameter></paramdef>
-</funcprototype>
-</funcsynopsis>
-
-<!-- .VL 12 -->
-<variablelist>
- <varlistentry>
- <term>display</term>
- <listitem>
- <para>
-Specifies the connection to the X server.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>device_id</term>
- <listitem>
- <para>
-Specifies which keyboard device was supposed to have caused the input action.
-This is a provision for future support of multiple (distinguishable) keyboard
-devices, and should always be set to 0 for now.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>delay</term>
- <listitem>
- <para>
-Specifies the time (in milliseconds) to wait before the input action.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>keycode</term>
- <listitem>
- <para>
-Specifies which keycode is being acted upon.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>key_action</term>
- <listitem>
- <para>
-Specifies the action to be performed (one of
-<emphasis>XTestPRESS</emphasis>,
-<emphasis>XTestRELEASE</emphasis>, or
-<emphasis>XTestSTROKE</emphasis>).
- </para>
- </listitem>
- </varlistentry>
-</variablelist>
-
-
-<para>
-The
-<function>XTestPressKey</function>
-function creates input actions to be sent to the the server.
-The input actions will be accumulated in a request defined by this extension
-until the request is full or the XTestFlush function is called.
-They will then be sent to the server.
-When the input actions are sent to the server, the input actions will cause
-the server to think that the specified key on the keyboard was moved as
-specified.
-</para>
-
-<para>
-The
-<function>XTestPressKey</function>
-function will return -1 if there is an error, and 0 otherwise.
-</para>
-
-</sect3>
-<sect3 id="xtestflush">
-<title>XTestFlush</title>
-
-<funcsynopsis>
-<funcprototype>
- <funcdef>int <function>XTestFlush</function></funcdef>
- <paramdef>Display <parameter>*display</parameter></paramdef>
-</funcprototype>
-</funcsynopsis>
-
-<!-- .VL 9 -->
-<variablelist>
- <varlistentry>
- <term>display</term>
- <listitem>
- <para>
-Specifies the connection to the X server.
- </para>
- </listitem>
- </varlistentry>
-</variablelist>
-
-<para>
-The
-<function>XTestFlush</function>
-will send any remaining input actions to the server.
-</para>
-
-<para>
-The
-<function>XTestFlush</function>
-function will return -1 if there is an error, and 0 otherwise.
-</para>
-
-</sect3>
-</sect2>
-
-<!-- .H 2 Low~Level~Functions -->
-<sect2 id="low_level_functions">
-<title>Low Level Functions</title>
-
-<!-- .H 3 XTestGetInput -->
-<sect3 id="xtestgetinput">
-<title>XTestGetInput</title>
-
-<funcsynopsis>
-<funcprototype>
- <funcdef>int <function>XTestGetInput</function></funcdef>
- <paramdef>Display <parameter>*display</parameter></paramdef>
- <paramdef>int <parameter>action_handling</parameter></paramdef>
-</funcprototype>
-</funcsynopsis>
-
-
-<variablelist>
- <varlistentry>
- <term>display</term>
- <listitem>
- <para>
-Specifies the connection to the X server.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>action_handling</term>
- <listitem>
- <para>
-Specifies to the server what to do with the user input actions. (one of
-0, <emphasis>XTestPACKED_MOTION</emphasis> or
-<emphasis>XTestPACKED_ACTIONS</emphasis>; optionally 'or'ed
-with <emphasis>XTestEXCLUSIVE</emphasis>).
- </para>
- </listitem>
- </varlistentry>
-</variablelist>
-
-
-<para>
-The
-<function>XTestGetInput</function>
-function tells the server to begin putting information about user input actions
-into events to be sent to the client that called this function. These events
-can be read via the Xlib <function>XNextEvent</function>fR function.
-</para>
-
-<para>
-The server assigns an event type of
-<emphasis>XTestInputActionType</emphasis> to these events
-to distinguish them from other events.
-Since the actual value of the event type may vary depending on how many
-extensions are included with an X11 implementation,
-<emphasis>XTestInputActionType</emphasis> is a variable that will be
-contained in the Xlib
-part of this extension. It may be referenced as follows:
-</para>
-
-<para>
-extern int XTestInputActionType;
-</para>
-
-<itemizedlist>
- <listitem>
- <para>
-An <emphasis>action_handling</emphasis> value of 0 causes the server
-to send one user input action in each
-<emphasis>XTestInputActionType</emphasis> event.
-This can sometimes cause performance problems.
- </para>
- </listitem>
- <listitem>
- <para>
-An <emphasis>action_handling</emphasis> value of
-<emphasis>XTestPACKED_ACTIONS</emphasis> causes the server
-to pack as many user input actions as possible into a
-<emphasis>XTestInputActionType</emphasis> event.
-This is needed if user input actions are happening rapidly (such as
-when the user moves the pointer) to keep performance at a reasonable level.
- </para>
- </listitem>
- <listitem>
- <para>
-An <emphasis>action_handling</emphasis> value of
-<emphasis>XTestPACKED_MOTION</emphasis> causes the server
-to pack only user input actions associated with moving the pointer.
-This allows the
-client to receive button and key motions as they happen without waiting for the
-event to fill up, while still keeping performance at a reasonable level.
- </para>
- </listitem>
- <listitem>
- <para>
-An <emphasis>action_handling</emphasis> value with
-<emphasis>XTestEXCLUSIVE</emphasis> 'or'ed in
-causes the server to send user input actions only to the client.
-The effect on the server is as if the user had performed no input actions.
- </para>
- </listitem>
- <listitem>
- <para>
-An <emphasis>action_handling</emphasis> value without
-<emphasis>XTestEXCLUSIVE</emphasis>
-causes the server to copy user input actions, sending one copy to the
-client, and handling the other copy normally (as it would if this extension
-were not installed).
- </para>
- </listitem>
-</itemizedlist>
-
-<para>
-There are four types of input actions that are passed from the server
-to the client. They are:
-</para>
-
-<variablelist>
- <varlistentry>
- <term>key/button~state~change</term>
- <listitem>
- <para>
-This type of input action contains the keycode of the key or button that
-changed state;
-whether the key or button is up or down,
-and the time delay between this input action and the previous input action.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>pointer~motions</term>
- <listitem>
- <para>
-This type of input action contains information about the motion of the
-pointer when the pointer has only moved a short distance.
-If the pointer has moved a long distance,
-the pointer jump input action is used.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>pointer~jumps</term>
- <listitem>
- <para>
-This type of input action contains information about the motion of the
-pointer when the pointer has moved a long distance.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>delays</term>
- <listitem>
- <para>
-This type of input action is used when the delay between input actions is too
-large to be held in the other input actions.
- </para>
- </listitem>
- </varlistentry>
-</variablelist>
-
-<para>
-The
-<function>XTestGetInput</function>
-function will return -1 if there is an error, and 0 otherwise.
-</para>
-<para>
-An error code of <emphasis>BadAccess</emphasis> means that another client
-has already requested that user input actions be sent to it.
-</para>
-
-</sect3>
-
-<!-- .H 3 XTestStopInput -->
-<sect3 id="xteststopinput">
-<title>XTestStopInput</title>
-
-<funcsynopsis>
-<funcprototype>
- <funcdef>int <function>XTestStopInput</function></funcdef>
- <paramdef>Display <parameter>*display</parameter></paramdef>
-</funcprototype>
-</funcsynopsis>
-
-
-
-<variablelist>
- <varlistentry>
- <term>display</term>
- <listitem>
- <para>
-Specifies the connection to the X server.
- </para>
- </listitem>
- </varlistentry>
-</variablelist>
-
-<para>
-The
-<function>XTestStopInput</function>
-function tells the server to stop putting information about user input actions
-into events.
-The server will process user input actions normally (as it would
-if this extension were not in the server).
-</para>
-
-<para>
-The
-<function>XTestStopInput</function>
-function will return -1 if there is an error, and 0 otherwise.
-</para>
-
-<para>
-An error code of <emphasis>BadAccess</emphasis> means that a request
-was made to stop input when input has never been started.
-</para>
-
-</sect3>
-
-<!-- .H 3 XTestFakeInput -->
-<sect3 id="xtestfakeinput">
-<title>XTestFakeInput</title>
-
-<funcsynopsis>
-<funcprototype>
- <funcdef>int <function>XTestFakeInput</function></funcdef>
- <paramdef>Display <parameter>*display</parameter></paramdef>
- <paramdef>char <parameter>*action_list_addr</parameter></paramdef>
- <paramdef>int <parameter>action_list_size</parameter></paramdef>
- <paramdef>int <parameter>ack_flag</parameter></paramdef>
-</funcprototype>
-</funcsynopsis>
-
-
-<!-- .VL 18 -->
-
-<variablelist>
- <varlistentry>
- <term>display</term>
- <listitem>
- <para>
-Specifies the connection to the X server.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>action_list_addr</term>
- <listitem>
- <para>
-Specifies the address of an list of input actions to be sent to the server.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>action_list_size</term>
- <listitem>
- <para>
-Specifies the size (in bytes) of the list of input actions.
-It may be no larger than <emphasis>XTestMAX_ACTION_LIST_SIZE</emphasis> bytes.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>ack_flag</term>
- <listitem>
- <para>
-Specifies whether the server needs to send an event to indicate that its
-input action buffer is empty (one of
-<emphasis>XTestFAKE_ACK_NOT_NEEDED</emphasis> or
-<emphasis>XTestFAKE_ACK_REQUEST</emphasis>).
- </para>
- </listitem>
- </varlistentry>
-</variablelist>
-
-<para>
-The
-<function>XTestFakeInput</function>
-function tells the server to take the specified user input actions and process
-them as if the user had physically performed them.
-</para>
-
-<para>
-The server can only accept a limited number of input actions at one
-time. This limit can be determined by the
-<function>XTestQueryInputSize</function> function
-in this extension.
-</para>
-
-<para>
-The client should set <emphasis>ack_flag</emphasis> to
-<emphasis>XTestFAKE_ACK_NOT_NEEDED</emphasis>
-on calls to <emphasis>XTestFakeInput</emphasis> that do not reach this limit.
-</para>
-
-<para>
-The client should set <emphasis>ack_flag</emphasis> to
-<emphasis>XTestFAKE_ACK_REQUEST</emphasis>
-on the call to <emphasis>XTestFakeInput</emphasis> that reaches this limit.
-</para>
-
-<para>
-When the server sees an <emphasis>ack_flag</emphasis> value of
-<emphasis>XTestFAKE_ACK_REQUEST</emphasis>
-it finishes processing its input action buffer, then sends an event with
-type <emphasis>XTestFakeAckType</emphasis> to the client.
-When the client reads this event, it knows that it is safe to resume
-sending input actions to the server.
-</para>
-
-<para>
-Since the actual value of the event type may vary depending on how many
-extensions are included with an X11 implementation,
-<emphasis>XTestFakeAckType</emphasis> is a variable that is contained
-in the Xlib part of this extension. It may be referenced as follows:
-</para>
-
-<para>
-extern int XTestFakeAckType;
-</para>
-
-<para>
-There are four types of input actions that are passed from the client
-to the server. They are:
-</para>
-
-<variablelist>
- <varlistentry>
- <term>key/button~state~change</term>
- <listitem>
- <para>
-This type of input action contains the keycode of the key or button that
-is to change state;
-whether the key or button is to be up or down,
-and the time to delay before changing the state of the key or button.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>pointer~motions</term>
- <listitem>
- <para>
-This type of input action contains information about the motion of the
-pointer when the pointer is to be moved a short distance,
-and the time to delay before moving the pointer.
-If the pointer is to be moved a long distance,
-the pointer jump input action must be used.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>pointer~jumps</term>
- <listitem>
- <para>
-This type of input action contains information about the motion of the
-pointer when the pointer is to be moved a long distance,
-and the time to delay before moving the pointer.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>delays</term>
- <listitem>
- <para>
-This type of input action is used when the delay between input actions is too
-large to be held in the other input actions.
- </para>
- </listitem>
- </varlistentry>
-</variablelist>
-
-
-<para>
-The
-<function>XTestFakeInput</function>
-function will return -1 if there is an error, and 0 otherwise.
-</para>
-
-<para>
-An error code of \fIBadAccess\fR means that another client has already
-sent user input actions to the server, and the server has not finished
-processing the user input actions.
-</para>
-
-</sect3>
-
-<!-- .H 3 XTestQueryInputSize -->
-<sect3 id="xtestqueryinputsize">
-<title>XTestQueryInputSize</title>
-
-<funcsynopsis>
-<funcprototype>
- <funcdef>int <function>XTestQueryInputSize</function></funcdef>
- <paramdef>Display <parameter>*display</parameter></paramdef>
- <paramdef>unsigned long <parameter>size_return</parameter></paramdef>
-</funcprototype>
-</funcsynopsis>
-
-
-<variablelist>
- <varlistentry>
- <term>display</term>
- <listitem>
- <para>
-Specifies the connection to the X server.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>size_return</term>
- <listitem>
- <para>
-Returns the number of input actions that the server's input action buffer can
-hold.
- </para>
- </listitem>
- </varlistentry>
-</variablelist>
-
-<para>
-The
-<function>XTestQueryInputSize</function>
-function asks the server to return the number of input actions that it can hold
-in its input action buffer in the unsigned long pointed to by \fIsize_return\fR.
-</para>
-<para>
-The
-<function>XTestQueryInputSize</function>
-function will return -1 if there is an error, and 0 otherwise.
-</para>
-</sect3>
-
-<!-- .H 3 XTestReset -->
-<sect3 id="xtestreset">
-<title>XTestReset</title>
-
-<funcsynopsis>
-<funcprototype>
- <funcdef>int <function>XTestReset</function></funcdef>
- <paramdef>Display <parameter>*display</parameter></paramdef>
-</funcprototype>
-</funcsynopsis>
-
-
-<variablelist>
- <varlistentry>
- <term>display</term>
- <listitem>
- <para>
-Specifies the connection to the X server.
- </para>
- </listitem>
- </varlistentry>
-</variablelist>
-
-<para>
-The
-<function>XTestReset</function>
-function tells the server to set everything having to do with this extension
-back to its initial state. After this call the server will act as if this
-extension were not installed until one of the extension functions is called by
-a client. This function is not normally needed, but is included in case a
-client wishes to clean up the server state, such as after a serious error.
-</para>
-
-<para>
-The
-<function>XTestReset</function>
-function will return -1 if there is an error, and 0 otherwise.
-</para>
-
-</sect3>
-</sect2>
-</sect1>
-
-<!-- .H 1 'xtestext1.h'~File~Listing -->
-<!-- .so xtestext1.h -->
-<!-- .TC 1 1 4 -->
-</article>
+<?xml version="1.0" encoding="UTF-8" ?> +<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" + "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"> + + +<article id="xtest1"> + +<articleinfo> + <title>X11 INPUT SYNTHESIS EXTENSION PROPOSAL</title> + <subtitle>X Consortium Standard</subtitle> + <releaseinfo>Version 1.0</releaseinfo> + <authorgroup> + <author> + <firstname>Larry</firstname><surname>Woestman</surname> + <affiliation><jobtitle>Member of Technical Staff</jobtitle> + <orgname>Hewlett Packard</orgname></affiliation> + </author> + </authorgroup> + <corpname>X Consortium Standard</corpname> + <copyright><year>1993</year><holder>X Consortium</holder></copyright> + <affiliation><orgname>X Consortium</orgname></affiliation> + +<abstract> +<para> +This is a proposal for an extension to the X11 server and Xlib. +</para> +</abstract> + +</articleinfo> + +<sect1 id="introduction"> +<title>Introduction</title> +<para> +This is a proposal for an extension to the X11 server and Xlib. +It provides two capabilities: +</para> + +<itemizedlist> + <listitem> + <para> +It allows a client to generate user input actions in the server without +requiring a user to be present. + </para> + </listitem> + <listitem> + <para> +It also allows a client to control the +handling of user input actions by the server. + </para> + </listitem> +</itemizedlist> + +<para> +The capability +to allow a client to generate user input actions in the server +will be used by some of the X Testing Consortium Xlib tests. +Both capabilities will be used by the X Testing Consortium client exerciser +program. +These capabilities may also be useful in other programs. +</para> + +<para> +This extension requires modification to device-dependent code in the +server. Therefore it is not a 'portable' extension as defined by the +X11 Server Extensions document. However, the majority of the code +and functionality of this extension will be implementation-independent. +</para> + +</sect1> + +<sect1 id="conventions_used_in_this_document"> +<title>Conventions Used In This Document</title> + +<para> +The naming conventions used in the Xlib documentation are followed +with these additions: +</para> + +<itemizedlist> + <listitem> + <para> +The names of all functions defined in this extension begin with 'XTest', +with the first letter of each additional word capitalized. + </para> + </listitem> + <listitem> + <para> +The names of the protocol request structures follow the Xlib convention +of 'x<name>Req'. + </para> + </listitem> + <listitem> + <para> +The names of the protocol request minor type codes follow the Xlib convention +of 'X_<name>'. + </para> + </listitem> + <listitem> + <para> +The names of all other constants defined in this extension begin with 'XTest', +with the rest of the name in upper case letters. + </para> + </listitem> + <listitem> + <para> +All constants and structures defined in this extension will have their +values specified in the 'xtestext1.h' file (listed in section 5). + </para> + </listitem> +</itemizedlist> + +</sect1> +<sect1 id="definition_of_terms"> +<title>Definition Of Terms</title> + +<sect2 id="input_actions"> +<title>Input Actions</title> +<para> +Input actions are pointer movements, button presses and releases, +and key presses and releases. They can be generated by a user or by a client +(using functions in this extension). +</para> +</sect2> + +<sect2 id="user_input_actions"> +<title>User Input Actions</title> +<para> +User input actions are input actions that are generated by the user +moving a pointing device (typically a mouse), pressing and releasing buttons on +the pointing device, and pressing and releasing keys on the keyboard. +</para> +</sect2> + +</sect1> + +<sect1 id="what_does_this_extension_do"> +<title>What Does This Extension Do?</title> +<para> +Without this extension, user input actions are processed by the server, +and are converted into normal X events that are sent to the +appropriate client or clients. +</para> + +<para> +This extension adds the following capabilities: +</para> + +<itemizedlist> + <listitem> + <para> +Input actions may be sent from a client to the server to be +processed just as if the user had physically performed them. +The input actions are provided to the server in the form of X protocol +requests defined by this extension. +The information provided to the server includes what action should be +performed, and how long to delay before processing the action in the server. + </para> + </listitem> + <listitem> + <para> +User input actions may be diverted to a client before being processed by the +server. +The effect on the server is as if the user had performed no input action. +The user input actions are provided to the client in the form of X events +defined by this extension. +The information provided to the client includes what user input action +occurred and the delay between this user input action and the previous user +input action. +The client may then do anything it wishes with this information. + </para> + </listitem> + <listitem> + <para> +User input actions may be copied, with one copy going to the server in the +normal way, and the other copy being sent to a client as described above. + </para> + </listitem> +</itemizedlist> + +</sect1> +<sect1 id="functions_in_this_extension"> +<title>Functions In This Extension</title> + +<sect2 id="high_level_functions"> +<title>High Level Functions</title> + +<para> +These functions are built on top of the low level functions described later. +</para> + +<sect3 id="xtestmovepointer"> +<title>XTestMovePointer</title> + +<funcsynopsis> +<funcprototype> + <funcdef>int <function>XTestMovePointer</function></funcdef> + <paramdef>Display <parameter>*display</parameter></paramdef> + <paramdef>int <parameter>device_id</parameter></paramdef> + <paramdef>unsigned long <parameter>delay</parameter></paramdef> + <paramdef>int <parameter>x</parameter></paramdef> + <paramdef>int <parameter>y</parameter></paramdef> + <paramdef>unsigned int <parameter>count</parameter></paramdef> +</funcprototype> +</funcsynopsis> + +<variablelist> + <varlistentry> + <term>display</term> + <listitem> + <para> +Specifies the connection to the X server. + </para> + </listitem> + </varlistentry> + <varlistentry> + <term>device_id</term> + <listitem> + <para> +Specifies which pointer device was supposed to have caused the input action. +This is a provision for future support of multiple (distinguishable) pointer +devices, and should always be set to 0 for now. + </para> + </listitem> + </varlistentry> + <varlistentry> + <term>delay</term> + <listitem> + <para> +Specifies the time (in milliseconds) to wait before each movement +of the pointer. + </para> + </listitem> + </varlistentry> + <varlistentry> + <term>x, y</term> + <listitem> + <para> +Specifies the x and y coordinates to move the pointer to relative to the +root window for the specified display. + </para> + </listitem> + </varlistentry> + <varlistentry> + <term>count</term> + <listitem> + <para> +Specifies the number of 'delay, x, y' triplets contained in the +<emphasis>delay</emphasis>, +<emphasis>x</emphasis> and +<emphasis>y</emphasis> arrays. + </para> + </listitem> + </varlistentry> +</variablelist> + +<para> +The +<function>XTestMovePointer</function> +function creates input actions to be sent to the the server. +The input actions will be accumulated in a request defined by this extension +until the request is full or the XTestFlush function is called. +They will then be sent to the server. +When the input actions are sent to the server, the input actions will cause +the server to think that the pointer was moved to the specified position(s), +with the specified delay before each input action. +</para> +<para> +The +<function>XTestMovePointer</function> +function will return -1 if there is an error, and 0 otherwise. +</para> +</sect3> + +<sect3 id="xtestpressbutton"> +<title>XTestPressButton</title> + +<funcsynopsis> +<funcprototype> + <funcdef>int <function>XTestPressButton</function></funcdef> + <paramdef>Display <parameter>*display</parameter></paramdef> + <paramdef>int <parameter>device_id</parameter></paramdef> + <paramdef>unsigned long <parameter>delay</parameter></paramdef> + <paramdef>unsigned int <parameter>button_number</parameter></paramdef> + <paramdef>unsigned int <parameter>button_action</parameter></paramdef> +</funcprototype> +</funcsynopsis> + + +<!-- .VL 15 --> +<variablelist> + <varlistentry> + <term>display</term> + <listitem> + <para> +Specifies the connection to the X server. + </para> + </listitem> + </varlistentry> + <varlistentry> + <term>device_id</term> + <listitem> + <para> +Specifies which button device was supposed to have caused the input action. +This is a provision for future support of multiple (distinguishable) button +devices, and should always be set to 0 for now. + </para> + </listitem> + </varlistentry> + <varlistentry> + <term>delay</term> + <listitem> + <para> +Specifies the time (in milliseconds) to wait before the input action. + </para> + </listitem> + </varlistentry> + <varlistentry> + <term>button_number</term> + <listitem> + <para> +Specifies which button is being acted upon. + </para> + </listitem> + </varlistentry> + <varlistentry> + <term>button_action</term> + <listitem> + <para> +Specifies the action to be performed (one of +<emphasis>XTestPRESS</emphasis>, +<emphasis>XTestRELEASE</emphasis>, or +<emphasis>XTestSTROKE</emphasis>). + </para> + </listitem> + </varlistentry> +</variablelist> + +<para> +The +<function>XTestPressButton</function> +function creates input actions to be sent to the the server. +The input actions will be accumulated in a request defined by this extension +until the request is full or the XTestFlush function is called. +They will then be sent to the server. +When the input actions are sent to the server, the input actions will cause +the server to think that the specified button was moved as specified. +</para> +<para> +The +<function>XTestPressButton</function> +function will return -1 if there is an error, and 0 otherwise. +</para> +</sect3> + +<sect3 id="xtestpresskey"> +<title>XTestPressKey</title> + +<funcsynopsis> +<funcprototype> + <funcdef>int <function>XTestPressKey</function></funcdef> + <paramdef>Display <parameter>*display</parameter></paramdef> + <paramdef>int <parameter>device_id</parameter></paramdef> + <paramdef>unsigned long <parameter>delay</parameter></paramdef> + <paramdef>unsigned int <parameter>keycode</parameter></paramdef> + <paramdef>unsigned int <parameter>key_action</parameter></paramdef> +</funcprototype> +</funcsynopsis> + +<!-- .VL 12 --> +<variablelist> + <varlistentry> + <term>display</term> + <listitem> + <para> +Specifies the connection to the X server. + </para> + </listitem> + </varlistentry> + <varlistentry> + <term>device_id</term> + <listitem> + <para> +Specifies which keyboard device was supposed to have caused the input action. +This is a provision for future support of multiple (distinguishable) keyboard +devices, and should always be set to 0 for now. + </para> + </listitem> + </varlistentry> + <varlistentry> + <term>delay</term> + <listitem> + <para> +Specifies the time (in milliseconds) to wait before the input action. + </para> + </listitem> + </varlistentry> + <varlistentry> + <term>keycode</term> + <listitem> + <para> +Specifies which keycode is being acted upon. + </para> + </listitem> + </varlistentry> + <varlistentry> + <term>key_action</term> + <listitem> + <para> +Specifies the action to be performed (one of +<emphasis>XTestPRESS</emphasis>, +<emphasis>XTestRELEASE</emphasis>, or +<emphasis>XTestSTROKE</emphasis>). + </para> + </listitem> + </varlistentry> +</variablelist> + + +<para> +The +<function>XTestPressKey</function> +function creates input actions to be sent to the the server. +The input actions will be accumulated in a request defined by this extension +until the request is full or the XTestFlush function is called. +They will then be sent to the server. +When the input actions are sent to the server, the input actions will cause +the server to think that the specified key on the keyboard was moved as +specified. +</para> + +<para> +The +<function>XTestPressKey</function> +function will return -1 if there is an error, and 0 otherwise. +</para> + +</sect3> +<sect3 id="xtestflush"> +<title>XTestFlush</title> + +<funcsynopsis> +<funcprototype> + <funcdef>int <function>XTestFlush</function></funcdef> + <paramdef>Display <parameter>*display</parameter></paramdef> +</funcprototype> +</funcsynopsis> + +<!-- .VL 9 --> +<variablelist> + <varlistentry> + <term>display</term> + <listitem> + <para> +Specifies the connection to the X server. + </para> + </listitem> + </varlistentry> +</variablelist> + +<para> +The +<function>XTestFlush</function> +will send any remaining input actions to the server. +</para> + +<para> +The +<function>XTestFlush</function> +function will return -1 if there is an error, and 0 otherwise. +</para> + +</sect3> +</sect2> + +<!-- .H 2 Low~Level~Functions --> +<sect2 id="low_level_functions"> +<title>Low Level Functions</title> + +<!-- .H 3 XTestGetInput --> +<sect3 id="xtestgetinput"> +<title>XTestGetInput</title> + +<funcsynopsis> +<funcprototype> + <funcdef>int <function>XTestGetInput</function></funcdef> + <paramdef>Display <parameter>*display</parameter></paramdef> + <paramdef>int <parameter>action_handling</parameter></paramdef> +</funcprototype> +</funcsynopsis> + + +<variablelist> + <varlistentry> + <term>display</term> + <listitem> + <para> +Specifies the connection to the X server. + </para> + </listitem> + </varlistentry> + <varlistentry> + <term>action_handling</term> + <listitem> + <para> +Specifies to the server what to do with the user input actions. (one of +0, <emphasis>XTestPACKED_MOTION</emphasis> or +<emphasis>XTestPACKED_ACTIONS</emphasis>; optionally 'or'ed +with <emphasis>XTestEXCLUSIVE</emphasis>). + </para> + </listitem> + </varlistentry> +</variablelist> + + +<para> +The +<function>XTestGetInput</function> +function tells the server to begin putting information about user input actions +into events to be sent to the client that called this function. These events +can be read via the Xlib <function>XNextEvent</function>fR function. +</para> + +<para> +The server assigns an event type of +<emphasis>XTestInputActionType</emphasis> to these events +to distinguish them from other events. +Since the actual value of the event type may vary depending on how many +extensions are included with an X11 implementation, +<emphasis>XTestInputActionType</emphasis> is a variable that will be +contained in the Xlib +part of this extension. It may be referenced as follows: +</para> + +<para> +extern int XTestInputActionType; +</para> + +<itemizedlist> + <listitem> + <para> +An <emphasis>action_handling</emphasis> value of 0 causes the server +to send one user input action in each +<emphasis>XTestInputActionType</emphasis> event. +This can sometimes cause performance problems. + </para> + </listitem> + <listitem> + <para> +An <emphasis>action_handling</emphasis> value of +<emphasis>XTestPACKED_ACTIONS</emphasis> causes the server +to pack as many user input actions as possible into a +<emphasis>XTestInputActionType</emphasis> event. +This is needed if user input actions are happening rapidly (such as +when the user moves the pointer) to keep performance at a reasonable level. + </para> + </listitem> + <listitem> + <para> +An <emphasis>action_handling</emphasis> value of +<emphasis>XTestPACKED_MOTION</emphasis> causes the server +to pack only user input actions associated with moving the pointer. +This allows the +client to receive button and key motions as they happen without waiting for the +event to fill up, while still keeping performance at a reasonable level. + </para> + </listitem> + <listitem> + <para> +An <emphasis>action_handling</emphasis> value with +<emphasis>XTestEXCLUSIVE</emphasis> 'or'ed in +causes the server to send user input actions only to the client. +The effect on the server is as if the user had performed no input actions. + </para> + </listitem> + <listitem> + <para> +An <emphasis>action_handling</emphasis> value without +<emphasis>XTestEXCLUSIVE</emphasis> +causes the server to copy user input actions, sending one copy to the +client, and handling the other copy normally (as it would if this extension +were not installed). + </para> + </listitem> +</itemizedlist> + +<para> +There are four types of input actions that are passed from the server +to the client. They are: +</para> + +<variablelist> + <varlistentry> + <term>key/button~state~change</term> + <listitem> + <para> +This type of input action contains the keycode of the key or button that +changed state; +whether the key or button is up or down, +and the time delay between this input action and the previous input action. + </para> + </listitem> + </varlistentry> + <varlistentry> + <term>pointer~motions</term> + <listitem> + <para> +This type of input action contains information about the motion of the +pointer when the pointer has only moved a short distance. +If the pointer has moved a long distance, +the pointer jump input action is used. + </para> + </listitem> + </varlistentry> + <varlistentry> + <term>pointer~jumps</term> + <listitem> + <para> +This type of input action contains information about the motion of the +pointer when the pointer has moved a long distance. + </para> + </listitem> + </varlistentry> + <varlistentry> + <term>delays</term> + <listitem> + <para> +This type of input action is used when the delay between input actions is too +large to be held in the other input actions. + </para> + </listitem> + </varlistentry> +</variablelist> + +<para> +The +<function>XTestGetInput</function> +function will return -1 if there is an error, and 0 otherwise. +</para> +<para> +An error code of <emphasis>BadAccess</emphasis> means that another client +has already requested that user input actions be sent to it. +</para> + +</sect3> + +<!-- .H 3 XTestStopInput --> +<sect3 id="xteststopinput"> +<title>XTestStopInput</title> + +<funcsynopsis> +<funcprototype> + <funcdef>int <function>XTestStopInput</function></funcdef> + <paramdef>Display <parameter>*display</parameter></paramdef> +</funcprototype> +</funcsynopsis> + + + +<variablelist> + <varlistentry> + <term>display</term> + <listitem> + <para> +Specifies the connection to the X server. + </para> + </listitem> + </varlistentry> +</variablelist> + +<para> +The +<function>XTestStopInput</function> +function tells the server to stop putting information about user input actions +into events. +The server will process user input actions normally (as it would +if this extension were not in the server). +</para> + +<para> +The +<function>XTestStopInput</function> +function will return -1 if there is an error, and 0 otherwise. +</para> + +<para> +An error code of <emphasis>BadAccess</emphasis> means that a request +was made to stop input when input has never been started. +</para> + +</sect3> + +<!-- .H 3 XTestFakeInput --> +<sect3 id="xtestfakeinput"> +<title>XTestFakeInput</title> + +<funcsynopsis> +<funcprototype> + <funcdef>int <function>XTestFakeInput</function></funcdef> + <paramdef>Display <parameter>*display</parameter></paramdef> + <paramdef>char <parameter>*action_list_addr</parameter></paramdef> + <paramdef>int <parameter>action_list_size</parameter></paramdef> + <paramdef>int <parameter>ack_flag</parameter></paramdef> +</funcprototype> +</funcsynopsis> + + +<!-- .VL 18 --> + +<variablelist> + <varlistentry> + <term>display</term> + <listitem> + <para> +Specifies the connection to the X server. + </para> + </listitem> + </varlistentry> + <varlistentry> + <term>action_list_addr</term> + <listitem> + <para> +Specifies the address of an list of input actions to be sent to the server. + </para> + </listitem> + </varlistentry> + <varlistentry> + <term>action_list_size</term> + <listitem> + <para> +Specifies the size (in bytes) of the list of input actions. +It may be no larger than <emphasis>XTestMAX_ACTION_LIST_SIZE</emphasis> bytes. + </para> + </listitem> + </varlistentry> + <varlistentry> + <term>ack_flag</term> + <listitem> + <para> +Specifies whether the server needs to send an event to indicate that its +input action buffer is empty (one of +<emphasis>XTestFAKE_ACK_NOT_NEEDED</emphasis> or +<emphasis>XTestFAKE_ACK_REQUEST</emphasis>). + </para> + </listitem> + </varlistentry> +</variablelist> + +<para> +The +<function>XTestFakeInput</function> +function tells the server to take the specified user input actions and process +them as if the user had physically performed them. +</para> + +<para> +The server can only accept a limited number of input actions at one +time. This limit can be determined by the +<function>XTestQueryInputSize</function> function +in this extension. +</para> + +<para> +The client should set <emphasis>ack_flag</emphasis> to +<emphasis>XTestFAKE_ACK_NOT_NEEDED</emphasis> +on calls to <emphasis>XTestFakeInput</emphasis> that do not reach this limit. +</para> + +<para> +The client should set <emphasis>ack_flag</emphasis> to +<emphasis>XTestFAKE_ACK_REQUEST</emphasis> +on the call to <emphasis>XTestFakeInput</emphasis> that reaches this limit. +</para> + +<para> +When the server sees an <emphasis>ack_flag</emphasis> value of +<emphasis>XTestFAKE_ACK_REQUEST</emphasis> +it finishes processing its input action buffer, then sends an event with +type <emphasis>XTestFakeAckType</emphasis> to the client. +When the client reads this event, it knows that it is safe to resume +sending input actions to the server. +</para> + +<para> +Since the actual value of the event type may vary depending on how many +extensions are included with an X11 implementation, +<emphasis>XTestFakeAckType</emphasis> is a variable that is contained +in the Xlib part of this extension. It may be referenced as follows: +</para> + +<para> +extern int XTestFakeAckType; +</para> + +<para> +There are four types of input actions that are passed from the client +to the server. They are: +</para> + +<variablelist> + <varlistentry> + <term>key/button~state~change</term> + <listitem> + <para> +This type of input action contains the keycode of the key or button that +is to change state; +whether the key or button is to be up or down, +and the time to delay before changing the state of the key or button. + </para> + </listitem> + </varlistentry> + <varlistentry> + <term>pointer~motions</term> + <listitem> + <para> +This type of input action contains information about the motion of the +pointer when the pointer is to be moved a short distance, +and the time to delay before moving the pointer. +If the pointer is to be moved a long distance, +the pointer jump input action must be used. + </para> + </listitem> + </varlistentry> + <varlistentry> + <term>pointer~jumps</term> + <listitem> + <para> +This type of input action contains information about the motion of the +pointer when the pointer is to be moved a long distance, +and the time to delay before moving the pointer. + </para> + </listitem> + </varlistentry> + <varlistentry> + <term>delays</term> + <listitem> + <para> +This type of input action is used when the delay between input actions is too +large to be held in the other input actions. + </para> + </listitem> + </varlistentry> +</variablelist> + + +<para> +The +<function>XTestFakeInput</function> +function will return -1 if there is an error, and 0 otherwise. +</para> + +<para> +An error code of \fIBadAccess\fR means that another client has already +sent user input actions to the server, and the server has not finished +processing the user input actions. +</para> + +</sect3> + +<!-- .H 3 XTestQueryInputSize --> +<sect3 id="xtestqueryinputsize"> +<title>XTestQueryInputSize</title> + +<funcsynopsis> +<funcprototype> + <funcdef>int <function>XTestQueryInputSize</function></funcdef> + <paramdef>Display <parameter>*display</parameter></paramdef> + <paramdef>unsigned long <parameter>size_return</parameter></paramdef> +</funcprototype> +</funcsynopsis> + + +<variablelist> + <varlistentry> + <term>display</term> + <listitem> + <para> +Specifies the connection to the X server. + </para> + </listitem> + </varlistentry> + <varlistentry> + <term>size_return</term> + <listitem> + <para> +Returns the number of input actions that the server's input action buffer can +hold. + </para> + </listitem> + </varlistentry> +</variablelist> + +<para> +The +<function>XTestQueryInputSize</function> +function asks the server to return the number of input actions that it can hold +in its input action buffer in the unsigned long pointed to by \fIsize_return\fR. +</para> +<para> +The +<function>XTestQueryInputSize</function> +function will return -1 if there is an error, and 0 otherwise. +</para> +</sect3> + +<!-- .H 3 XTestReset --> +<sect3 id="xtestreset"> +<title>XTestReset</title> + +<funcsynopsis> +<funcprototype> + <funcdef>int <function>XTestReset</function></funcdef> + <paramdef>Display <parameter>*display</parameter></paramdef> +</funcprototype> +</funcsynopsis> + + +<variablelist> + <varlistentry> + <term>display</term> + <listitem> + <para> +Specifies the connection to the X server. + </para> + </listitem> + </varlistentry> +</variablelist> + +<para> +The +<function>XTestReset</function> +function tells the server to set everything having to do with this extension +back to its initial state. After this call the server will act as if this +extension were not installed until one of the extension functions is called by +a client. This function is not normally needed, but is included in case a +client wishes to clean up the server state, such as after a serious error. +</para> + +<para> +The +<function>XTestReset</function> +function will return -1 if there is an error, and 0 otherwise. +</para> + +</sect3> +</sect2> +</sect1> + +<!-- .H 1 'xtestext1.h'~File~Listing --> +<!-- .so xtestext1.h --> +<!-- .TC 1 1 4 --> +</article> |