• R/O
  • HTTP
  • SSH
  • HTTPS

Commit

Tags
No Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

Commit MetaInfo

Revision364df43e42395cfbb3b8a1b88d71fd0d3bb67b55 (tree)
Time2011-03-06 15:44:35
Authornobody <nobody@exam...>
Commiternobody

Log Message

オリジナルファイルも管理下に置く。

Change Summary

Incremental Difference

--- /dev/null
+++ b/original/AUTHORS
@@ -0,0 +1,22 @@
1+Xnee / AUTHORS
2+--------------------
3+
4+Authors:
5+--------
6+Henrik Sandklef hesa@gnu.org
7+Jon-Erling Dahl joda@gadgeteer.nu
8+
9+Contributors (code fixes, comments etc):
10+---------------------------------------
11+Janice Waddick
12+
13+Juan F. Codagnone
14+Lars Brinkhoff
15+Ton van Vliet
16+Nekrasov Alexander
17+Dr. Adrian Wrigley
18+Conall McGleenan
19+Bianchi Roberto
20+Thomas Riga
21+Stuart Guthrie
22+Volker Stolz
--- /dev/null
+++ b/original/COPYING
@@ -0,0 +1,340 @@
1+ GNU GENERAL PUBLIC LICENSE
2+ Version 2, June 1991
3+
4+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
5+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
6+ Everyone is permitted to copy and distribute verbatim copies
7+ of this license document, but changing it is not allowed.
8+
9+ Preamble
10+
11+ The licenses for most software are designed to take away your
12+freedom to share and change it. By contrast, the GNU General Public
13+License is intended to guarantee your freedom to share and change free
14+software--to make sure the software is free for all its users. This
15+General Public License applies to most of the Free Software
16+Foundation's software and to any other program whose authors commit to
17+using it. (Some other Free Software Foundation software is covered by
18+the GNU Library General Public License instead.) You can apply it to
19+your programs, too.
20+
21+ When we speak of free software, we are referring to freedom, not
22+price. Our General Public Licenses are designed to make sure that you
23+have the freedom to distribute copies of free software (and charge for
24+this service if you wish), that you receive source code or can get it
25+if you want it, that you can change the software or use pieces of it
26+in new free programs; and that you know you can do these things.
27+
28+ To protect your rights, we need to make restrictions that forbid
29+anyone to deny you these rights or to ask you to surrender the rights.
30+These restrictions translate to certain responsibilities for you if you
31+distribute copies of the software, or if you modify it.
32+
33+ For example, if you distribute copies of such a program, whether
34+gratis or for a fee, you must give the recipients all the rights that
35+you have. You must make sure that they, too, receive or can get the
36+source code. And you must show them these terms so they know their
37+rights.
38+
39+ We protect your rights with two steps: (1) copyright the software, and
40+(2) offer you this license which gives you legal permission to copy,
41+distribute and/or modify the software.
42+
43+ Also, for each author's protection and ours, we want to make certain
44+that everyone understands that there is no warranty for this free
45+software. If the software is modified by someone else and passed on, we
46+want its recipients to know that what they have is not the original, so
47+that any problems introduced by others will not reflect on the original
48+authors' reputations.
49+
50+ Finally, any free program is threatened constantly by software
51+patents. We wish to avoid the danger that redistributors of a free
52+program will individually obtain patent licenses, in effect making the
53+program proprietary. To prevent this, we have made it clear that any
54+patent must be licensed for everyone's free use or not licensed at all.
55+
56+ The precise terms and conditions for copying, distribution and
57+modification follow.
58+
59+ GNU GENERAL PUBLIC LICENSE
60+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
61+
62+ 0. This License applies to any program or other work which contains
63+a notice placed by the copyright holder saying it may be distributed
64+under the terms of this General Public License. The "Program", below,
65+refers to any such program or work, and a "work based on the Program"
66+means either the Program or any derivative work under copyright law:
67+that is to say, a work containing the Program or a portion of it,
68+either verbatim or with modifications and/or translated into another
69+language. (Hereinafter, translation is included without limitation in
70+the term "modification".) Each licensee is addressed as "you".
71+
72+Activities other than copying, distribution and modification are not
73+covered by this License; they are outside its scope. The act of
74+running the Program is not restricted, and the output from the Program
75+is covered only if its contents constitute a work based on the
76+Program (independent of having been made by running the Program).
77+Whether that is true depends on what the Program does.
78+
79+ 1. You may copy and distribute verbatim copies of the Program's
80+source code as you receive it, in any medium, provided that you
81+conspicuously and appropriately publish on each copy an appropriate
82+copyright notice and disclaimer of warranty; keep intact all the
83+notices that refer to this License and to the absence of any warranty;
84+and give any other recipients of the Program a copy of this License
85+along with the Program.
86+
87+You may charge a fee for the physical act of transferring a copy, and
88+you may at your option offer warranty protection in exchange for a fee.
89+
90+ 2. You may modify your copy or copies of the Program or any portion
91+of it, thus forming a work based on the Program, and copy and
92+distribute such modifications or work under the terms of Section 1
93+above, provided that you also meet all of these conditions:
94+
95+ a) You must cause the modified files to carry prominent notices
96+ stating that you changed the files and the date of any change.
97+
98+ b) You must cause any work that you distribute or publish, that in
99+ whole or in part contains or is derived from the Program or any
100+ part thereof, to be licensed as a whole at no charge to all third
101+ parties under the terms of this License.
102+
103+ c) If the modified program normally reads commands interactively
104+ when run, you must cause it, when started running for such
105+ interactive use in the most ordinary way, to print or display an
106+ announcement including an appropriate copyright notice and a
107+ notice that there is no warranty (or else, saying that you provide
108+ a warranty) and that users may redistribute the program under
109+ these conditions, and telling the user how to view a copy of this
110+ License. (Exception: if the Program itself is interactive but
111+ does not normally print such an announcement, your work based on
112+ the Program is not required to print an announcement.)
113+
114+These requirements apply to the modified work as a whole. If
115+identifiable sections of that work are not derived from the Program,
116+and can be reasonably considered independent and separate works in
117+themselves, then this License, and its terms, do not apply to those
118+sections when you distribute them as separate works. But when you
119+distribute the same sections as part of a whole which is a work based
120+on the Program, the distribution of the whole must be on the terms of
121+this License, whose permissions for other licensees extend to the
122+entire whole, and thus to each and every part regardless of who wrote it.
123+
124+Thus, it is not the intent of this section to claim rights or contest
125+your rights to work written entirely by you; rather, the intent is to
126+exercise the right to control the distribution of derivative or
127+collective works based on the Program.
128+
129+In addition, mere aggregation of another work not based on the Program
130+with the Program (or with a work based on the Program) on a volume of
131+a storage or distribution medium does not bring the other work under
132+the scope of this License.
133+
134+ 3. You may copy and distribute the Program (or a work based on it,
135+under Section 2) in object code or executable form under the terms of
136+Sections 1 and 2 above provided that you also do one of the following:
137+
138+ a) Accompany it with the complete corresponding machine-readable
139+ source code, which must be distributed under the terms of Sections
140+ 1 and 2 above on a medium customarily used for software interchange; or,
141+
142+ b) Accompany it with a written offer, valid for at least three
143+ years, to give any third party, for a charge no more than your
144+ cost of physically performing source distribution, a complete
145+ machine-readable copy of the corresponding source code, to be
146+ distributed under the terms of Sections 1 and 2 above on a medium
147+ customarily used for software interchange; or,
148+
149+ c) Accompany it with the information you received as to the offer
150+ to distribute corresponding source code. (This alternative is
151+ allowed only for noncommercial distribution and only if you
152+ received the program in object code or executable form with such
153+ an offer, in accord with Subsection b above.)
154+
155+The source code for a work means the preferred form of the work for
156+making modifications to it. For an executable work, complete source
157+code means all the source code for all modules it contains, plus any
158+associated interface definition files, plus the scripts used to
159+control compilation and installation of the executable. However, as a
160+special exception, the source code distributed need not include
161+anything that is normally distributed (in either source or binary
162+form) with the major components (compiler, kernel, and so on) of the
163+operating system on which the executable runs, unless that component
164+itself accompanies the executable.
165+
166+If distribution of executable or object code is made by offering
167+access to copy from a designated place, then offering equivalent
168+access to copy the source code from the same place counts as
169+distribution of the source code, even though third parties are not
170+compelled to copy the source along with the object code.
171+
172+ 4. You may not copy, modify, sublicense, or distribute the Program
173+except as expressly provided under this License. Any attempt
174+otherwise to copy, modify, sublicense or distribute the Program is
175+void, and will automatically terminate your rights under this License.
176+However, parties who have received copies, or rights, from you under
177+this License will not have their licenses terminated so long as such
178+parties remain in full compliance.
179+
180+ 5. You are not required to accept this License, since you have not
181+signed it. However, nothing else grants you permission to modify or
182+distribute the Program or its derivative works. These actions are
183+prohibited by law if you do not accept this License. Therefore, by
184+modifying or distributing the Program (or any work based on the
185+Program), you indicate your acceptance of this License to do so, and
186+all its terms and conditions for copying, distributing or modifying
187+the Program or works based on it.
188+
189+ 6. Each time you redistribute the Program (or any work based on the
190+Program), the recipient automatically receives a license from the
191+original licensor to copy, distribute or modify the Program subject to
192+these terms and conditions. You may not impose any further
193+restrictions on the recipients' exercise of the rights granted herein.
194+You are not responsible for enforcing compliance by third parties to
195+this License.
196+
197+ 7. If, as a consequence of a court judgment or allegation of patent
198+infringement or for any other reason (not limited to patent issues),
199+conditions are imposed on you (whether by court order, agreement or
200+otherwise) that contradict the conditions of this License, they do not
201+excuse you from the conditions of this License. If you cannot
202+distribute so as to satisfy simultaneously your obligations under this
203+License and any other pertinent obligations, then as a consequence you
204+may not distribute the Program at all. For example, if a patent
205+license would not permit royalty-free redistribution of the Program by
206+all those who receive copies directly or indirectly through you, then
207+the only way you could satisfy both it and this License would be to
208+refrain entirely from distribution of the Program.
209+
210+If any portion of this section is held invalid or unenforceable under
211+any particular circumstance, the balance of the section is intended to
212+apply and the section as a whole is intended to apply in other
213+circumstances.
214+
215+It is not the purpose of this section to induce you to infringe any
216+patents or other property right claims or to contest validity of any
217+such claims; this section has the sole purpose of protecting the
218+integrity of the free software distribution system, which is
219+implemented by public license practices. Many people have made
220+generous contributions to the wide range of software distributed
221+through that system in reliance on consistent application of that
222+system; it is up to the author/donor to decide if he or she is willing
223+to distribute software through any other system and a licensee cannot
224+impose that choice.
225+
226+This section is intended to make thoroughly clear what is believed to
227+be a consequence of the rest of this License.
228+
229+ 8. If the distribution and/or use of the Program is restricted in
230+certain countries either by patents or by copyrighted interfaces, the
231+original copyright holder who places the Program under this License
232+may add an explicit geographical distribution limitation excluding
233+those countries, so that distribution is permitted only in or among
234+countries not thus excluded. In such case, this License incorporates
235+the limitation as if written in the body of this License.
236+
237+ 9. The Free Software Foundation may publish revised and/or new versions
238+of the General Public License from time to time. Such new versions will
239+be similar in spirit to the present version, but may differ in detail to
240+address new problems or concerns.
241+
242+Each version is given a distinguishing version number. If the Program
243+specifies a version number of this License which applies to it and "any
244+later version", you have the option of following the terms and conditions
245+either of that version or of any later version published by the Free
246+Software Foundation. If the Program does not specify a version number of
247+this License, you may choose any version ever published by the Free Software
248+Foundation.
249+
250+ 10. If you wish to incorporate parts of the Program into other free
251+programs whose distribution conditions are different, write to the author
252+to ask for permission. For software which is copyrighted by the Free
253+Software Foundation, write to the Free Software Foundation; we sometimes
254+make exceptions for this. Our decision will be guided by the two goals
255+of preserving the free status of all derivatives of our free software and
256+of promoting the sharing and reuse of software generally.
257+
258+ NO WARRANTY
259+
260+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
261+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
262+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
263+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
264+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
265+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
266+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
267+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
268+REPAIR OR CORRECTION.
269+
270+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
271+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
272+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
273+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
274+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
275+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
276+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
277+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
278+POSSIBILITY OF SUCH DAMAGES.
279+
280+ END OF TERMS AND CONDITIONS
281+
282+ How to Apply These Terms to Your New Programs
283+
284+ If you develop a new program, and you want it to be of the greatest
285+possible use to the public, the best way to achieve this is to make it
286+free software which everyone can redistribute and change under these terms.
287+
288+ To do so, attach the following notices to the program. It is safest
289+to attach them to the start of each source file to most effectively
290+convey the exclusion of warranty; and each file should have at least
291+the "copyright" line and a pointer to where the full notice is found.
292+
293+ <one line to give the program's name and a brief idea of what it does.>
294+ Copyright (C) <year> <name of author>
295+
296+ This program is free software; you can redistribute it and/or modify
297+ it under the terms of the GNU General Public License as published by
298+ the Free Software Foundation; either version 2 of the License, or
299+ (at your option) any later version.
300+
301+ This program is distributed in the hope that it will be useful,
302+ but WITHOUT ANY WARRANTY; without even the implied warranty of
303+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
304+ GNU General Public License for more details.
305+
306+ You should have received a copy of the GNU General Public License
307+ along with this program; if not, write to the Free Software
308+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
309+
310+
311+Also add information on how to contact you by electronic and paper mail.
312+
313+If the program is interactive, make it output a short notice like this
314+when it starts in an interactive mode:
315+
316+ Gnomovision version 69, Copyright (C) year name of author
317+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
318+ This is free software, and you are welcome to redistribute it
319+ under certain conditions; type `show c' for details.
320+
321+The hypothetical commands `show w' and `show c' should show the appropriate
322+parts of the General Public License. Of course, the commands you use may
323+be called something other than `show w' and `show c'; they could even be
324+mouse-clicks or menu items--whatever suits your program.
325+
326+You should also get your employer (if you work as a programmer) or your
327+school, if any, to sign a "copyright disclaimer" for the program, if
328+necessary. Here is a sample; alter the names:
329+
330+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
331+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
332+
333+ <signature of Ty Coon>, 1 April 1989
334+ Ty Coon, President of Vice
335+
336+This General Public License does not permit incorporating your program into
337+proprietary programs. If your program is a subroutine library, you may
338+consider it more useful to permit linking proprietary applications with the
339+library. If this is what you want to do, use the GNU Library General
340+Public License instead of this License.
--- /dev/null
+++ b/original/ChangeLog
@@ -0,0 +1,4 @@
1+2004-01-16 Henrik Sandklef <hesa@laphroaig>
2+
3+ * pics/dia_gen.sh: added convertion to jpg
4+
--- /dev/null
+++ b/original/Makefile.am
@@ -0,0 +1,142 @@
1+docdir = $(datadir)/xnee
2+
3+xnee_TEXINFOS=xnee_error.texi xnee_prot.texi version.texi xnee_error.texi xnee_exampl.texi xnee_faq.texi xnee_install.texi xnee_intro.texi xnee_req.texi xnee_synch.texi xnee_usage.texi xnee_general.texi xnee_start.texi xnee_intern.texi xnee_copying fdl.texi xnee_func.texi xnee_progs.texi
4+IMG_DIA = xndetail.dia xngener.dia xnrec.dia xnrep.dia xnswinp.dia
5+IMG_EPS = xndetail.eps xngener.eps xnrec.eps xnrep.eps xnswinp.eps
6+IMG_PDF = xndetail.pdf xngener.pdf xnrec.pdf xnrep.pdf xnswinp.pdf
7+IMG_PNG = xndetail.png xngener.png xnrec.png xnrep.png xnswinp.png
8+IMG_JPG = xndetail.jpg xngener.jpg xnrec.jpg xnrep.jpg xnswinp.jpg
9+
10+GEN_IMAGES = $(IMG_EPS) $(IMG_PDF) $(IMG_PNG) $(IMG_JPG)
11+GEN_IMAGES_TO_INSTALL = $(IMG_PNG) $(IMG_JPG)
12+MANUALS = xnee.html xnee.ps xnee.txt
13+
14+EXTRA_DIST = xnee_copying fdl.texi *.dia xnee.dox xnee.html xnee.pdf xnee.ps xnee.txt \
15+ $(GEN_IMAGES_TO_INSTALL)
16+#\
17+# $(MANUALS)
18+
19+if BUILDDOC
20+DOC_DEP=$(GEN_IMAGES_TO_INSTALL) $(MANUALS)
21+doc_DATA = $(MANUALS) $(GEN_IMAGES_TO_INSTALL)
22+endif
23+
24+#MAKEINFO = @MAKEINFO@ --no-split
25+#TEXI2HTML = texi2html
26+#DVI2PS = dvi2ps
27+#PS2PDF = ps2pdf
28+### TEXI2HTML_FLAGS = -split_chapter
29+
30+info_TEXINFOS = xnee.texi
31+
32+CLEANFILES = xnee.acs xnee.cvs xnee.mss xnee.prs \
33+ xnee.ats xnee.evs xnee.fns xnee.ovs \
34+ xnee.tmp stamp-vti \
35+ $(IMG_EPS) $(IMG_PDF) $(IMG_PNG) $(IMG_JPG) \
36+ *.eps *.jpg *.png *.pdf *.html
37+
38+
39+
40+
41+
42+## ----------------------------- ##
43+## Other documentation formats. ##
44+## ----------------------------- ##
45+
46+
47+# HTML
48+xnee.html: xnee.texi $(GEN_IMAGES)
49+ $(TEXI2HTML) $(TEXI2HTML_FLAGS) $(srcdir)/xnee.texi
50+
51+
52+# PDF for RedHat
53+#xnee.pdf: xnee.texi
54+# -$(TEXI2DVI) --pdf --batch $(srcdir)/xnee.texi
55+
56+# PDF for Debian
57+#xnee.pdf: xnee.ps $(GEN_IMAGES)
58+# $(PS2PDF) $(srcdir)/xnee.ps
59+
60+
61+# DVI
62+xnee.dvi: $(GEN_IMAGES)
63+ $(TEXI2DVI) --batch $(srcdir)/xnee.texi
64+
65+
66+# PS for RedHat
67+#xnee.ps: xnee.pdf
68+# pdf2ps $(srcdir)/xnee.pdf
69+
70+# PS for Debian
71+#xnee.ps: xnee.dvi $(GEN_IMAGES)
72+# $(DVI2PS) -c xnee.ps $(srcdir)/xnee.dvi
73+#xnee.pdf: xnee.dvi $(GEN_IMAGES)
74+# $(DVIPDF) xnee.dvi xnee.pdf
75+
76+# PS for Debian
77+#xnee.ps: xnee.pdf $(GEN_IMAGES)
78+# $(PDF2PS) $(srcdir)/xnee.pdf
79+
80+
81+
82+
83+%.eps:%.dia
84+ @echo "creating EPS"
85+ $(DIA) --nosplash -e $@ $<
86+
87+%.pdf: %.texi
88+ @echo "creating PDF"
89+ $(TEXI2PDF) $<
90+
91+%.pdf: %.eps
92+ @echo "creating PDF"
93+ $(EPSTOPDF) --outfile $@ $<
94+
95+%.png: %.eps
96+ @echo "creating PNG"
97+ $(CONVERT) -density 144x144 $< $@
98+ ( mv $@ `echo $@ | sed 's,\.png,_big\.png,g'` )
99+ $(CONVERT) -density 32x32 $< $@
100+ ( mv $@ `echo $@ | sed 's,\.png,_small\.png,g'` )
101+ $(CONVERT) -density 60x60 $< $@
102+%.jpg: %.eps
103+ echo "creating JPG"
104+ $(CONVERT) -density 144x144 $< $@
105+ ( mv $@ `echo $@ | sed 's,\.jpg,_big\.jpg,g'` )
106+ $(CONVERT) -density 32x32 $< $@
107+ ( mv $@ `echo $@ | sed 's,\.jpg,_small\.jpg,g'` )
108+ $(CONVERT) -density 60x60 $< $@
109+
110+
111+${IMG_EPS}: ${IMG_DIA}
112+${IMG_PDF}: ${IMG_EPS}
113+${IMG_PNG}: ${IMG_EPS}
114+${IMG_JPG}: ${IMG_EPS}
115+
116+install:
117+ mkdir -p $(DESTDIR)/$(docdir)
118+ cp $(MANUALS) $(GEN_IMAGES_TO_INSTALL) $(DESTDIR)$(docdir)/
119+
120+
121+
122+api-doc: xnee.dox
123+ \rm -fr alldocs/
124+ -mkdir alldocs
125+ -mkdir alldocs/devel
126+ \rm -fr latex
127+ $(DOXYGEN) xnee.dox
128+ cd latex && make ps && make pdf
129+
130+
131+
132+xnee.txt:
133+ $(MAKEINFO) -o xnee.txt --no-headers --no-split --no-validate xnee.texi
134+
135+manual: $(MANUALS)
136+all: $(DOC_DEP)
137+default: all
138+
139+
140+clean:
141+ -rm -f $(CLEANFILES)
142+
--- /dev/null
+++ b/original/Makefile.in
@@ -0,0 +1,810 @@
1+# Makefile.in generated by automake 1.11 from Makefile.am.
2+# @configure_input@
3+
4+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
5+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
6+# Inc.
7+# This Makefile.in is free software; the Free Software Foundation
8+# gives unlimited permission to copy and/or distribute it,
9+# with or without modifications, as long as this notice is preserved.
10+
11+# This program is distributed in the hope that it will be useful,
12+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
13+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
14+# PARTICULAR PURPOSE.
15+
16+@SET_MAKE@
17+
18+VPATH = @srcdir@
19+pkgdatadir = $(datadir)/@PACKAGE@
20+pkgincludedir = $(includedir)/@PACKAGE@
21+pkglibdir = $(libdir)/@PACKAGE@
22+pkglibexecdir = $(libexecdir)/@PACKAGE@
23+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
24+install_sh_DATA = $(install_sh) -c -m 644
25+install_sh_PROGRAM = $(install_sh) -c
26+install_sh_SCRIPT = $(install_sh) -c
27+INSTALL_HEADER = $(INSTALL_DATA)
28+transform = $(program_transform_name)
29+NORMAL_INSTALL = :
30+PRE_INSTALL = :
31+POST_INSTALL = :
32+NORMAL_UNINSTALL = :
33+PRE_UNINSTALL = :
34+POST_UNINSTALL = :
35+build_triplet = @build@
36+host_triplet = @host@
37+subdir = doc
38+DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
39+ $(srcdir)/stamp-vti $(srcdir)/version.texi $(xnee_TEXINFOS) \
40+ AUTHORS COPYING ChangeLog NEWS
41+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
42+am__aclocal_m4_deps = $(top_srcdir)/configure.in
43+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
44+ $(ACLOCAL_M4)
45+mkinstalldirs = $(install_sh) -d
46+CONFIG_HEADER = $(top_builddir)/config.h
47+CONFIG_CLEAN_FILES =
48+CONFIG_CLEAN_VPATH_FILES =
49+SOURCES =
50+DIST_SOURCES =
51+INFO_DEPS = $(srcdir)/xnee.info
52+TEXINFO_TEX = $(top_srcdir)/./autotools/texinfo.tex
53+am__TEXINFO_TEX_DIR = $(top_srcdir)/./autotools
54+DVIS = xnee.dvi
55+PDFS = xnee.pdf
56+PSS = xnee.ps
57+HTMLS = xnee.html
58+TEXINFOS = xnee.texi
59+TEXI2DVI = texi2dvi
60+MAKEINFOHTML = $(MAKEINFO) --html
61+AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS)
62+DVIPS = dvips
63+am__installdirs = "$(DESTDIR)$(infodir)" "$(DESTDIR)$(docdir)"
64+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
65+am__vpath_adj = case $$p in \
66+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
67+ *) f=$$p;; \
68+ esac;
69+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
70+am__install_max = 40
71+am__nobase_strip_setup = \
72+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
73+am__nobase_strip = \
74+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
75+am__nobase_list = $(am__nobase_strip_setup); \
76+ for p in $$list; do echo "$$p $$p"; done | \
77+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
78+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
79+ if (++n[$$2] == $(am__install_max)) \
80+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
81+ END { for (dir in files) print dir, files[dir] }'
82+am__base_list = \
83+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
84+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
85+DATA = $(doc_DATA)
86+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
87+ACLOCAL = @ACLOCAL@
88+AMTAR = @AMTAR@
89+AR = @AR@
90+AUTOCONF = @AUTOCONF@
91+AUTOHEADER = @AUTOHEADER@
92+AUTOMAKE = @AUTOMAKE@
93+AWK = @AWK@
94+BASH = @BASH@
95+CC = @CC@
96+CCDEPMODE = @CCDEPMODE@
97+CFLAGS = @CFLAGS@
98+CLI_DIR = @CLI_DIR@
99+CNEE_INFO = @CNEE_INFO@
100+CONVERT = @CONVERT@
101+CPP = @CPP@
102+CPPFLAGS = @CPPFLAGS@
103+CYGPATH_W = @CYGPATH_W@
104+DEFS = @DEFS@
105+DEPDIR = @DEPDIR@
106+DIA = @DIA@
107+DOC_DIR = @DOC_DIR@
108+DOC_TARGETS = @DOC_TARGETS@
109+DSYMUTIL = @DSYMUTIL@
110+DUMPBIN = @DUMPBIN@
111+DVIPDF = @DVIPDF@
112+ECHO_C = @ECHO_C@
113+ECHO_N = @ECHO_N@
114+ECHO_T = @ECHO_T@
115+EGREP = @EGREP@
116+EPSTOPDF = @EPSTOPDF@
117+EXEEXT = @EXEEXT@
118+FGREP = @FGREP@
119+FOO_DIR = @FOO_DIR@
120+GNOME_APPLET_DIR = @GNOME_APPLET_DIR@
121+GREP = @GREP@
122+GUI_DIR = @GUI_DIR@
123+INSTALL = @INSTALL@
124+INSTALL_DATA = @INSTALL_DATA@
125+INSTALL_PROGRAM = @INSTALL_PROGRAM@
126+INSTALL_SCRIPT = @INSTALL_SCRIPT@
127+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
128+LD = @LD@
129+LDFLAGS = @LDFLAGS@
130+LIBDL = @LIBDL@
131+LIBOBJS = @LIBOBJS@
132+LIBS = @LIBS@
133+LIBSEMA = @LIBSEMA@
134+LIBTOOL = @LIBTOOL@
135+LIB_DIR = @LIB_DIR@
136+LIPO = @LIPO@
137+LN_S = @LN_S@
138+LTLIBOBJS = @LTLIBOBJS@
139+MAINT = @MAINT@
140+MAKEFILES_TO_GEN = @MAKEFILES_TO_GEN@
141+MAKEINFO = @MAKEINFO@
142+MKDIR_P = @MKDIR_P@
143+NM = @NM@
144+NMEDIT = @NMEDIT@
145+OBJDUMP = @OBJDUMP@
146+OBJEXT = @OBJEXT@
147+OTOOL = @OTOOL@
148+OTOOL64 = @OTOOL64@
149+PACKAGE = @PACKAGE@
150+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
151+PACKAGE_NAME = @PACKAGE_NAME@
152+PACKAGE_STRING = @PACKAGE_STRING@
153+PACKAGE_TARNAME = @PACKAGE_TARNAME@
154+PACKAGE_URL = @PACKAGE_URL@
155+PACKAGE_VERSION = @PACKAGE_VERSION@
156+PANEL_APPLET_DIR = @PANEL_APPLET_DIR@
157+PANEL_FLAGS = @PANEL_FLAGS@
158+PANEL_LD_FLAGS = @PANEL_LD_FLAGS@
159+PANEL_SERVER_DIR = @PANEL_SERVER_DIR@
160+PATH_SEPARATOR = @PATH_SEPARATOR@
161+PDF2PS = @PDF2PS@
162+PIXMAP_DIR = @PIXMAP_DIR@
163+PKGCFG = @PKGCFG@
164+PKG_CONFIG = @PKG_CONFIG@
165+PS2PDF = @PS2PDF@
166+RANLIB = @RANLIB@
167+SED = @SED@
168+SET_MAKE = @SET_MAKE@
169+SHELL = @SHELL@
170+STRIP = @STRIP@
171+TEXI2HTML = @TEXI2HTML@
172+TEXI2PDF = @TEXI2PDF@
173+VERSION = @VERSION@
174+WANTED_LIBXNEE = @WANTED_LIBXNEE@
175+X11_LIBS = @X11_LIBS@
176+XMKMF = @XMKMF@
177+XNEE_DOC_DIR = @XNEE_DOC_DIR@
178+X_CFLAGS = @X_CFLAGS@
179+X_EXTRA_LIBS = @X_EXTRA_LIBS@
180+X_LIBS = @X_LIBS@
181+X_PRE_LIBS = @X_PRE_LIBS@
182+abs_builddir = @abs_builddir@
183+abs_srcdir = @abs_srcdir@
184+abs_top_builddir = @abs_top_builddir@
185+abs_top_srcdir = @abs_top_srcdir@
186+ac_ct_CC = @ac_ct_CC@
187+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
188+am__include = @am__include@
189+am__leading_dot = @am__leading_dot@
190+am__quote = @am__quote@
191+am__tar = @am__tar@
192+am__untar = @am__untar@
193+bindir = @bindir@
194+build = @build@
195+build_alias = @build_alias@
196+build_cpu = @build_cpu@
197+build_os = @build_os@
198+build_vendor = @build_vendor@
199+builddir = @builddir@
200+datadir = @datadir@
201+datarootdir = @datarootdir@
202+docdir = $(datadir)/xnee
203+dvidir = @dvidir@
204+exec_prefix = @exec_prefix@
205+gtk_CFLAGS = @gtk_CFLAGS@
206+gtk_LIBS = @gtk_LIBS@
207+host = @host@
208+host_alias = @host_alias@
209+host_cpu = @host_cpu@
210+host_os = @host_os@
211+host_vendor = @host_vendor@
212+htmldir = @htmldir@
213+includedir = @includedir@
214+infodir = @infodir@
215+install_sh = @install_sh@
216+libdir = @libdir@
217+libexecdir = @libexecdir@
218+libgnomeui_CFLAGS = @libgnomeui_CFLAGS@
219+libgnomeui_LIBS = @libgnomeui_LIBS@
220+localedir = @localedir@
221+localstatedir = @localstatedir@
222+lt_ECHO = @lt_ECHO@
223+mandir = @mandir@
224+mkdir_p = @mkdir_p@
225+oldincludedir = @oldincludedir@
226+pdfdir = @pdfdir@
227+prefix = @prefix@
228+program_transform_name = @program_transform_name@
229+psdir = @psdir@
230+sbindir = @sbindir@
231+sharedstatedir = @sharedstatedir@
232+srcdir = @srcdir@
233+sysconfdir = @sysconfdir@
234+target_alias = @target_alias@
235+top_build_prefix = @top_build_prefix@
236+top_builddir = @top_builddir@
237+top_srcdir = @top_srcdir@
238+xnee_TEXINFOS = xnee_error.texi xnee_prot.texi version.texi xnee_error.texi xnee_exampl.texi xnee_faq.texi xnee_install.texi xnee_intro.texi xnee_req.texi xnee_synch.texi xnee_usage.texi xnee_general.texi xnee_start.texi xnee_intern.texi xnee_copying fdl.texi xnee_func.texi xnee_progs.texi
239+IMG_DIA = xndetail.dia xngener.dia xnrec.dia xnrep.dia xnswinp.dia
240+IMG_EPS = xndetail.eps xngener.eps xnrec.eps xnrep.eps xnswinp.eps
241+IMG_PDF = xndetail.pdf xngener.pdf xnrec.pdf xnrep.pdf xnswinp.pdf
242+IMG_PNG = xndetail.png xngener.png xnrec.png xnrep.png xnswinp.png
243+IMG_JPG = xndetail.jpg xngener.jpg xnrec.jpg xnrep.jpg xnswinp.jpg
244+GEN_IMAGES = $(IMG_EPS) $(IMG_PDF) $(IMG_PNG) $(IMG_JPG)
245+GEN_IMAGES_TO_INSTALL = $(IMG_PNG) $(IMG_JPG)
246+MANUALS = xnee.html xnee.ps xnee.txt
247+EXTRA_DIST = xnee_copying fdl.texi *.dia xnee.dox xnee.html xnee.pdf xnee.ps xnee.txt \
248+ $(GEN_IMAGES_TO_INSTALL)
249+
250+#\
251+# $(MANUALS)
252+@BUILDDOC_TRUE@DOC_DEP = $(GEN_IMAGES_TO_INSTALL) $(MANUALS)
253+@BUILDDOC_TRUE@doc_DATA = $(MANUALS) $(GEN_IMAGES_TO_INSTALL)
254+
255+#MAKEINFO = @MAKEINFO@ --no-split
256+#TEXI2HTML = texi2html
257+#DVI2PS = dvi2ps
258+#PS2PDF = ps2pdf
259+### TEXI2HTML_FLAGS = -split_chapter
260+info_TEXINFOS = xnee.texi
261+CLEANFILES = xnee.acs xnee.cvs xnee.mss xnee.prs \
262+ xnee.ats xnee.evs xnee.fns xnee.ovs \
263+ xnee.tmp stamp-vti \
264+ $(IMG_EPS) $(IMG_PDF) $(IMG_PNG) $(IMG_JPG) \
265+ *.eps *.jpg *.png *.pdf *.html
266+
267+all: all-am
268+
269+.SUFFIXES:
270+.SUFFIXES: .dvi .html .info .pdf .ps .texi
271+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
272+ @for dep in $?; do \
273+ case '$(am__configure_deps)' in \
274+ *$$dep*) \
275+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
276+ && { if test -f $@; then exit 0; else break; fi; }; \
277+ exit 1;; \
278+ esac; \
279+ done; \
280+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \
281+ $(am__cd) $(top_srcdir) && \
282+ $(AUTOMAKE) --gnu doc/Makefile
283+.PRECIOUS: Makefile
284+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
285+ @case '$?' in \
286+ *config.status*) \
287+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
288+ *) \
289+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
290+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
291+ esac;
292+
293+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
294+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
295+
296+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
297+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
298+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
299+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
300+$(am__aclocal_m4_deps):
301+
302+mostlyclean-libtool:
303+ -rm -f *.lo
304+
305+clean-libtool:
306+ -rm -rf .libs _libs
307+
308+.texi.info:
309+ restore=: && backupdir="$(am__leading_dot)am$$$$" && \
310+ am__cwd=`pwd` && $(am__cd) $(srcdir) && \
311+ rm -rf $$backupdir && mkdir $$backupdir && \
312+ if ($(MAKEINFO) --version) >/dev/null 2>&1; then \
313+ for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \
314+ if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \
315+ done; \
316+ else :; fi && \
317+ cd "$$am__cwd"; \
318+ if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
319+ -o $@ $<; \
320+ then \
321+ rc=0; \
322+ $(am__cd) $(srcdir); \
323+ else \
324+ rc=$$?; \
325+ $(am__cd) $(srcdir) && \
326+ $$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \
327+ fi; \
328+ rm -rf $$backupdir; exit $$rc
329+
330+.texi.dvi:
331+ TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
332+ MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
333+ $(TEXI2DVI) $<
334+
335+.texi.pdf:
336+ TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
337+ MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
338+ $(TEXI2PDF) $<
339+
340+.texi.html:
341+ rm -rf $(@:.html=.htp)
342+ if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
343+ -o $(@:.html=.htp) $<; \
344+ then \
345+ rm -rf $@; \
346+ if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
347+ mv $(@:.html=) $@; else mv $(@:.html=.htp) $@; fi; \
348+ else \
349+ if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
350+ rm -rf $(@:.html=); else rm -Rf $(@:.html=.htp) $@; fi; \
351+ exit 1; \
352+ fi
353+$(srcdir)/xnee.info: xnee.texi $(srcdir)/version.texi $(xnee_TEXINFOS)
354+xnee.pdf: xnee.texi $(srcdir)/version.texi $(xnee_TEXINFOS)
355+$(srcdir)/version.texi: @MAINTAINER_MODE_TRUE@ $(srcdir)/stamp-vti
356+$(srcdir)/stamp-vti: xnee.texi $(top_srcdir)/configure
357+ @(dir=.; test -f ./xnee.texi || dir=$(srcdir); \
358+ set `$(SHELL) $(top_srcdir)/./autotools/mdate-sh $$dir/xnee.texi`; \
359+ echo "@set UPDATED $$1 $$2 $$3"; \
360+ echo "@set UPDATED-MONTH $$2 $$3"; \
361+ echo "@set EDITION $(VERSION)"; \
362+ echo "@set VERSION $(VERSION)") > vti.tmp
363+ @cmp -s vti.tmp $(srcdir)/version.texi \
364+ || (echo "Updating $(srcdir)/version.texi"; \
365+ cp vti.tmp $(srcdir)/version.texi)
366+ -@rm -f vti.tmp
367+ @cp $(srcdir)/version.texi $@
368+
369+mostlyclean-vti:
370+ -rm -f vti.tmp
371+
372+maintainer-clean-vti:
373+@MAINTAINER_MODE_TRUE@ -rm -f $(srcdir)/stamp-vti $(srcdir)/version.texi
374+.dvi.ps:
375+ TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
376+ $(DVIPS) -o $@ $<
377+
378+uninstall-dvi-am:
379+ @$(NORMAL_UNINSTALL)
380+ @list='$(DVIS)'; test -n "$(dvidir)" || list=; \
381+ for p in $$list; do \
382+ $(am__strip_dir) \
383+ echo " rm -f '$(DESTDIR)$(dvidir)/$$f'"; \
384+ rm -f "$(DESTDIR)$(dvidir)/$$f"; \
385+ done
386+
387+uninstall-html-am:
388+ @$(NORMAL_UNINSTALL)
389+ @list='$(HTMLS)'; test -n "$(htmldir)" || list=; \
390+ for p in $$list; do \
391+ $(am__strip_dir) \
392+ echo " rm -rf '$(DESTDIR)$(htmldir)/$$f'"; \
393+ rm -rf "$(DESTDIR)$(htmldir)/$$f"; \
394+ done
395+
396+uninstall-info-am:
397+ @$(PRE_UNINSTALL)
398+ @if test -d '$(DESTDIR)$(infodir)' && \
399+ (install-info --version && \
400+ install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
401+ list='$(INFO_DEPS)'; \
402+ for file in $$list; do \
403+ relfile=`echo "$$file" | sed 's|^.*/||'`; \
404+ echo " install-info --info-dir='$(DESTDIR)$(infodir)' --remove '$(DESTDIR)$(infodir)/$$relfile'"; \
405+ if install-info --info-dir="$(DESTDIR)$(infodir)" --remove "$(DESTDIR)$(infodir)/$$relfile"; \
406+ then :; else test ! -f "$(DESTDIR)$(infodir)/$$relfile" || exit 1; fi; \
407+ done; \
408+ else :; fi
409+ @$(NORMAL_UNINSTALL)
410+ @list='$(INFO_DEPS)'; \
411+ for file in $$list; do \
412+ relfile=`echo "$$file" | sed 's|^.*/||'`; \
413+ relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \
414+ (if test -d "$(DESTDIR)$(infodir)" && cd "$(DESTDIR)$(infodir)"; then \
415+ echo " cd '$(DESTDIR)$(infodir)' && rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]"; \
416+ rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]; \
417+ else :; fi); \
418+ done
419+
420+uninstall-pdf-am:
421+ @$(NORMAL_UNINSTALL)
422+ @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \
423+ for p in $$list; do \
424+ $(am__strip_dir) \
425+ echo " rm -f '$(DESTDIR)$(pdfdir)/$$f'"; \
426+ rm -f "$(DESTDIR)$(pdfdir)/$$f"; \
427+ done
428+
429+uninstall-ps-am:
430+ @$(NORMAL_UNINSTALL)
431+ @list='$(PSS)'; test -n "$(psdir)" || list=; \
432+ for p in $$list; do \
433+ $(am__strip_dir) \
434+ echo " rm -f '$(DESTDIR)$(psdir)/$$f'"; \
435+ rm -f "$(DESTDIR)$(psdir)/$$f"; \
436+ done
437+
438+dist-info: $(INFO_DEPS)
439+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
440+ list='$(INFO_DEPS)'; \
441+ for base in $$list; do \
442+ case $$base in \
443+ $(srcdir)/*) base=`echo "$$base" | sed "s|^$$srcdirstrip/||"`;; \
444+ esac; \
445+ if test -f $$base; then d=.; else d=$(srcdir); fi; \
446+ base_i=`echo "$$base" | sed 's|\.info$$||;s|$$|.i|'`; \
447+ for file in $$d/$$base $$d/$$base-[0-9] $$d/$$base-[0-9][0-9] $$d/$$base_i[0-9] $$d/$$base_i[0-9][0-9]; do \
448+ if test -f $$file; then \
449+ relfile=`expr "$$file" : "$$d/\(.*\)"`; \
450+ test -f "$(distdir)/$$relfile" || \
451+ cp -p $$file "$(distdir)/$$relfile"; \
452+ else :; fi; \
453+ done; \
454+ done
455+
456+mostlyclean-aminfo:
457+ -rm -rf xnee.aux xnee.cp xnee.cps xnee.fn xnee.ky xnee.log xnee.pg xnee.tmp \
458+ xnee.toc xnee.tp xnee.tps xnee.vr
459+
460+clean-aminfo:
461+ -test -z "xnee.dvi xnee.pdf xnee.ps xnee.html" \
462+ || rm -rf xnee.dvi xnee.pdf xnee.ps xnee.html
463+
464+maintainer-clean-aminfo:
465+ @list='$(INFO_DEPS)'; for i in $$list; do \
466+ i_i=`echo "$$i" | sed 's|\.info$$||;s|$$|.i|'`; \
467+ echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \
468+ rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \
469+ done
470+install-docDATA: $(doc_DATA)
471+ @$(NORMAL_INSTALL)
472+ test -z "$(docdir)" || $(MKDIR_P) "$(DESTDIR)$(docdir)"
473+ @list='$(doc_DATA)'; test -n "$(docdir)" || list=; \
474+ for p in $$list; do \
475+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
476+ echo "$$d$$p"; \
477+ done | $(am__base_list) | \
478+ while read files; do \
479+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \
480+ $(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \
481+ done
482+
483+uninstall-docDATA:
484+ @$(NORMAL_UNINSTALL)
485+ @list='$(doc_DATA)'; test -n "$(docdir)" || list=; \
486+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
487+ test -n "$$files" || exit 0; \
488+ echo " ( cd '$(DESTDIR)$(docdir)' && rm -f" $$files ")"; \
489+ cd "$(DESTDIR)$(docdir)" && rm -f $$files
490+tags: TAGS
491+TAGS:
492+
493+ctags: CTAGS
494+CTAGS:
495+
496+
497+distdir: $(DISTFILES)
498+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
499+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
500+ list='$(DISTFILES)'; \
501+ dist_files=`for file in $$list; do echo $$file; done | \
502+ sed -e "s|^$$srcdirstrip/||;t" \
503+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
504+ case $$dist_files in \
505+ */*) $(MKDIR_P) `echo "$$dist_files" | \
506+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
507+ sort -u` ;; \
508+ esac; \
509+ for file in $$dist_files; do \
510+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
511+ if test -d $$d/$$file; then \
512+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
513+ if test -d "$(distdir)/$$file"; then \
514+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
515+ fi; \
516+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
517+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
518+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
519+ fi; \
520+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
521+ else \
522+ test -f "$(distdir)/$$file" \
523+ || cp -p $$d/$$file "$(distdir)/$$file" \
524+ || exit 1; \
525+ fi; \
526+ done
527+ $(MAKE) $(AM_MAKEFLAGS) \
528+ top_distdir="$(top_distdir)" distdir="$(distdir)" \
529+ dist-info
530+check-am: all-am
531+check: check-am
532+all-am: Makefile $(INFO_DEPS) $(DATA)
533+installdirs:
534+ for dir in "$(DESTDIR)$(infodir)" "$(DESTDIR)$(docdir)"; do \
535+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
536+ done
537+install-exec: install-exec-am
538+install-data: install-data-am
539+uninstall: uninstall-am
540+
541+install-am: all-am
542+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
543+
544+installcheck: installcheck-am
545+install-strip:
546+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
547+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
548+ `test -z '$(STRIP)' || \
549+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
550+mostlyclean-generic:
551+
552+clean-generic:
553+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
554+
555+distclean-generic:
556+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
557+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
558+
559+maintainer-clean-generic:
560+ @echo "This command is intended for maintainers to use"
561+ @echo "it deletes files that may require special tools to rebuild."
562+clean-am: clean-aminfo clean-generic clean-libtool mostlyclean-am
563+
564+distclean: distclean-am
565+ -rm -f Makefile
566+distclean-am: clean-am distclean-generic
567+
568+dvi: dvi-am
569+
570+dvi-am: $(DVIS)
571+
572+html: html-am
573+
574+html-am: $(HTMLS)
575+
576+info: info-am
577+
578+info-am: $(INFO_DEPS)
579+
580+install-data-am: install-docDATA install-info-am
581+
582+install-dvi: install-dvi-am
583+
584+install-dvi-am: $(DVIS)
585+ @$(NORMAL_INSTALL)
586+ test -z "$(dvidir)" || $(MKDIR_P) "$(DESTDIR)$(dvidir)"
587+ @list='$(DVIS)'; test -n "$(dvidir)" || list=; \
588+ for p in $$list; do \
589+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
590+ echo "$$d$$p"; \
591+ done | $(am__base_list) | \
592+ while read files; do \
593+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(dvidir)'"; \
594+ $(INSTALL_DATA) $$files "$(DESTDIR)$(dvidir)" || exit $$?; \
595+ done
596+install-exec-am:
597+
598+install-html: install-html-am
599+
600+install-html-am: $(HTMLS)
601+ @$(NORMAL_INSTALL)
602+ test -z "$(htmldir)" || $(MKDIR_P) "$(DESTDIR)$(htmldir)"
603+ @list='$(HTMLS)'; list2=; test -n "$(htmldir)" || list=; \
604+ for p in $$list; do \
605+ if test -f "$$p" || test -d "$$p"; then d=; else d="$(srcdir)/"; fi; \
606+ $(am__strip_dir) \
607+ if test -d "$$d$$p"; then \
608+ echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)/$$f'"; \
609+ $(MKDIR_P) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \
610+ echo " $(INSTALL_DATA) '$$d$$p'/* '$(DESTDIR)$(htmldir)/$$f'"; \
611+ $(INSTALL_DATA) "$$d$$p"/* "$(DESTDIR)$(htmldir)/$$f" || exit $$?; \
612+ else \
613+ list2="$$list2 $$d$$p"; \
614+ fi; \
615+ done; \
616+ test -z "$$list2" || { echo "$$list2" | $(am__base_list) | \
617+ while read files; do \
618+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(htmldir)'"; \
619+ $(INSTALL_DATA) $$files "$(DESTDIR)$(htmldir)" || exit $$?; \
620+ done; }
621+install-info: install-info-am
622+
623+install-info-am: $(INFO_DEPS)
624+ @$(NORMAL_INSTALL)
625+ test -z "$(infodir)" || $(MKDIR_P) "$(DESTDIR)$(infodir)"
626+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
627+ list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \
628+ for file in $$list; do \
629+ case $$file in \
630+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
631+ esac; \
632+ if test -f $$file; then d=.; else d=$(srcdir); fi; \
633+ file_i=`echo "$$file" | sed 's|\.info$$||;s|$$|.i|'`; \
634+ for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9] \
635+ $$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \
636+ if test -f $$ifile; then \
637+ echo "$$ifile"; \
638+ else : ; fi; \
639+ done; \
640+ done | $(am__base_list) | \
641+ while read files; do \
642+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(infodir)'"; \
643+ $(INSTALL_DATA) $$files "$(DESTDIR)$(infodir)" || exit $$?; done
644+ @$(POST_INSTALL)
645+ @if (install-info --version && \
646+ install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
647+ list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \
648+ for file in $$list; do \
649+ relfile=`echo "$$file" | sed 's|^.*/||'`; \
650+ echo " install-info --info-dir='$(DESTDIR)$(infodir)' '$(DESTDIR)$(infodir)/$$relfile'";\
651+ install-info --info-dir="$(DESTDIR)$(infodir)" "$(DESTDIR)$(infodir)/$$relfile" || :;\
652+ done; \
653+ else : ; fi
654+install-man:
655+
656+install-pdf: install-pdf-am
657+
658+install-pdf-am: $(PDFS)
659+ @$(NORMAL_INSTALL)
660+ test -z "$(pdfdir)" || $(MKDIR_P) "$(DESTDIR)$(pdfdir)"
661+ @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \
662+ for p in $$list; do \
663+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
664+ echo "$$d$$p"; \
665+ done | $(am__base_list) | \
666+ while read files; do \
667+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pdfdir)'"; \
668+ $(INSTALL_DATA) $$files "$(DESTDIR)$(pdfdir)" || exit $$?; done
669+install-ps: install-ps-am
670+
671+install-ps-am: $(PSS)
672+ @$(NORMAL_INSTALL)
673+ test -z "$(psdir)" || $(MKDIR_P) "$(DESTDIR)$(psdir)"
674+ @list='$(PSS)'; test -n "$(psdir)" || list=; \
675+ for p in $$list; do \
676+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
677+ echo "$$d$$p"; \
678+ done | $(am__base_list) | \
679+ while read files; do \
680+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(psdir)'"; \
681+ $(INSTALL_DATA) $$files "$(DESTDIR)$(psdir)" || exit $$?; done
682+installcheck-am:
683+
684+maintainer-clean: maintainer-clean-am
685+ -rm -f Makefile
686+maintainer-clean-am: distclean-am maintainer-clean-aminfo \
687+ maintainer-clean-generic maintainer-clean-vti
688+
689+mostlyclean: mostlyclean-am
690+
691+mostlyclean-am: mostlyclean-aminfo mostlyclean-generic \
692+ mostlyclean-libtool mostlyclean-vti
693+
694+pdf: pdf-am
695+
696+pdf-am: $(PDFS)
697+
698+ps: ps-am
699+
700+ps-am: $(PSS)
701+
702+uninstall-am: uninstall-docDATA uninstall-dvi-am uninstall-html-am \
703+ uninstall-info-am uninstall-pdf-am uninstall-ps-am
704+
705+.MAKE: install-am install-strip
706+
707+.PHONY: all all-am check check-am clean clean-aminfo clean-generic \
708+ clean-libtool dist-info distclean distclean-generic \
709+ distclean-libtool distdir dvi dvi-am html html-am info info-am \
710+ install install-am install-data install-data-am \
711+ install-docDATA install-dvi install-dvi-am install-exec \
712+ install-exec-am install-html install-html-am install-info \
713+ install-info-am install-man install-pdf install-pdf-am \
714+ install-ps install-ps-am install-strip installcheck \
715+ installcheck-am installdirs maintainer-clean \
716+ maintainer-clean-aminfo maintainer-clean-generic \
717+ maintainer-clean-vti mostlyclean mostlyclean-aminfo \
718+ mostlyclean-generic mostlyclean-libtool mostlyclean-vti pdf \
719+ pdf-am ps ps-am uninstall uninstall-am uninstall-docDATA \
720+ uninstall-dvi-am uninstall-html-am uninstall-info-am \
721+ uninstall-pdf-am uninstall-ps-am
722+
723+
724+# HTML
725+xnee.html: xnee.texi $(GEN_IMAGES)
726+ $(TEXI2HTML) $(TEXI2HTML_FLAGS) $(srcdir)/xnee.texi
727+
728+# PDF for RedHat
729+#xnee.pdf: xnee.texi
730+# -$(TEXI2DVI) --pdf --batch $(srcdir)/xnee.texi
731+
732+# PDF for Debian
733+#xnee.pdf: xnee.ps $(GEN_IMAGES)
734+# $(PS2PDF) $(srcdir)/xnee.ps
735+
736+# DVI
737+xnee.dvi: $(GEN_IMAGES)
738+ $(TEXI2DVI) --batch $(srcdir)/xnee.texi
739+
740+# PS for RedHat
741+#xnee.ps: xnee.pdf
742+# pdf2ps $(srcdir)/xnee.pdf
743+
744+# PS for Debian
745+#xnee.ps: xnee.dvi $(GEN_IMAGES)
746+# $(DVI2PS) -c xnee.ps $(srcdir)/xnee.dvi
747+#xnee.pdf: xnee.dvi $(GEN_IMAGES)
748+# $(DVIPDF) xnee.dvi xnee.pdf
749+
750+# PS for Debian
751+#xnee.ps: xnee.pdf $(GEN_IMAGES)
752+# $(PDF2PS) $(srcdir)/xnee.pdf
753+
754+%.eps:%.dia
755+ @echo "creating EPS"
756+ $(DIA) --nosplash -e $@ $<
757+
758+%.pdf: %.texi
759+ @echo "creating PDF"
760+ $(TEXI2PDF) $<
761+
762+%.pdf: %.eps
763+ @echo "creating PDF"
764+ $(EPSTOPDF) --outfile $@ $<
765+
766+%.png: %.eps
767+ @echo "creating PNG"
768+ $(CONVERT) -density 144x144 $< $@
769+ ( mv $@ `echo $@ | sed 's,\.png,_big\.png,g'` )
770+ $(CONVERT) -density 32x32 $< $@
771+ ( mv $@ `echo $@ | sed 's,\.png,_small\.png,g'` )
772+ $(CONVERT) -density 60x60 $< $@
773+%.jpg: %.eps
774+ echo "creating JPG"
775+ $(CONVERT) -density 144x144 $< $@
776+ ( mv $@ `echo $@ | sed 's,\.jpg,_big\.jpg,g'` )
777+ $(CONVERT) -density 32x32 $< $@
778+ ( mv $@ `echo $@ | sed 's,\.jpg,_small\.jpg,g'` )
779+ $(CONVERT) -density 60x60 $< $@
780+
781+${IMG_EPS}: ${IMG_DIA}
782+${IMG_PDF}: ${IMG_EPS}
783+${IMG_PNG}: ${IMG_EPS}
784+${IMG_JPG}: ${IMG_EPS}
785+
786+install:
787+ mkdir -p $(DESTDIR)/$(docdir)
788+ cp $(MANUALS) $(GEN_IMAGES_TO_INSTALL) $(DESTDIR)$(docdir)/
789+
790+api-doc: xnee.dox
791+ \rm -fr alldocs/
792+ -mkdir alldocs
793+ -mkdir alldocs/devel
794+ \rm -fr latex
795+ $(DOXYGEN) xnee.dox
796+ cd latex && make ps && make pdf
797+
798+xnee.txt:
799+ $(MAKEINFO) -o xnee.txt --no-headers --no-split --no-validate xnee.texi
800+
801+manual: $(MANUALS)
802+all: $(DOC_DEP)
803+default: all
804+
805+clean:
806+ -rm -f $(CLEANFILES)
807+
808+# Tell versions [3.59,3.63) of GNU make to not export all variables.
809+# Otherwise a system limit (for SysV at least) may be exceeded.
810+.NOEXPORT:
--- /dev/null
+++ b/original/NEWS
@@ -0,0 +1,200 @@
1+libxnee / NEWS
2+----------------------------
3+ This file contains major news about cnee which is a part
4+ of the Xnee project.
5+
6+ For more information about Xnee, http://www.gnu.org
7+
8+
9+
10+All text below concerns the old structure of Xnee
11+------------------------------------------------------------------------------
12+
13+
14+
15+xnee / NEWS
16+----------------------------
17+
18+Changes in
19+ - new options:
20+ '--data-to-record'
21+ '--events-to-record'
22+ '--time-to-record'
23+ '--event-range'
24+
25+
26+Changes in 1.08
27+ - new options:
28+ '--write-settings' writes a resource file from settings done
29+ '--mouse' sets up ranges for all mouse events
30+ '--keyboard' sets up ranges for all keynoard events
31+ '--recorded-resolution' resolution used when recording
32+ '--replay-resolution' resolution to use when replaying
33+ '--no-resolution-adjustment' Don't use resolution adjustment
34+ '--speed-percent [percent]' change the replaying speed
35+ '--pause-key [k m]' key+modifier pauses xnee's current action
36+ '--pause-key [k m]' key+modifier resume xnee's paused action
37+ '--insert-key [k m]' key+modifier inserts a meta mark in the log file
38+ '--max-threshold [nr]' sets the maximum threshold during sync
39+ '--min-threshold [nr]' sets the maximum threshold during sync
40+ '--tot-threshold [nr]' sets the total threshold during sync
41+ '--retype-file [file]' retype the contents of file
42+ '--retype-help ' retype the help printout
43+ - synchronisation rewritten
44+
45+Changes in 1.07
46+ - version numbering changed (x.yz is used instead of x.y.z)
47+ - plugin functionality renamed to resource
48+ - plugin functionality added (plug in dynamic libs)
49+ - synchronization rewritten
50+ - force-replay option added
51+ - replay delay rewritten
52+ - Xnee can be configured (during configure) to:
53+ + exclude buffer verbose
54+ - print functions replaced by function pointers
55+ in dispatch functions,
56+ - Added modifier+key binding to pause, resume
57+
58+Changes in 1.0.6
59+ - data names can now be more then 10 chars long ... errrh
60+ - Xnee can be configured to:
61+ + exclude verbose mode
62+ + gcov compilation
63+ + grpof compilation
64+ - new or modified options:
65+ '--print-event-names' prints all event names and number
66+ '--print-request-names' prints all request names and number
67+ '--print-event-names' prints event name or number
68+ '--print-request-names' prints request names or number
69+
70+Changes in 1.0.6pre1
71+ - multiple modifiers added
72+ - data names can be used when setting ranges
73+ - docs updated with the above changes
74+ - range setting (when replaying) bug corrected
75+ - speed increased (removed recording of device event when replying)
76+ - Xnee is now a GNU package
77+
78+Changes in 1.0.5
79+ - Typos corrected in doc/ & README (after GNU review)
80+ - Fiex parser error (--no_sync ----> --no-sync )
81+ - Manual corrected (after GNU review)
82+ - new options added to ease up usage a bit:
83+ '--print-event-name'
84+ '--print-error-name'
85+ '--print-reply-name'
86+ '--print-request-name'
87+ '--print-data-name'
88+ - info, manuals updated
89+
90+Changes in 1.0.4
91+ - changed printout for --help and --version
92+ - made ChangeLog what is supposed to be
93+ build.sh doesn't copy NEWS to ChangeLog anymore
94+ - xnee manual is now under FDL
95+ - xnee developer manual is now under FDL
96+ - TODO updated with GNU Coding Standard todos
97+ - doc (texi) files updated with index refs
98+ - doc (texi) files updated to make info pages nice
99+ - build_web.sh added to CVS
100+ - fixed one sigbus & one sigsegv on non-glibc platforms (thanks freeBSD)
101+
102+Changes in 1.0.3
103+ - fixed parse error (mainor_range ---> minor_range )
104+ - switched to CLI options syntax as recommended by the GNU Coding Standards
105+ - fixed a seg fault when closing down recording
106+
107+Changes in 1.0.2
108+ - stop_key is now correctly parsed (man page updated)
109+ - CPU consuming calls to XRecordProcessReplies removed
110+ - Async recording is not used anymore
111+ - Fixed memory leak (a few bytes when closing down)
112+ - man page corrected
113+ - help printout corrected
114+
115+Changes in 1.0.1
116+ - Fixed memory leak
117+
118+Changes in 1.0
119+ - Added --stop_key option to CLI and plugin files and record file
120+ - Added --future_clients option to CLI
121+ - Manual in pdf has moved to Documentation package
122+ - Manual updated
123+ - Example session included
124+ - Source code is documented (using doxygen)
125+ - man pages are generated from xnee binary
126+ - Xnee now comes in two packages Program and Documentation
127+
128+Changes in 0.9
129+ - new command line options:
130+ --print_settings
131+ - xnee reads (and uses) settings from recorded file
132+ - added texi files (pdf, html, txt manuals)
133+ - added man page
134+ - EXAMPLES file updated
135+ - redhat specs updated
136+
137+Changes in 0.9beta
138+ - ugly printout when using delayed startup removed
139+ - MANUAL added
140+
141+Changes in 0.9alpha
142+ - synchronisation works .... at last :)
143+ - removed a lot of duplicated code
144+ - The following option has been updated
145+ 1) help
146+ 2) binary
147+ 3) out "stdout" in plugin scripts is treated
148+ as stdout (not creating a file called stdout)
149+ 4) err "stderr" in plugin scripts is treated
150+ as stderr (not creating a file called stderr)
151+ - DESCRIPTION, EXAMPLES, FAQ, README, TODO updated
152+ - DEVELOPMENT added
153+
154+Changes in 0.8.1
155+ - fixed a hanging (not on all platforms) xnee when finished replaying
156+ - fixed dependency to libxnee for the xnee binary in the generated Makefiles
157+ - fiexd missing newline in help text
158+
159+Changes in 0.8
160+ - minor bugfixes
161+ - copyright years added
162+ - the depcomp script have been added.
163+ - It compiles and runs on Solaris8 (intel) and Windows98/Cygwin/Xfree86.
164+ - The order of libs to be linked has changed.
165+
166+Changes in 0.8beta
167+ - --time options now works
168+ - Pressing Ctrl-C will stop Xnee but __NOT__ remove the recorded file
169+
170+Changes in 0.8alpha
171+ - worked around the bug* that crashed the X server when recording
172+ delivered events.
173+
174+ *) I still do not know where the bug is located (e.g xnee, X, RECORD)
175+
176+
177+Changes in 0.7.2
178+ - "plugins / xnee settings" is from now on only called plugin .. sorry about the fuzz
179+ - Support for RedHat RPM/SRPMS is included is distribution
180+ - build.sh is extended to build from clean dist to RPMs
181+
182+Changes in 0.7.1
183+ - Support for plugins / xnee settings file is corrected
184+
185+Changes in 0.7
186+ - Delay works fine
187+ - System info printing is back ... never missed it really since replay doesn't use it .. yet
188+ - Support for plugins / xnee settings file is added
189+
190+
191+Changes in 0.7alpha_2
192+ - Xnee can now record delivered events (used FutureClients)
193+ without crashing
194+ - First event not recorded (thank to Ton van Vliet)
195+
196+Changes in 0.7alpha_1
197+ - Seg. fault on debian fixed
198+ - Mem fault on OpenBSD fixed
199+ - Xnee is now (at last) "autoconfed"
200+
--- /dev/null
+++ b/original/README
@@ -0,0 +1,26 @@
1+Xnee / README
2+-------------
3+
4+Xnee is a GNU package. For more information about GNU, please visit
5+ http://www.gnu.org
6+
7+
8+
9+
10+The following files contains information about Xnee
11+
12+Name Description
13+---------------------------
14+AUTHORS List of authors, contributors etc
15+BUGS Known bugs and limitations
16+Changelog Log of source code changes
17+COPYING Contains the Xnee license
18+DESCRIPTION Obsolete*
19+DEVELOPMENT Obsolete*
20+EXAMPLES Obsolete*
21+FAQ Obsolete*
22+INSTALL Contains information about how to build and install Xnee
23+NEWS Contains information about what is new in "this" release
24+README This file
25+TODO List of features, fixes, docs, ... to implement
26+USAGE A printout of Xnee's built in doc, 'xnee --help'
--- /dev/null
+++ b/original/fdl.texi
@@ -0,0 +1,411 @@
1+@appendixsec GNU Free Documentation License
2+
3+@cindex FDL, GNU Free Documentation License
4+@center Version 1.2, November 2002
5+
6+@display
7+Copyright @copyright{} 2000,2001,2002 Free Software Foundation, Inc.
8+51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
9+
10+Everyone is permitted to copy and distribute verbatim copies
11+of this license document, but changing it is not allowed.
12+@end display
13+
14+@enumerate 0
15+@item
16+PREAMBLE
17+
18+The purpose of this License is to make a manual, textbook, or other
19+functional and useful document @dfn{free} in the sense of freedom: to
20+assure everyone the effective freedom to copy and redistribute it,
21+with or without modifying it, either commercially or noncommercially.
22+Secondarily, this License preserves for the author and publisher a way
23+to get credit for their work, while not being considered responsible
24+for modifications made by others.
25+
26+This License is a kind of ``copyleft'', which means that derivative
27+works of the document must themselves be free in the same sense. It
28+complements the GNU General Public License, which is a copyleft
29+license designed for free software.
30+
31+We have designed this License in order to use it for manuals for free
32+software, because free software needs free documentation: a free
33+program should come with manuals providing the same freedoms that the
34+software does. But this License is not limited to software manuals;
35+it can be used for any textual work, regardless of subject matter or
36+whether it is published as a printed book. We recommend this License
37+principally for works whose purpose is instruction or reference.
38+
39+@item
40+APPLICABILITY AND DEFINITIONS
41+
42+This License applies to any manual or other work, in any medium, that
43+contains a notice placed by the copyright holder saying it can be
44+distributed under the terms of this License. Such a notice grants a
45+world-wide, royalty-free license, unlimited in duration, to use that
46+work under the conditions stated herein. The ``Document'', below,
47+refers to any such manual or work. Any member of the public is a
48+licensee, and is addressed as ``you''. You accept the license if you
49+copy, modify or distribute the work in a way requiring permission
50+under copyright law.
51+
52+A ``Modified Version'' of the Document means any work containing the
53+Document or a portion of it, either copied verbatim, or with
54+modifications and/or translated into another language.
55+
56+A ``Secondary Section'' is a named appendix or a front-matter section
57+of the Document that deals exclusively with the relationship of the
58+publishers or authors of the Document to the Document's overall
59+subject (or to related matters) and contains nothing that could fall
60+directly within that overall subject. (Thus, if the Document is in
61+part a textbook of mathematics, a Secondary Section may not explain
62+any mathematics.) The relationship could be a matter of historical
63+connection with the subject or with related matters, or of legal,
64+commercial, philosophical, ethical or political position regarding
65+them.
66+
67+The ``Invariant Sections'' are certain Secondary Sections whose titles
68+are designated, as being those of Invariant Sections, in the notice
69+that says that the Document is released under this License. If a
70+section does not fit the above definition of Secondary then it is not
71+allowed to be designated as Invariant. The Document may contain zero
72+Invariant Sections. If the Document does not identify any Invariant
73+Sections then there are none.
74+
75+The ``Cover Texts'' are certain short passages of text that are listed,
76+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
77+the Document is released under this License. A Front-Cover Text may
78+be at most 5 words, and a Back-Cover Text may be at most 25 words.
79+
80+A ``Transparent'' copy of the Document means a machine-readable copy,
81+represented in a format whose specification is available to the
82+general public, that is suitable for revising the document
83+straightforwardly with generic text editors or (for images composed of
84+pixels) generic paint programs or (for drawings) some widely available
85+drawing editor, and that is suitable for input to text formatters or
86+for automatic translation to a variety of formats suitable for input
87+to text formatters. A copy made in an otherwise Transparent file
88+format whose markup, or absence of markup, has been arranged to thwart
89+or discourage subsequent modification by readers is not Transparent.
90+An image format is not Transparent if used for any substantial amount
91+of text. A copy that is not ``Transparent'' is called ``Opaque''.
92+
93+Examples of suitable formats for Transparent copies include plain
94+@sc{ascii} without markup, Texinfo input format, La@TeX{} input
95+format, @acronym{SGML} or @acronym{XML} using a publicly available
96+@acronym{DTD}, and standard-conforming simple @acronym{HTML},
97+PostScript or @acronym{PDF} designed for human modification. Examples
98+of transparent image formats include @acronym{PNG}, @acronym{XCF} and
99+@acronym{JPG}. Opaque formats include proprietary formats that can be
100+read and edited only by proprietary word processors, @acronym{SGML} or
101+@acronym{XML} for which the @acronym{DTD} and/or processing tools are
102+not generally available, and the machine-generated @acronym{HTML},
103+PostScript or @acronym{PDF} produced by some word processors for
104+output purposes only.
105+
106+The ``Title Page'' means, for a printed book, the title page itself,
107+plus such following pages as are needed to hold, legibly, the material
108+this License requires to appear in the title page. For works in
109+formats which do not have any title page as such, ``Title Page'' means
110+the text near the most prominent appearance of the work's title,
111+preceding the beginning of the body of the text.
112+
113+A section ``Entitled XYZ'' means a named subunit of the Document whose
114+title either is precisely XYZ or contains XYZ in parentheses following
115+text that translates XYZ in another language. (Here XYZ stands for a
116+specific section name mentioned below, such as ``Acknowledgements'',
117+``Dedications'', ``Endorsements'', or ``History''.) To ``Preserve the Title''
118+of such a section when you modify the Document means that it remains a
119+section ``Entitled XYZ'' according to this definition.
120+
121+The Document may include Warranty Disclaimers next to the notice which
122+states that this License applies to the Document. These Warranty
123+Disclaimers are considered to be included by reference in this
124+License, but only as regards disclaiming warranties: any other
125+implication that these Warranty Disclaimers may have is void and has
126+no effect on the meaning of this License.
127+
128+@item
129+VERBATIM COPYING
130+
131+You may copy and distribute the Document in any medium, either
132+commercially or noncommercially, provided that this License, the
133+copyright notices, and the license notice saying this License applies
134+to the Document are reproduced in all copies, and that you add no other
135+conditions whatsoever to those of this License. You may not use
136+technical measures to obstruct or control the reading or further
137+copying of the copies you make or distribute. However, you may accept
138+compensation in exchange for copies. If you distribute a large enough
139+number of copies you must also follow the conditions in section 3.
140+
141+You may also lend copies, under the same conditions stated above, and
142+you may publicly display copies.
143+
144+@item
145+COPYING IN QUANTITY
146+
147+If you publish printed copies (or copies in media that commonly have
148+printed covers) of the Document, numbering more than 100, and the
149+Document's license notice requires Cover Texts, you must enclose the
150+copies in covers that carry, clearly and legibly, all these Cover
151+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
152+the back cover. Both covers must also clearly and legibly identify
153+you as the publisher of these copies. The front cover must present
154+the full title with all words of the title equally prominent and
155+visible. You may add other material on the covers in addition.
156+Copying with changes limited to the covers, as long as they preserve
157+the title of the Document and satisfy these conditions, can be treated
158+as verbatim copying in other respects.
159+
160+If the required texts for either cover are too voluminous to fit
161+legibly, you should put the first ones listed (as many as fit
162+reasonably) on the actual cover, and continue the rest onto adjacent
163+pages.
164+
165+If you publish or distribute Opaque copies of the Document numbering
166+more than 100, you must either include a machine-readable Transparent
167+copy along with each Opaque copy, or state in or with each Opaque copy
168+a computer-network location from which the general network-using
169+public has access to download using public-standard network protocols
170+a complete Transparent copy of the Document, free of added material.
171+If you use the latter option, you must take reasonably prudent steps,
172+when you begin distribution of Opaque copies in quantity, to ensure
173+that this Transparent copy will remain thus accessible at the stated
174+location until at least one year after the last time you distribute an
175+Opaque copy (directly or through your agents or retailers) of that
176+edition to the public.
177+
178+It is requested, but not required, that you contact the authors of the
179+Document well before redistributing any large number of copies, to give
180+them a chance to provide you with an updated version of the Document.
181+
182+@item
183+MODIFICATIONS
184+
185+You may copy and distribute a Modified Version of the Document under
186+the conditions of sections 2 and 3 above, provided that you release
187+the Modified Version under precisely this License, with the Modified
188+Version filling the role of the Document, thus licensing distribution
189+and modification of the Modified Version to whoever possesses a copy
190+of it. In addition, you must do these things in the Modified Version:
191+
192+@enumerate A
193+@item
194+Use in the Title Page (and on the covers, if any) a title distinct
195+from that of the Document, and from those of previous versions
196+(which should, if there were any, be listed in the History section
197+of the Document). You may use the same title as a previous version
198+if the original publisher of that version gives permission.
199+
200+@item
201+List on the Title Page, as authors, one or more persons or entities
202+responsible for authorship of the modifications in the Modified
203+Version, together with at least five of the principal authors of the
204+Document (all of its principal authors, if it has fewer than five),
205+unless they release you from this requirement.
206+
207+@item
208+State on the Title page the name of the publisher of the
209+Modified Version, as the publisher.
210+
211+@item
212+Preserve all the copyright notices of the Document.
213+
214+@item
215+Add an appropriate copyright notice for your modifications
216+adjacent to the other copyright notices.
217+
218+@item
219+Include, immediately after the copyright notices, a license notice
220+giving the public permission to use the Modified Version under the
221+terms of this License, in the form shown in the Addendum below.
222+
223+@item
224+Preserve in that license notice the full lists of Invariant Sections
225+and required Cover Texts given in the Document's license notice.
226+
227+@item
228+Include an unaltered copy of this License.
229+
230+@item
231+Preserve the section Entitled ``History'', Preserve its Title, and add
232+to it an item stating at least the title, year, new authors, and
233+publisher of the Modified Version as given on the Title Page. If
234+there is no section Entitled ``History'' in the Document, create one
235+stating the title, year, authors, and publisher of the Document as
236+given on its Title Page, then add an item describing the Modified
237+Version as stated in the previous sentence.
238+
239+@item
240+Preserve the network location, if any, given in the Document for
241+public access to a Transparent copy of the Document, and likewise
242+the network locations given in the Document for previous versions
243+it was based on. These may be placed in the ``History'' section.
244+You may omit a network location for a work that was published at
245+least four years before the Document itself, or if the original
246+publisher of the version it refers to gives permission.
247+
248+@item
249+For any section Entitled ``Acknowledgements'' or ``Dedications'', Preserve
250+the Title of the section, and preserve in the section all the
251+substance and tone of each of the contributor acknowledgements and/or
252+dedications given therein.
253+
254+@item
255+Preserve all the Invariant Sections of the Document,
256+unaltered in their text and in their titles. Section numbers
257+or the equivalent are not considered part of the section titles.
258+
259+@item
260+Delete any section Entitled ``Endorsements''. Such a section
261+may not be included in the Modified Version.
262+
263+@item
264+Do not retitle any existing section to be Entitled ``Endorsements'' or
265+to conflict in title with any Invariant Section.
266+
267+@item
268+Preserve any Warranty Disclaimers.
269+@end enumerate
270+
271+If the Modified Version includes new front-matter sections or
272+appendices that qualify as Secondary Sections and contain no material
273+copied from the Document, you may at your option designate some or all
274+of these sections as invariant. To do this, add their titles to the
275+list of Invariant Sections in the Modified Version's license notice.
276+These titles must be distinct from any other section titles.
277+
278+You may add a section Entitled ``Endorsements'', provided it contains
279+nothing but endorsements of your Modified Version by various
280+parties---for example, statements of peer review or that the text has
281+been approved by an organization as the authoritative definition of a
282+standard.
283+
284+You may add a passage of up to five words as a Front-Cover Text, and a
285+passage of up to 25 words as a Back-Cover Text, to the end of the list
286+of Cover Texts in the Modified Version. Only one passage of
287+Front-Cover Text and one of Back-Cover Text may be added by (or
288+through arrangements made by) any one entity. If the Document already
289+includes a cover text for the same cover, previously added by you or
290+by arrangement made by the same entity you are acting on behalf of,
291+you may not add another; but you may replace the old one, on explicit
292+permission from the previous publisher that added the old one.
293+
294+The author(s) and publisher(s) of the Document do not by this License
295+give permission to use their names for publicity for or to assert or
296+imply endorsement of any Modified Version.
297+
298+@item
299+COMBINING DOCUMENTS
300+
301+You may combine the Document with other documents released under this
302+License, under the terms defined in section 4 above for modified
303+versions, provided that you include in the combination all of the
304+Invariant Sections of all of the original documents, unmodified, and
305+list them all as Invariant Sections of your combined work in its
306+license notice, and that you preserve all their Warranty Disclaimers.
307+
308+The combined work need only contain one copy of this License, and
309+multiple identical Invariant Sections may be replaced with a single
310+copy. If there are multiple Invariant Sections with the same name but
311+different contents, make the title of each such section unique by
312+adding at the end of it, in parentheses, the name of the original
313+author or publisher of that section if known, or else a unique number.
314+Make the same adjustment to the section titles in the list of
315+Invariant Sections in the license notice of the combined work.
316+
317+In the combination, you must combine any sections Entitled ``History''
318+in the various original documents, forming one section Entitled
319+``History''; likewise combine any sections Entitled ``Acknowledgements'',
320+and any sections Entitled ``Dedications''. You must delete all
321+sections Entitled ``Endorsements.''
322+
323+@item
324+COLLECTIONS OF DOCUMENTS
325+
326+You may make a collection consisting of the Document and other documents
327+released under this License, and replace the individual copies of this
328+License in the various documents with a single copy that is included in
329+the collection, provided that you follow the rules of this License for
330+verbatim copying of each of the documents in all other respects.
331+
332+You may extract a single document from such a collection, and distribute
333+it individually under this License, provided you insert a copy of this
334+License into the extracted document, and follow this License in all
335+other respects regarding verbatim copying of that document.
336+
337+@item
338+AGGREGATION WITH INDEPENDENT WORKS
339+
340+A compilation of the Document or its derivatives with other separate
341+and independent documents or works, in or on a volume of a storage or
342+distribution medium, is called an ``aggregate'' if the copyright
343+resulting from the compilation is not used to limit the legal rights
344+of the compilation's users beyond what the individual works permit.
345+When the Document is included an aggregate, this License does not
346+apply to the other works in the aggregate which are not themselves
347+derivative works of the Document.
348+
349+If the Cover Text requirement of section 3 is applicable to these
350+copies of the Document, then if the Document is less than one half of
351+the entire aggregate, the Document's Cover Texts may be placed on
352+covers that bracket the Document within the aggregate, or the
353+electronic equivalent of covers if the Document is in electronic form.
354+Otherwise they must appear on printed covers that bracket the whole
355+aggregate.
356+
357+@item
358+TRANSLATION
359+
360+Translation is considered a kind of modification, so you may
361+distribute translations of the Document under the terms of section 4.
362+Replacing Invariant Sections with translations requires special
363+permission from their copyright holders, but you may include
364+translations of some or all Invariant Sections in addition to the
365+original versions of these Invariant Sections. You may include a
366+translation of this License, and all the license notices in the
367+Document, and any Warrany Disclaimers, provided that you also include
368+the original English version of this License and the original versions
369+of those notices and disclaimers. In case of a disagreement between
370+the translation and the original version of this License or a notice
371+or disclaimer, the original version will prevail.
372+
373+If a section in the Document is Entitled ``Acknowledgements'',
374+``Dedications'', or ``History'', the requirement (section 4) to Preserve
375+its Title (section 1) will typically require changing the actual
376+title.
377+
378+@item
379+TERMINATION
380+
381+You may not copy, modify, sublicense, or distribute the Document except
382+as expressly provided for under this License. Any other attempt to
383+copy, modify, sublicense or distribute the Document is void, and will
384+automatically terminate your rights under this License. However,
385+parties who have received copies, or rights, from you under this
386+License will not have their licenses terminated so long as such
387+parties remain in full compliance.
388+
389+@item
390+FUTURE REVISIONS OF THIS LICENSE
391+
392+The Free Software Foundation may publish new, revised versions
393+of the GNU Free Documentation License from time to time. Such new
394+versions will be similar in spirit to the present version, but may
395+differ in detail to address new problems or concerns. See
396+@uref{http://www.gnu.org/copyleft/}.
397+
398+Each version of the License is given a distinguishing version number.
399+If the Document specifies that a particular numbered version of this
400+License ``or any later version'' applies to it, you have the option of
401+following the terms and conditions either of that specified version or
402+of any later version that has been published (not as a draft) by the
403+Free Software Foundation. If the Document does not specify a version
404+number of this License, you may choose any version ever published (not
405+as a draft) by the Free Software Foundation.
406+@end enumerate
407+
408+@page
409+
410+
411+
--- /dev/null
+++ b/original/stamp-vti
@@ -0,0 +1,4 @@
1+@set UPDATED 26 May 2009
2+@set UPDATED-MONTH May 2009
3+@set EDITION 3.05
4+@set VERSION 3.05
--- /dev/null
+++ b/original/version.texi
@@ -0,0 +1,4 @@
1+@set UPDATED 26 May 2009
2+@set UPDATED-MONTH May 2009
3+@set EDITION 3.05
4+@set VERSION 3.05
Binary files /dev/null and b/original/xndetail.dia differ
Binary files /dev/null and b/original/xndetail.jpg differ
Binary files /dev/null and b/original/xndetail.png differ
--- /dev/null
+++ b/original/xnee.dox
@@ -0,0 +1,993 @@
1+# Doxyfile 1.2.18
2+
3+# This file describes the settings to be used by the documentation system
4+# doxygen (www.doxygen.org) for a project
5+#
6+# All text after a hash (#) is considered a comment and will be ignored
7+# The format is:
8+# TAG = value [value, ...]
9+# For lists items can also be appended using:
10+# TAG += value [value, ...]
11+# Values that contain spaces should be placed between quotes (" ")
12+
13+#---------------------------------------------------------------------------
14+# General configuration options
15+#---------------------------------------------------------------------------
16+
17+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
18+# by quotes) that should identify the project.
19+
20+PROJECT_NAME = Xnee
21+
22+# The PROJECT_NUMBER tag can be used to enter a project or revision number.
23+# This could be handy for archiving the generated documentation or
24+# if some version control system is used.
25+
26+PROJECT_NUMBER =
27+
28+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
29+# base path where the generated documentation will be put.
30+# If a relative path is entered, it will be relative to the location
31+# where doxygen was started. If left blank the current directory will be used.
32+
33+OUTPUT_DIRECTORY =
34+
35+# The OUTPUT_LANGUAGE tag is used to specify the language in which all
36+# documentation generated by doxygen is written. Doxygen will use this
37+# information to generate all constant output in the proper language.
38+# The default language is English, other supported languages are:
39+# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch,
40+# Finnish, French, German, Greek, Hungarian, Italian, Japanese, Japanese-en
41+# (Japanese with english messages), Korean, Norwegian, Polish, Portuguese,
42+# Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish and Ukrainian.
43+
44+OUTPUT_LANGUAGE = English
45+
46+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
47+# documentation are documented, even if no documentation was available.
48+# Private class members and static file members will be hidden unless
49+# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
50+
51+EXTRACT_ALL = YES
52+
53+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
54+# will be included in the documentation.
55+
56+EXTRACT_PRIVATE = NO
57+
58+# If the EXTRACT_STATIC tag is set to YES all static members of a file
59+# will be included in the documentation.
60+
61+EXTRACT_STATIC = NO
62+
63+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
64+# defined locally in source files will be included in the documentation.
65+# If set to NO only classes defined in header files are included.
66+
67+EXTRACT_LOCAL_CLASSES = YES
68+
69+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
70+# undocumented members of documented classes, files or namespaces.
71+# If set to NO (the default) these members will be included in the
72+# various overviews, but no documentation section is generated.
73+# This option has no effect if EXTRACT_ALL is enabled.
74+
75+HIDE_UNDOC_MEMBERS = NO
76+
77+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
78+# undocumented classes that are normally visible in the class hierarchy.
79+# If set to NO (the default) these class will be included in the various
80+# overviews. This option has no effect if EXTRACT_ALL is enabled.
81+
82+HIDE_UNDOC_CLASSES = NO
83+
84+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
85+# friend (class|struct|union) declarations.
86+# If set to NO (the default) these declarations will be included in the
87+# documentation.
88+
89+HIDE_FRIEND_COMPOUNDS = NO
90+
91+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
92+# include brief member descriptions after the members that are listed in
93+# the file and class documentation (similar to JavaDoc).
94+# Set to NO to disable this.
95+
96+BRIEF_MEMBER_DESC = YES
97+
98+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
99+# the brief description of a member or function before the detailed description.
100+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
101+# brief descriptions will be completely suppressed.
102+
103+REPEAT_BRIEF = YES
104+
105+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
106+# Doxygen will generate a detailed section even if there is only a brief
107+# description.
108+
109+ALWAYS_DETAILED_SEC = NO
110+
111+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all inherited
112+# members of a class in the documentation of that class as if those members were
113+# ordinary class members. Constructors, destructors and assignment operators of
114+# the base classes will not be shown.
115+
116+INLINE_INHERITED_MEMB = NO
117+
118+# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
119+# path before files name in the file list and in the header files. If set
120+# to NO the shortest path that makes the file name unique will be used.
121+
122+FULL_PATH_NAMES = NO
123+
124+# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
125+# can be used to strip a user defined part of the path. Stripping is
126+# only done if one of the specified strings matches the left-hand part of
127+# the path. It is allowed to use relative paths in the argument list.
128+
129+STRIP_FROM_PATH =
130+
131+# The INTERNAL_DOCS tag determines if documentation
132+# that is typed after a \internal command is included. If the tag is set
133+# to NO (the default) then the documentation will be excluded.
134+# Set it to YES to include the internal documentation.
135+
136+INTERNAL_DOCS = NO
137+
138+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
139+# doxygen to hide any special comment blocks from generated source code
140+# fragments. Normal C and C++ comments will always remain visible.
141+
142+STRIP_CODE_COMMENTS = YES
143+
144+# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
145+# file names in lower case letters. If set to YES upper case letters are also
146+# allowed. This is useful if you have classes or files whose names only differ
147+# in case and if your file system supports case sensitive file names. Windows
148+# users are adviced to set this option to NO.
149+
150+CASE_SENSE_NAMES = YES
151+
152+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
153+# (but less readable) file names. This can be useful is your file systems
154+# doesn't support long names like on DOS, Mac, or CD-ROM.
155+
156+SHORT_NAMES = NO
157+
158+# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
159+# will show members with their full class and namespace scopes in the
160+# documentation. If set to YES the scope will be hidden.
161+
162+HIDE_SCOPE_NAMES = NO
163+
164+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
165+# will generate a verbatim copy of the header file for each class for
166+# which an include is specified. Set to NO to disable this.
167+
168+VERBATIM_HEADERS = YES
169+
170+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
171+# will put list of the files that are included by a file in the documentation
172+# of that file.
173+
174+SHOW_INCLUDE_FILES = YES
175+
176+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
177+# will interpret the first line (until the first dot) of a JavaDoc-style
178+# comment as the brief description. If set to NO, the JavaDoc
179+# comments will behave just like the Qt-style comments (thus requiring an
180+# explict @brief command for a brief description.
181+
182+JAVADOC_AUTOBRIEF = NO
183+
184+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
185+# treat a multi-line C++ special comment block (i.e. a block of //! or ///
186+# comments) as a brief description. This used to be the default behaviour.
187+# The new default is to treat a multi-line C++ comment block as a detailed
188+# description. Set this tag to YES if you prefer the old behaviour instead.
189+
190+MULTILINE_CPP_IS_BRIEF = NO
191+
192+# If the DETAILS_AT_TOP tag is set to YES then Doxygen
193+# will output the detailed description near the top, like JavaDoc.
194+# If set to NO, the detailed description appears after the member
195+# documentation.
196+
197+DETAILS_AT_TOP = NO
198+
199+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
200+# member inherits the documentation from any documented member that it
201+# reimplements.
202+
203+INHERIT_DOCS = YES
204+
205+# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
206+# is inserted in the documentation for inline members.
207+
208+INLINE_INFO = YES
209+
210+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
211+# will sort the (detailed) documentation of file and class members
212+# alphabetically by member name. If set to NO the members will appear in
213+# declaration order.
214+
215+SORT_MEMBER_DOCS = YES
216+
217+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
218+# tag is set to YES, then doxygen will reuse the documentation of the first
219+# member in the group (if any) for the other members of the group. By default
220+# all members of a group must be documented explicitly.
221+
222+DISTRIBUTE_GROUP_DOC = NO
223+
224+# The TAB_SIZE tag can be used to set the number of spaces in a tab.
225+# Doxygen uses this value to replace tabs by spaces in code fragments.
226+
227+TAB_SIZE = 8
228+
229+# The GENERATE_TODOLIST tag can be used to enable (YES) or
230+# disable (NO) the todo list. This list is created by putting \todo
231+# commands in the documentation.
232+
233+GENERATE_TODOLIST = YES
234+
235+# The GENERATE_TESTLIST tag can be used to enable (YES) or
236+# disable (NO) the test list. This list is created by putting \test
237+# commands in the documentation.
238+
239+GENERATE_TESTLIST = YES
240+
241+# The GENERATE_BUGLIST tag can be used to enable (YES) or
242+# disable (NO) the bug list. This list is created by putting \bug
243+# commands in the documentation.
244+
245+GENERATE_BUGLIST = YES
246+
247+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
248+# disable (NO) the deprecated list. This list is created by putting \deprecated commands in the documentation.
249+
250+GENERATE_DEPRECATEDLIST= YES
251+
252+# This tag can be used to specify a number of aliases that acts
253+# as commands in the documentation. An alias has the form "name=value".
254+# For example adding "sideeffect=\par Side Effects:\n" will allow you to
255+# put the command \sideeffect (or @sideeffect) in the documentation, which
256+# will result in a user defined paragraph with heading "Side Effects:".
257+# You can put \n's in the value part of an alias to insert newlines.
258+
259+ALIASES =
260+
261+# The ENABLED_SECTIONS tag can be used to enable conditional
262+# documentation sections, marked by \if sectionname ... \endif.
263+
264+ENABLED_SECTIONS =
265+
266+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
267+# the initial value of a variable or define consist of for it to appear in
268+# the documentation. If the initializer consists of more lines than specified
269+# here it will be hidden. Use a value of 0 to hide initializers completely.
270+# The appearance of the initializer of individual variables and defines in the
271+# documentation can be controlled using \showinitializer or \hideinitializer
272+# command in the documentation regardless of this setting.
273+
274+MAX_INITIALIZER_LINES = 30
275+
276+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
277+# only. Doxygen will then generate output that is more tailored for C.
278+# For instance some of the names that are used will be different. The list
279+# of all members will be omitted, etc.
280+
281+OPTIMIZE_OUTPUT_FOR_C = YES
282+
283+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources
284+# only. Doxygen will then generate output that is more tailored for Java.
285+# For instance namespaces will be presented as packages, qualified scopes
286+# will look different, etc.
287+
288+OPTIMIZE_OUTPUT_JAVA = NO
289+
290+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
291+# at the bottom of the documentation of classes and structs. If set to YES the
292+# list will mention the files that were used to generate the documentation.
293+
294+SHOW_USED_FILES = YES
295+
296+#---------------------------------------------------------------------------
297+# configuration options related to warning and progress messages
298+#---------------------------------------------------------------------------
299+
300+# The QUIET tag can be used to turn on/off the messages that are generated
301+# by doxygen. Possible values are YES and NO. If left blank NO is used.
302+
303+QUIET = NO
304+
305+# The WARNINGS tag can be used to turn on/off the warning messages that are
306+# generated by doxygen. Possible values are YES and NO. If left blank
307+# NO is used.
308+
309+WARNINGS = YES
310+
311+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
312+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
313+# automatically be disabled.
314+
315+WARN_IF_UNDOCUMENTED = YES
316+
317+# The WARN_FORMAT tag determines the format of the warning messages that
318+# doxygen can produce. The string should contain the $file, $line, and $text
319+# tags, which will be replaced by the file and line number from which the
320+# warning originated and the warning text.
321+
322+WARN_FORMAT = "$file:$line: $text"
323+
324+# The WARN_LOGFILE tag can be used to specify a file to which warning
325+# and error messages should be written. If left blank the output is written
326+# to stderr.
327+
328+WARN_LOGFILE =
329+
330+#---------------------------------------------------------------------------
331+# configuration options related to the input files
332+#---------------------------------------------------------------------------
333+
334+# The INPUT tag can be used to specify the files and/or directories that contain
335+# documented source files. You may enter file names like "myfile.cpp" or
336+# directories like "/usr/src/myproject". Separate the files or directories
337+# with spaces.
338+
339+INPUT = ../libxnee/include/libxnee/
340+
341+# If the value of the INPUT tag contains directories, you can use the
342+# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
343+# and *.h) to filter out the source-files in the directories. If left
344+# blank the following patterns are tested:
345+# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx *.hpp
346+# *.h++ *.idl *.odl
347+
348+FILE_PATTERNS = *.h
349+
350+# The RECURSIVE tag can be used to turn specify whether or not subdirectories
351+# should be searched for input files as well. Possible values are YES and NO.
352+# If left blank NO is used.
353+
354+RECURSIVE = NO
355+
356+# The EXCLUDE tag can be used to specify files and/or directories that should
357+# excluded from the INPUT source files. This way you can easily exclude a
358+# subdirectory from a directory tree whose root is specified with the INPUT tag.
359+
360+EXCLUDE =
361+
362+# The EXCLUDE_SYMLINKS tag can be used select whether or not files or directories
363+# that are symbolic links (a Unix filesystem feature) are excluded from the input.
364+
365+EXCLUDE_SYMLINKS = NO
366+
367+# If the value of the INPUT tag contains directories, you can use the
368+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
369+# certain files from those directories.
370+
371+EXCLUDE_PATTERNS =
372+
373+# The EXAMPLE_PATH tag can be used to specify one or more files or
374+# directories that contain example code fragments that are included (see
375+# the \include command).
376+
377+EXAMPLE_PATH =
378+
379+# If the value of the EXAMPLE_PATH tag contains directories, you can use the
380+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
381+# and *.h) to filter out the source-files in the directories. If left
382+# blank all files are included.
383+
384+EXAMPLE_PATTERNS =
385+
386+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
387+# searched for input files to be used with the \include or \dontinclude
388+# commands irrespective of the value of the RECURSIVE tag.
389+# Possible values are YES and NO. If left blank NO is used.
390+
391+EXAMPLE_RECURSIVE = NO
392+
393+# The IMAGE_PATH tag can be used to specify one or more files or
394+# directories that contain image that are included in the documentation (see
395+# the \image command).
396+
397+IMAGE_PATH =
398+
399+# The INPUT_FILTER tag can be used to specify a program that doxygen should
400+# invoke to filter for each input file. Doxygen will invoke the filter program
401+# by executing (via popen()) the command <filter> <input-file>, where <filter>
402+# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
403+# input file. Doxygen will then use the output that the filter program writes
404+# to standard output.
405+
406+INPUT_FILTER =
407+
408+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
409+# INPUT_FILTER) will be used to filter the input files when producing source
410+# files to browse (i.e. when SOURCE_BROWSER is set to YES).
411+
412+FILTER_SOURCE_FILES = NO
413+
414+#---------------------------------------------------------------------------
415+# configuration options related to source browsing
416+#---------------------------------------------------------------------------
417+
418+# If the SOURCE_BROWSER tag is set to YES then a list of source files will
419+# be generated. Documented entities will be cross-referenced with these sources.
420+
421+SOURCE_BROWSER = NO
422+
423+# Setting the INLINE_SOURCES tag to YES will include the body
424+# of functions and classes directly in the documentation.
425+
426+INLINE_SOURCES = NO
427+
428+# If the REFERENCED_BY_RELATION tag is set to YES (the default)
429+# then for each documented function all documented
430+# functions referencing it will be listed.
431+
432+REFERENCED_BY_RELATION = YES
433+
434+# If the REFERENCES_RELATION tag is set to YES (the default)
435+# then for each documented function all documented entities
436+# called/used by that function will be listed.
437+
438+REFERENCES_RELATION = YES
439+
440+#---------------------------------------------------------------------------
441+# configuration options related to the alphabetical class index
442+#---------------------------------------------------------------------------
443+
444+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
445+# of all compounds will be generated. Enable this if the project
446+# contains a lot of classes, structs, unions or interfaces.
447+
448+ALPHABETICAL_INDEX = NO
449+
450+# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
451+# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
452+# in which this list will be split (can be a number in the range [1..20])
453+
454+COLS_IN_ALPHA_INDEX = 5
455+
456+# In case all classes in a project start with a common prefix, all
457+# classes will be put under the same header in the alphabetical index.
458+# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
459+# should be ignored while generating the index headers.
460+
461+IGNORE_PREFIX =
462+
463+#---------------------------------------------------------------------------
464+# configuration options related to the HTML output
465+#---------------------------------------------------------------------------
466+
467+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
468+# generate HTML output.
469+
470+GENERATE_HTML = YES
471+
472+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
473+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
474+# put in front of it. If left blank `html' will be used as the default path.
475+
476+HTML_OUTPUT = html
477+
478+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
479+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
480+# doxygen will generate files with .html extension.
481+
482+HTML_FILE_EXTENSION = .html
483+
484+# The HTML_HEADER tag can be used to specify a personal HTML header for
485+# each generated HTML page. If it is left blank doxygen will generate a
486+# standard header.
487+
488+HTML_HEADER =
489+
490+# The HTML_FOOTER tag can be used to specify a personal HTML footer for
491+# each generated HTML page. If it is left blank doxygen will generate a
492+# standard footer.
493+
494+HTML_FOOTER =
495+
496+# The HTML_STYLESHEET tag can be used to specify a user defined cascading
497+# style sheet that is used by each HTML page. It can be used to
498+# fine-tune the look of the HTML output. If the tag is left blank doxygen
499+# will generate a default style sheet
500+
501+HTML_STYLESHEET =
502+
503+# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
504+# files or namespaces will be aligned in HTML using tables. If set to
505+# NO a bullet list will be used.
506+
507+HTML_ALIGN_MEMBERS = YES
508+
509+# If the GENERATE_HTMLHELP tag is set to YES, additional index files
510+# will be generated that can be used as input for tools like the
511+# Microsoft HTML help workshop to generate a compressed HTML help file (.chm)
512+# of the generated HTML documentation.
513+
514+GENERATE_HTMLHELP = NO
515+
516+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
517+# be used to specify the file name of the resulting .chm file. You
518+# can add a path in front of the file if the result should not be
519+# written to the html output dir.
520+
521+CHM_FILE =
522+
523+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
524+# be used to specify the location (absolute path including file name) of
525+# the HTML help compiler (hhc.exe). If non empty doxygen will try to run
526+# the html help compiler on the generated index.hhp.
527+
528+HHC_LOCATION =
529+
530+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
531+# controls if a separate .chi index file is generated (YES) or that
532+# it should be included in the master .chm file (NO).
533+
534+GENERATE_CHI = NO
535+
536+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
537+# controls whether a binary table of contents is generated (YES) or a
538+# normal table of contents (NO) in the .chm file.
539+
540+BINARY_TOC = NO
541+
542+# The TOC_EXPAND flag can be set to YES to add extra items for group members
543+# to the contents of the Html help documentation and to the tree view.
544+
545+TOC_EXPAND = NO
546+
547+# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
548+# top of each HTML page. The value NO (the default) enables the index and
549+# the value YES disables it.
550+
551+DISABLE_INDEX = NO
552+
553+# This tag can be used to set the number of enum values (range [1..20])
554+# that doxygen will group on one line in the generated HTML documentation.
555+
556+ENUM_VALUES_PER_LINE = 4
557+
558+# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
559+# generated containing a tree-like index structure (just like the one that
560+# is generated for HTML Help). For this to work a browser that supports
561+# JavaScript and frames is required (for instance Mozilla, Netscape 4.0+,
562+# or Internet explorer 4.0+). Note that for large projects the tree generation
563+# can take a very long time. In such cases it is better to disable this feature.
564+# Windows users are probably better off using the HTML help feature.
565+
566+GENERATE_TREEVIEW = YES
567+
568+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
569+# used to set the initial width (in pixels) of the frame in which the tree
570+# is shown.
571+
572+TREEVIEW_WIDTH = 250
573+
574+#---------------------------------------------------------------------------
575+# configuration options related to the LaTeX output
576+#---------------------------------------------------------------------------
577+
578+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
579+# generate Latex output.
580+
581+GENERATE_LATEX = YES
582+
583+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
584+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
585+# put in front of it. If left blank `latex' will be used as the default path.
586+
587+LATEX_OUTPUT = latex
588+
589+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be invoked. If left blank `latex' will be used as the default command name.
590+
591+LATEX_CMD_NAME = latex
592+
593+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
594+# generate index for LaTeX. If left blank `makeindex' will be used as the
595+# default command name.
596+
597+MAKEINDEX_CMD_NAME = makeindex
598+
599+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
600+# LaTeX documents. This may be useful for small projects and may help to
601+# save some trees in general.
602+
603+COMPACT_LATEX = NO
604+
605+# The PAPER_TYPE tag can be used to set the paper type that is used
606+# by the printer. Possible values are: a4, a4wide, letter, legal and
607+# executive. If left blank a4wide will be used.
608+
609+PAPER_TYPE = a4wide
610+
611+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
612+# packages that should be included in the LaTeX output.
613+
614+EXTRA_PACKAGES =
615+
616+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
617+# the generated latex document. The header should contain everything until
618+# the first chapter. If it is left blank doxygen will generate a
619+# standard header. Notice: only use this tag if you know what you are doing!
620+
621+LATEX_HEADER =
622+
623+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
624+# is prepared for conversion to pdf (using ps2pdf). The pdf file will
625+# contain links (just like the HTML output) instead of page references
626+# This makes the output suitable for online browsing using a pdf viewer.
627+
628+PDF_HYPERLINKS = NO
629+
630+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
631+# plain latex in the generated Makefile. Set this option to YES to get a
632+# higher quality PDF documentation.
633+
634+USE_PDFLATEX = NO
635+
636+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
637+# command to the generated LaTeX files. This will instruct LaTeX to keep
638+# running if errors occur, instead of asking the user for help.
639+# This option is also used when generating formulas in HTML.
640+
641+LATEX_BATCHMODE = NO
642+
643+#---------------------------------------------------------------------------
644+# configuration options related to the RTF output
645+#---------------------------------------------------------------------------
646+
647+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
648+# The RTF output is optimised for Word 97 and may not look very pretty with
649+# other RTF readers or editors.
650+
651+GENERATE_RTF = YES
652+
653+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
654+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
655+# put in front of it. If left blank `rtf' will be used as the default path.
656+
657+RTF_OUTPUT = rtf
658+
659+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
660+# RTF documents. This may be useful for small projects and may help to
661+# save some trees in general.
662+
663+COMPACT_RTF = NO
664+
665+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
666+# will contain hyperlink fields. The RTF file will
667+# contain links (just like the HTML output) instead of page references.
668+# This makes the output suitable for online browsing using WORD or other
669+# programs which support those fields.
670+# Note: wordpad (write) and others do not support links.
671+
672+RTF_HYPERLINKS = NO
673+
674+# Load stylesheet definitions from file. Syntax is similar to doxygen's
675+# config file, i.e. a series of assigments. You only have to provide
676+# replacements, missing definitions are set to their default value.
677+
678+RTF_STYLESHEET_FILE =
679+
680+# Set optional variables used in the generation of an rtf document.
681+# Syntax is similar to doxygen's config file.
682+
683+RTF_EXTENSIONS_FILE =
684+
685+#---------------------------------------------------------------------------
686+# configuration options related to the man page output
687+#---------------------------------------------------------------------------
688+
689+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
690+# generate man pages
691+
692+GENERATE_MAN = YES
693+
694+# The MAN_OUTPUT tag is used to specify where the man pages will be put.
695+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
696+# put in front of it. If left blank `man' will be used as the default path.
697+
698+MAN_OUTPUT = man
699+
700+# The MAN_EXTENSION tag determines the extension that is added to
701+# the generated man pages (default is the subroutine's section .3)
702+
703+MAN_EXTENSION = .1
704+
705+# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
706+# then it will generate one additional man file for each entity
707+# documented in the real man page(s). These additional files
708+# only source the real man page, but without them the man command
709+# would be unable to find the correct page. The default is NO.
710+
711+MAN_LINKS = NO
712+
713+#---------------------------------------------------------------------------
714+# configuration options related to the XML output
715+#---------------------------------------------------------------------------
716+
717+# If the GENERATE_XML tag is set to YES Doxygen will
718+# generate an XML file that captures the structure of
719+# the code including all documentation. Note that this
720+# feature is still experimental and incomplete at the
721+# moment.
722+
723+GENERATE_XML = NO
724+
725+# The XML_SCHEMA tag can be used to specify an XML schema,
726+# which can be used by a validating XML parser to check the
727+# syntax of the XML files.
728+
729+XML_SCHEMA =
730+
731+# The XML_DTD tag can be used to specify an XML DTD,
732+# which can be used by a validating XML parser to check the
733+# syntax of the XML files.
734+
735+XML_DTD =
736+
737+#---------------------------------------------------------------------------
738+# configuration options for the AutoGen Definitions output
739+#---------------------------------------------------------------------------
740+
741+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
742+# generate an AutoGen Definitions (see autogen.sf.net) file
743+# that captures the structure of the code including all
744+# documentation. Note that this feature is still experimental
745+# and incomplete at the moment.
746+
747+GENERATE_AUTOGEN_DEF = NO
748+
749+#---------------------------------------------------------------------------
750+# Configuration options related to the preprocessor
751+#---------------------------------------------------------------------------
752+
753+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
754+# evaluate all C-preprocessor directives found in the sources and include
755+# files.
756+
757+ENABLE_PREPROCESSING = YES
758+
759+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
760+# names in the source code. If set to NO (the default) only conditional
761+# compilation will be performed. Macro expansion can be done in a controlled
762+# way by setting EXPAND_ONLY_PREDEF to YES.
763+
764+MACRO_EXPANSION = NO
765+
766+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
767+# then the macro expansion is limited to the macros specified with the
768+# PREDEFINED and EXPAND_AS_PREDEFINED tags.
769+
770+EXPAND_ONLY_PREDEF = NO
771+
772+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
773+# in the INCLUDE_PATH (see below) will be search if a #include is found.
774+
775+SEARCH_INCLUDES = YES
776+
777+# The INCLUDE_PATH tag can be used to specify one or more directories that
778+# contain include files that are not input files but should be processed by
779+# the preprocessor.
780+
781+INCLUDE_PATH =
782+
783+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
784+# patterns (like *.h and *.hpp) to filter out the header-files in the
785+# directories. If left blank, the patterns specified with FILE_PATTERNS will
786+# be used.
787+
788+INCLUDE_FILE_PATTERNS =
789+
790+# The PREDEFINED tag can be used to specify one or more macro names that
791+# are defined before the preprocessor is started (similar to the -D option of
792+# gcc). The argument of the tag is a list of macros of the form: name
793+# or name=definition (no spaces). If the definition and the = are
794+# omitted =1 is assumed.
795+
796+PREDEFINED =
797+
798+# If the MACRO_EXPANSION and EXPAND_PREDEF_ONLY tags are set to YES then
799+# this tag can be used to specify a list of macro names that should be expanded.
800+# The macro definition that is found in the sources will be used.
801+# Use the PREDEFINED tag if you want to use a different macro definition.
802+
803+EXPAND_AS_DEFINED =
804+
805+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
806+# doxygen's preprocessor will remove all function-like macros that are alone
807+# on a line, have an all uppercase name, and do not end with a semicolon. Such
808+# function macros are typically used for boiler-plate code, and will confuse the
809+# parser if not removed.
810+
811+SKIP_FUNCTION_MACROS = YES
812+
813+#---------------------------------------------------------------------------
814+# Configuration::addtions related to external references
815+#---------------------------------------------------------------------------
816+
817+# The TAGFILES tag can be used to specify one or more tagfiles.
818+
819+TAGFILES =
820+
821+# When a file name is specified after GENERATE_TAGFILE, doxygen will create
822+# a tag file that is based on the input files it reads.
823+
824+GENERATE_TAGFILE =
825+
826+# If the ALLEXTERNALS tag is set to YES all external classes will be listed
827+# in the class index. If set to NO only the inherited external classes
828+# will be listed.
829+
830+ALLEXTERNALS = NO
831+
832+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
833+# in the modules index. If set to NO, only the current project's groups will
834+# be listed.
835+
836+EXTERNAL_GROUPS = YES
837+
838+# The PERL_PATH should be the absolute path and name of the perl script
839+# interpreter (i.e. the result of `which perl').
840+
841+PERL_PATH = /usr/bin/perl
842+
843+#---------------------------------------------------------------------------
844+# Configuration options related to the dot tool
845+#---------------------------------------------------------------------------
846+
847+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
848+# generate a inheritance diagram (in Html, RTF and LaTeX) for classes with base or
849+# super classes. Setting the tag to NO turns the diagrams off. Note that this
850+# option is superceded by the HAVE_DOT option below. This is only a fallback. It is
851+# recommended to install and use dot, since it yield more powerful graphs.
852+
853+CLASS_DIAGRAMS = YES
854+
855+# If set to YES, the inheritance and collaboration graphs will hide
856+# inheritance and usage relations if the target is undocumented
857+# or is not a class.
858+
859+HIDE_UNDOC_RELATIONS = YES
860+
861+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
862+# available from the path. This tool is part of Graphviz, a graph visualization
863+# toolkit from AT&T and Lucent Bell Labs. The other options in this section
864+# have no effect if this option is set to NO (the default)
865+
866+HAVE_DOT = NO
867+
868+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
869+# will generate a graph for each documented class showing the direct and
870+# indirect inheritance relations. Setting this tag to YES will force the
871+# the CLASS_DIAGRAMS tag to NO.
872+
873+CLASS_GRAPH = YES
874+
875+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
876+# will generate a graph for each documented class showing the direct and
877+# indirect implementation dependencies (inheritance, containment, and
878+# class references variables) of the class with other documented classes.
879+
880+COLLABORATION_GRAPH = YES
881+
882+# If set to YES, the inheritance and collaboration graphs will show the
883+# relations between templates and their instances.
884+
885+TEMPLATE_RELATIONS = YES
886+
887+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
888+# tags are set to YES then doxygen will generate a graph for each documented
889+# file showing the direct and indirect include dependencies of the file with
890+# other documented files.
891+
892+INCLUDE_GRAPH = YES
893+
894+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
895+# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
896+# documented header file showing the documented files that directly or
897+# indirectly include this file.
898+
899+INCLUDED_BY_GRAPH = YES
900+
901+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
902+# will graphical hierarchy of all classes instead of a textual one.
903+
904+GRAPHICAL_HIERARCHY = YES
905+
906+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
907+# generated by dot. Possible values are png, jpg, or gif
908+# If left blank png will be used.
909+
910+DOT_IMAGE_FORMAT = png
911+
912+# The tag DOT_PATH can be used to specify the path where the dot tool can be
913+# found. If left blank, it is assumed the dot tool can be found on the path.
914+
915+DOT_PATH =
916+
917+# The DOTFILE_DIRS tag can be used to specify one or more directories that
918+# contain dot files that are included in the documentation (see the
919+# \dotfile command).
920+
921+DOTFILE_DIRS =
922+
923+# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width
924+# (in pixels) of the graphs generated by dot. If a graph becomes larger than
925+# this value, doxygen will try to truncate the graph, so that it fits within
926+# the specified constraint. Beware that most browsers cannot cope with very
927+# large images.
928+
929+MAX_DOT_GRAPH_WIDTH = 1024
930+
931+# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height
932+# (in pixels) of the graphs generated by dot. If a graph becomes larger than
933+# this value, doxygen will try to truncate the graph, so that it fits within
934+# the specified constraint. Beware that most browsers cannot cope with very
935+# large images.
936+
937+MAX_DOT_GRAPH_HEIGHT = 1024
938+
939+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
940+# generate a legend page explaining the meaning of the various boxes and
941+# arrows in the dot generated graphs.
942+
943+GENERATE_LEGEND = YES
944+
945+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
946+# remove the intermedate dot files that are used to generate
947+# the various graphs.
948+
949+DOT_CLEANUP = YES
950+
951+#---------------------------------------------------------------------------
952+# Configuration::addtions related to the search engine
953+#---------------------------------------------------------------------------
954+
955+# The SEARCHENGINE tag specifies whether or not a search engine should be
956+# used. If set to NO the values of all tags below this one will be ignored.
957+
958+SEARCHENGINE = NO
959+
960+# The CGI_NAME tag should be the name of the CGI script that
961+# starts the search engine (doxysearch) with the correct parameters.
962+# A script with this name will be generated by doxygen.
963+
964+CGI_NAME = search.cgi
965+
966+# The CGI_URL tag should be the absolute URL to the directory where the
967+# cgi binaries are located. See the documentation of your http daemon for
968+# details.
969+
970+CGI_URL =
971+
972+# The DOC_URL tag should be the absolute URL to the directory where the
973+# documentation is located. If left blank the absolute path to the
974+# documentation, with file:// prepended to it, will be used.
975+
976+DOC_URL =
977+
978+# The DOC_ABSPATH tag should be the absolute path to the directory where the
979+# documentation is located. If left blank the directory on the local machine
980+# will be used.
981+
982+DOC_ABSPATH =
983+
984+# The BIN_ABSPATH tag must point to the directory where the doxysearch binary
985+# is installed.
986+
987+BIN_ABSPATH = /usr/local/bin/
988+
989+# The EXT_DOC_PATHS tag can be used to specify one or more paths to
990+# documentation generated for other projects. This allows doxysearch to search
991+# the documentation for these projects as well.
992+
993+EXT_DOC_PATHS =
--- /dev/null
+++ b/original/xnee.html
@@ -0,0 +1,5075 @@
1+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
2+<html>
3+<!-- Created on December 24, 2009 by texi2html 1.82
4+texi2html was written by:
5+ Lionel Cons <Lionel.Cons@cern.ch> (original author)
6+ Karl Berry <karl@freefriends.org>
7+ Olaf Bachmann <obachman@mathematik.uni-kl.de>
8+ and many others.
9+Maintained by: Many creative people.
10+Send bugs and suggestions to <texi2html-bug@nongnu.org>
11+-->
12+<head>
13+<title>Xnee Manual</title>
14+
15+<meta name="description" content="Xnee Manual">
16+<meta name="keywords" content="Xnee Manual">
17+<meta name="resource-type" content="document">
18+<meta name="distribution" content="global">
19+<meta name="Generator" content="texi2html 1.82">
20+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
21+<style type="text/css">
22+<!--
23+a.summary-letter {text-decoration: none}
24+blockquote.smallquotation {font-size: smaller}
25+pre.display {font-family: serif}
26+pre.format {font-family: serif}
27+pre.menu-comment {font-family: serif}
28+pre.menu-preformatted {font-family: serif}
29+pre.smalldisplay {font-family: serif; font-size: smaller}
30+pre.smallexample {font-size: smaller}
31+pre.smallformat {font-family: serif; font-size: smaller}
32+pre.smalllisp {font-size: smaller}
33+span.roman {font-family:serif; font-weight:normal;}
34+span.sansserif {font-family:sans-serif; font-weight:normal;}
35+ul.toc {list-style: none}
36+-->
37+</style>
38+
39+
40+</head>
41+
42+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
43+
44+<a name="Top"></a>
45+<table cellpadding="1" cellspacing="1" border="0">
46+<tr><td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
47+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
48+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
49+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
50+</tr></table>
51+<h1 class="settitle">Xnee Manual</h1>
52+
53+
54+<table class="menu" border="0" cellspacing="0">
55+<tr><td align="left" valign="top"><a href="#Summary">1. Summary</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"></td></tr>
56+<tr><td align="left" valign="top"><a href="#Getting-started">2. Getting started</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"></td></tr>
57+<tr><td align="left" valign="top"><a href="#Functional-overview">3. Functional overview</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"></td></tr>
58+<tr><td align="left" valign="top"><a href="#Installation">4. Installation</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"></td></tr>
59+<tr><td align="left" valign="top"><a href="#Examples">5. Examples</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"> examples
60+</td></tr>
61+<tr><td align="left" valign="top"><a href="#File-format">7. File types and format</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"> File format
62+</td></tr>
63+<tr><td align="left" valign="top"><a href="#Programs">6. Xnee Programs</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"> Programs
64+</td></tr>
65+<tr><td align="left" valign="top"><a href="#Internals">8. Xnee Internals</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"> Internals
66+</td></tr>
67+<tr><td align="left" valign="top"><a href="#Requirements">9. Xnee Requirements</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"> Requirements
68+</td></tr>
69+<tr><td align="left" valign="top"><a href="#FAQ">10. FAQ</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"></td></tr>
70+<tr><td align="left" valign="top"><a href="#Copying-This-Manual">A. Copying This Manual</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"></td></tr>
71+<tr><td align="left" valign="top"><a href="#Index">B. Index</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"></td></tr>
72+</table>
73+
74+
75+
76+<hr size="1">
77+<a name="Summary"></a>
78+<table cellpadding="1" cellspacing="1" border="0">
79+<tr><td valign="middle" align="left">[<a href="#Top" title="Previous section in reading order"> &lt; </a>]</td>
80+<td valign="middle" align="left">[<a href="#Summary-1" title="Next section in reading order"> &gt; </a>]</td>
81+<td valign="middle" align="left"> &nbsp; </td>
82+<td valign="middle" align="left">[ &lt;&lt; ]</td>
83+<td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
84+<td valign="middle" align="left">[<a href="#Getting-started" title="Next chapter"> &gt;&gt; </a>]</td>
85+<td valign="middle" align="left"> &nbsp; </td>
86+<td valign="middle" align="left"> &nbsp; </td>
87+<td valign="middle" align="left"> &nbsp; </td>
88+<td valign="middle" align="left"> &nbsp; </td>
89+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
90+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
91+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
92+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
93+</tr></table>
94+<a name="Summary-2"></a>
95+<h1 class="chapter">1. Summary</h1>
96+
97+<hr size="6">
98+<a name="Summary-1"></a>
99+<table cellpadding="1" cellspacing="1" border="0">
100+<tr><td valign="middle" align="left">[<a href="#Summary" title="Previous section in reading order"> &lt; </a>]</td>
101+<td valign="middle" align="left">[<a href="#Xnee-features" title="Next section in reading order"> &gt; </a>]</td>
102+<td valign="middle" align="left"> &nbsp; </td>
103+<td valign="middle" align="left">[<a href="#Summary" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
104+<td valign="middle" align="left">[<a href="#Summary" title="Up section"> Up </a>]</td>
105+<td valign="middle" align="left">[<a href="#Getting-started" title="Next chapter"> &gt;&gt; </a>]</td>
106+<td valign="middle" align="left"> &nbsp; </td>
107+<td valign="middle" align="left"> &nbsp; </td>
108+<td valign="middle" align="left"> &nbsp; </td>
109+<td valign="middle" align="left"> &nbsp; </td>
110+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
111+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
112+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
113+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
114+</tr></table>
115+<h2 class="section">1.1 Summary</h2>
116+<p> Xnee is a suite of programs that can record, replay and
117+ distribute user actions under the X11 environment.
118+ Think of it as a robot that can imitate the job you just
119+ did.
120+</p>
121+<p>Xnee consists of one library and two applications
122+</p>
123+<p> <b>cnee</b> - command line program
124+</p>
125+<p> <b>gnee</b> - graphical user interface program
126+</p>
127+<p> <b>pnee</b> - a Gnome Panel Applet
128+</p>
129+<p> <b>libxnee</b> - library used by xnee and gnee
130+</p>
131+
132+
133+<hr size="6">
134+<a name="Xnee-features"></a>
135+<table cellpadding="1" cellspacing="1" border="0">
136+<tr><td valign="middle" align="left">[<a href="#Summary-1" title="Previous section in reading order"> &lt; </a>]</td>
137+<td valign="middle" align="left">[<a href="#Background" title="Next section in reading order"> &gt; </a>]</td>
138+<td valign="middle" align="left"> &nbsp; </td>
139+<td valign="middle" align="left">[<a href="#Summary" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
140+<td valign="middle" align="left">[<a href="#Summary" title="Up section"> Up </a>]</td>
141+<td valign="middle" align="left">[<a href="#Getting-started" title="Next chapter"> &gt;&gt; </a>]</td>
142+<td valign="middle" align="left"> &nbsp; </td>
143+<td valign="middle" align="left"> &nbsp; </td>
144+<td valign="middle" align="left"> &nbsp; </td>
145+<td valign="middle" align="left"> &nbsp; </td>
146+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
147+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
148+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
149+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
150+</tr></table>
151+<h2 class="section">1.2 Xnee features</h2>
152+<a name="index-features"></a>
153+
154+<p>Xnee can be used for multiple purposes, allthough it was initially designed as a test tool. The most used features are the foloowing:
155+</p>
156+<p><b>Test tool</b> -
157+ Instead of performing test cases for a GUI (or CLI program)
158+ over and over again, the test cases can be automated. Simply record
159+ a user session and replay it later.
160+</p>
161+<p><b>Performance test tool</b> -
162+ If you want to simulate lots of simultaneous users in a network (or
163+ a local machine) you can use Xnee. Simply record a user
164+ session and start multiple instances of Xnee.
165+</p>
166+<p><b>Demonstration tool</b> -
167+ You can use Xnee to demonstrate the features of your program. Simply
168+ record a user session and replay it later.
169+</p>
170+<p><b>Distribution tool</b> -
171+ If you want to send over your mouse/keyboard actions to another display
172+ you can use the built-in distribution mechanism in Xnee.
173+</p>
174+<p><b>Macro recorder/replayer</b> -
175+ By binding a key and modifier combination (e.g using xrebind)
176+ to replay a recorded session you will have a Window Manager and
177+ application independent macro.
178+</p>
179+<p><b>File retyper</b> -
180+ Xnee can retype the contents of a file. This can be useful
181+ during tests or if you want xnee to answer some command
182+ session without having to record the session.
183+</p>
184+<p><b>X11 protocol sniffer</b> -
185+ Xnee can be used a sniffer for the X11 protocol.
186+</p>
187+
188+<hr size="6">
189+<a name="Background"></a>
190+<table cellpadding="1" cellspacing="1" border="0">
191+<tr><td valign="middle" align="left">[<a href="#Xnee-features" title="Previous section in reading order"> &lt; </a>]</td>
192+<td valign="middle" align="left">[<a href="#Getting-started" title="Next section in reading order"> &gt; </a>]</td>
193+<td valign="middle" align="left"> &nbsp; </td>
194+<td valign="middle" align="left">[<a href="#Summary" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
195+<td valign="middle" align="left">[<a href="#Summary" title="Up section"> Up </a>]</td>
196+<td valign="middle" align="left">[<a href="#Getting-started" title="Next chapter"> &gt;&gt; </a>]</td>
197+<td valign="middle" align="left"> &nbsp; </td>
198+<td valign="middle" align="left"> &nbsp; </td>
199+<td valign="middle" align="left"> &nbsp; </td>
200+<td valign="middle" align="left"> &nbsp; </td>
201+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
202+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
203+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
204+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
205+</tr></table>
206+<h2 class="section">1.3 Background</h2>
207+<a name="index-background"></a>
208+<p>In order to verify that a program does the job it&rsquo;s supposed to do,
209+certain tests have to be made.
210+These tests are, IMHO, perhaps the most boring things a programmer
211+can do. Xnee is designed to reduce the programmer from this burden.
212+<br>
213+</p>
214+<p>Xnee started out as a commad line program. During the development
215+phase the main functionality was broken out to a library, called
216+libxnee. The command line program was renamed cnee. The thought behind
217+making the library was to enable the writing of other clients than
218+just the command line. Today there is a GUI program, gnee, and a Gnome
219+panel applet, pnee, that uses the library.
220+<br>
221+</p>
222+<p>By using xnee your testcase(s) can be recorded and later on replayed.
223+Xnee comes with other features For more information about these, read the
224+Introduction.
225+</p>
226+<p>This manual mainly focuses on the command line program, cnee. There
227+are however a seperate chapters for the other programs.
228+</p>
229+
230+
231+
232+
233+<hr size="6">
234+<a name="Getting-started"></a>
235+<table cellpadding="1" cellspacing="1" border="0">
236+<tr><td valign="middle" align="left">[<a href="#Background" title="Previous section in reading order"> &lt; </a>]</td>
237+<td valign="middle" align="left">[<a href="#Getting-started-1" title="Next section in reading order"> &gt; </a>]</td>
238+<td valign="middle" align="left"> &nbsp; </td>
239+<td valign="middle" align="left">[<a href="#Summary" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
240+<td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
241+<td valign="middle" align="left">[<a href="#Functional-overview" title="Next chapter"> &gt;&gt; </a>]</td>
242+<td valign="middle" align="left"> &nbsp; </td>
243+<td valign="middle" align="left"> &nbsp; </td>
244+<td valign="middle" align="left"> &nbsp; </td>
245+<td valign="middle" align="left"> &nbsp; </td>
246+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
247+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
248+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
249+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
250+</tr></table>
251+<a name="Getting-started-2"></a>
252+<h1 class="chapter">2. Getting started</h1>
253+
254+<hr size="6">
255+<a name="Getting-started-1"></a>
256+<table cellpadding="1" cellspacing="1" border="0">
257+<tr><td valign="middle" align="left">[<a href="#Getting-started" title="Previous section in reading order"> &lt; </a>]</td>
258+<td valign="middle" align="left">[<a href="#Simple-replay" title="Next section in reading order"> &gt; </a>]</td>
259+<td valign="middle" align="left"> &nbsp; </td>
260+<td valign="middle" align="left">[<a href="#Getting-started" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
261+<td valign="middle" align="left">[<a href="#Getting-started" title="Up section"> Up </a>]</td>
262+<td valign="middle" align="left">[<a href="#Functional-overview" title="Next chapter"> &gt;&gt; </a>]</td>
263+<td valign="middle" align="left"> &nbsp; </td>
264+<td valign="middle" align="left"> &nbsp; </td>
265+<td valign="middle" align="left"> &nbsp; </td>
266+<td valign="middle" align="left"> &nbsp; </td>
267+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
268+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
269+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
270+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
271+</tr></table>
272+<h2 class="section">2.1 Getting started</h2>
273+<a name="index-Getting-started"></a>
274+<p>To get the first feel of Xnee some simple examples are presented.
275+</p>
276+<hr size="6">
277+<a name="Simple-replay"></a>
278+<table cellpadding="1" cellspacing="1" border="0">
279+<tr><td valign="middle" align="left">[<a href="#Getting-started-1" title="Previous section in reading order"> &lt; </a>]</td>
280+<td valign="middle" align="left">[<a href="#Simple-recording-of-Key-presses" title="Next section in reading order"> &gt; </a>]</td>
281+<td valign="middle" align="left"> &nbsp; </td>
282+<td valign="middle" align="left">[<a href="#Getting-started" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
283+<td valign="middle" align="left">[<a href="#Getting-started-1" title="Up section"> Up </a>]</td>
284+<td valign="middle" align="left">[<a href="#Functional-overview" title="Next chapter"> &gt;&gt; </a>]</td>
285+<td valign="middle" align="left"> &nbsp; </td>
286+<td valign="middle" align="left"> &nbsp; </td>
287+<td valign="middle" align="left"> &nbsp; </td>
288+<td valign="middle" align="left"> &nbsp; </td>
289+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
290+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
291+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
292+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
293+</tr></table>
294+<h3 class="subsection">2.1.1 Simple replay</h3>
295+<p>Start a terminal emulator (e.g xterm) and then start Xnee,
296+</p><table><tr><td>&nbsp;</td><td><pre class="example"> <code>cnee --replay --file example1.xnr &amp;</code>
297+</pre></td></tr></table>
298+<p>....dont forget &rsquo;&amp;&rsquo;.
299+The file example1.xnr contains keyboard events recorded during
300+development of this manual. When replayed you&rsquo;ll see what was typed and of
301+course more important you&rsquo;ll get i first glimpse of Xnee and its capabilities.
302+For information on where to find the example files, see below.
303+</p>
304+<hr size="6">
305+<a name="Simple-recording-of-Key-presses"></a>
306+<table cellpadding="1" cellspacing="1" border="0">
307+<tr><td valign="middle" align="left">[<a href="#Simple-replay" title="Previous section in reading order"> &lt; </a>]</td>
308+<td valign="middle" align="left">[<a href="#Simple-replaying-of-your-recorded-file-1" title="Next section in reading order"> &gt; </a>]</td>
309+<td valign="middle" align="left"> &nbsp; </td>
310+<td valign="middle" align="left">[<a href="#Getting-started" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
311+<td valign="middle" align="left">[<a href="#Getting-started-1" title="Up section"> Up </a>]</td>
312+<td valign="middle" align="left">[<a href="#Functional-overview" title="Next chapter"> &gt;&gt; </a>]</td>
313+<td valign="middle" align="left"> &nbsp; </td>
314+<td valign="middle" align="left"> &nbsp; </td>
315+<td valign="middle" align="left"> &nbsp; </td>
316+<td valign="middle" align="left"> &nbsp; </td>
317+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
318+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
319+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
320+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
321+</tr></table>
322+<h3 class="subsection">2.1.2 Simple recording of Key presses</h3>
323+<p>We move on to a (very) simple recording session.
324+Start a terminal emulator (e.g xterm) and your favorite editor.
325+Move the pointer to one of the terminal windows and start Xnee.
326+</p><table><tr><td>&nbsp;</td><td><pre class="example"> <code>cnee --record -o example2.xnr --device-event-range 2-3 \</code>
327+ <code>--time 5 --events-to-record 20</code>
328+</pre></td></tr></table>
329+<p>Move the pointer to the editor and get focus (e.g click the
330+window frame). After 5 seconds you can type whatever you want to record
331+(20 press- and relase events of the keyboard are recorded). We are done
332+and you have recorded your first session! Leave the desktop as it
333+is and go forward to the next example.
334+</p>
335+
336+
337+<hr size="6">
338+<a name="Simple-replaying-of-your-recorded-file-1"></a>
339+<table cellpadding="1" cellspacing="1" border="0">
340+<tr><td valign="middle" align="left">[<a href="#Simple-recording-of-Key-presses" title="Previous section in reading order"> &lt; </a>]</td>
341+<td valign="middle" align="left">[<a href="#Simple-recording-of-mouse-motions" title="Next section in reading order"> &gt; </a>]</td>
342+<td valign="middle" align="left"> &nbsp; </td>
343+<td valign="middle" align="left">[<a href="#Getting-started" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
344+<td valign="middle" align="left">[<a href="#Getting-started-1" title="Up section"> Up </a>]</td>
345+<td valign="middle" align="left">[<a href="#Functional-overview" title="Next chapter"> &gt;&gt; </a>]</td>
346+<td valign="middle" align="left"> &nbsp; </td>
347+<td valign="middle" align="left"> &nbsp; </td>
348+<td valign="middle" align="left"> &nbsp; </td>
349+<td valign="middle" align="left"> &nbsp; </td>
350+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
351+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
352+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
353+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
354+</tr></table>
355+<h3 class="subsection">2.1.3 Simple replaying of your recorded file</h3>
356+<p>Start one terminal emulator (e.g xterm).
357+Let Xnee repeat the stuff you did in the example above.
358+Undo all changes in the editor that was made in the previous example.
359+Move the pointer to one of the terminal windows and start Xnee.
360+</p><table><tr><td>&nbsp;</td><td><pre class="example"> <code>cnee --replay -f example2.xnr --time 5</code>
361+</pre></td></tr></table>
362+<p>Move the pointer to the editor and get focus (e.g click the
363+window frame). After 5 seconds you will see your typings in the example
364+above being repeated.
365+</p>
366+<hr size="6">
367+<a name="Simple-recording-of-mouse-motions"></a>
368+<table cellpadding="1" cellspacing="1" border="0">
369+<tr><td valign="middle" align="left">[<a href="#Simple-replaying-of-your-recorded-file-1" title="Previous section in reading order"> &lt; </a>]</td>
370+<td valign="middle" align="left">[<a href="#Simple-replaying-of-your-recorded-file" title="Next section in reading order"> &gt; </a>]</td>
371+<td valign="middle" align="left"> &nbsp; </td>
372+<td valign="middle" align="left">[<a href="#Getting-started" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
373+<td valign="middle" align="left">[<a href="#Getting-started-1" title="Up section"> Up </a>]</td>
374+<td valign="middle" align="left">[<a href="#Functional-overview" title="Next chapter"> &gt;&gt; </a>]</td>
375+<td valign="middle" align="left"> &nbsp; </td>
376+<td valign="middle" align="left"> &nbsp; </td>
377+<td valign="middle" align="left"> &nbsp; </td>
378+<td valign="middle" align="left"> &nbsp; </td>
379+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
380+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
381+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
382+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
383+</tr></table>
384+<h3 class="subsection">2.1.4 Simple recording of mouse motions</h3>
385+<p>We move on to another simple recording session.
386+Start a terminal emulator (e.g xterm).
387+Move the pointer to the terminal window and start Xnee.
388+</p><table><tr><td>&nbsp;</td><td><pre class="example"> <code>cnee --record -o example3.xnr --device-event-range 5-6 \</code>
389+ <code>--time 5 --events-to-record 20</code>
390+</pre></td></tr></table>
391+<p>After 5 seconds you can move the pointer around (20 motion events are recorded).
392+</p>
393+<hr size="6">
394+<a name="Simple-replaying-of-your-recorded-file"></a>
395+<table cellpadding="1" cellspacing="1" border="0">
396+<tr><td valign="middle" align="left">[<a href="#Simple-recording-of-mouse-motions" title="Previous section in reading order"> &lt; </a>]</td>
397+<td valign="middle" align="left">[<a href="#Simple-retyping-of-a-text-file" title="Next section in reading order"> &gt; </a>]</td>
398+<td valign="middle" align="left"> &nbsp; </td>
399+<td valign="middle" align="left">[<a href="#Getting-started" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
400+<td valign="middle" align="left">[<a href="#Getting-started-1" title="Up section"> Up </a>]</td>
401+<td valign="middle" align="left">[<a href="#Functional-overview" title="Next chapter"> &gt;&gt; </a>]</td>
402+<td valign="middle" align="left"> &nbsp; </td>
403+<td valign="middle" align="left"> &nbsp; </td>
404+<td valign="middle" align="left"> &nbsp; </td>
405+<td valign="middle" align="left"> &nbsp; </td>
406+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
407+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
408+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
409+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
410+</tr></table>
411+<h3 class="subsection">2.1.5 Simple replaying of your recorded file</h3>
412+<p>Let Xnee repeat the stuff you did in the example above..
413+Move the pointer to the terminal window and start Xnee.
414+</p><table><tr><td>&nbsp;</td><td><pre class="example"> <code>cnee --replay -f example3.xnr --time 5</code>
415+</pre></td></tr></table>
416+<p>After 5 seconds you will see your mouse motions in the example above being
417+repplayed.
418+</p>
419+<hr size="6">
420+<a name="Simple-retyping-of-a-text-file"></a>
421+<table cellpadding="1" cellspacing="1" border="0">
422+<tr><td valign="middle" align="left">[<a href="#Simple-replaying-of-your-recorded-file" title="Previous section in reading order"> &lt; </a>]</td>
423+<td valign="middle" align="left">[<a href="#Example-Xnee-Session-files" title="Next section in reading order"> &gt; </a>]</td>
424+<td valign="middle" align="left"> &nbsp; </td>
425+<td valign="middle" align="left">[<a href="#Getting-started" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
426+<td valign="middle" align="left">[<a href="#Getting-started-1" title="Up section"> Up </a>]</td>
427+<td valign="middle" align="left">[<a href="#Functional-overview" title="Next chapter"> &gt;&gt; </a>]</td>
428+<td valign="middle" align="left"> &nbsp; </td>
429+<td valign="middle" align="left"> &nbsp; </td>
430+<td valign="middle" align="left"> &nbsp; </td>
431+<td valign="middle" align="left"> &nbsp; </td>
432+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
433+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
434+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
435+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
436+</tr></table>
437+<h3 class="subsection">2.1.6 Simple retyping of a text file</h3>
438+<p>Let Xnee retype (type again) the text in a text file.
439+Move the pointer to the terminal window and create a text file containing
440+the command <code>ls -l</code>.
441+</p><table><tr><td>&nbsp;</td><td><pre class="example"> <code>echo &quot;ls -l&quot; &gt; ./mytext.txt</code>
442+</pre></td></tr></table>
443+<p>And after that you start Xnee.
444+</p><table><tr><td>&nbsp;</td><td><pre class="example"> <code>cnee --retype-file ./mytext.txt --time 5</code>
445+</pre></td></tr></table>
446+<p>After 5 seconds you will see Xnee type <code>ls -l</code>, which probably will
447+list the files in the current directory.
448+</p>
449+<hr size="6">
450+<a name="Example-Xnee-Session-files"></a>
451+<table cellpadding="1" cellspacing="1" border="0">
452+<tr><td valign="middle" align="left">[<a href="#Simple-retyping-of-a-text-file" title="Previous section in reading order"> &lt; </a>]</td>
453+<td valign="middle" align="left">[<a href="#Functional-overview" title="Next section in reading order"> &gt; </a>]</td>
454+<td valign="middle" align="left"> &nbsp; </td>
455+<td valign="middle" align="left">[<a href="#Getting-started" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
456+<td valign="middle" align="left">[<a href="#Getting-started-1" title="Up section"> Up </a>]</td>
457+<td valign="middle" align="left">[<a href="#Functional-overview" title="Next chapter"> &gt;&gt; </a>]</td>
458+<td valign="middle" align="left"> &nbsp; </td>
459+<td valign="middle" align="left"> &nbsp; </td>
460+<td valign="middle" align="left"> &nbsp; </td>
461+<td valign="middle" align="left"> &nbsp; </td>
462+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
463+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
464+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
465+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
466+</tr></table>
467+<h3 class="subsection">2.1.7 Example Xnee Session files</h3>
468+<a name="index-Example-Xnee-Session-files"></a>
469+<p>The example file above (example1.xnr) is a session file that has been
470+delivered with the sources (allthough not installed), rpm and with the
471+Xnee Documentation Package. The file(s) can be found:
472+</p><table>
473+<tr><td width="30%"></td><td width="30%"><b>Distribution</b></td><td width="30%"><b>Location</b></td></tr>
474+<tr><td width="30%"></td><td width="30%">RPM</td><td width="30%">/usr/lib/xnee/session</td></tr>
475+<tr><td width="30%"></td><td width="30%">Source</td><td width="30%">./sessions/</td></tr>
476+<tr><td width="30%"></td><td width="30%">Document Package</td><td width="30%">./sessions/</td></tr>
477+</table>
478+
479+
480+
481+
482+
483+
484+
485+
486+
487+
488+
489+
490+
491+
492+
493+
494+
495+
496+
497+
498+
499+
500+
501+<hr size="6">
502+<a name="Functional-overview"></a>
503+<table cellpadding="1" cellspacing="1" border="0">
504+<tr><td valign="middle" align="left">[<a href="#Example-Xnee-Session-files" title="Previous section in reading order"> &lt; </a>]</td>
505+<td valign="middle" align="left">[<a href="#Functional-overview-1" title="Next section in reading order"> &gt; </a>]</td>
506+<td valign="middle" align="left"> &nbsp; </td>
507+<td valign="middle" align="left">[<a href="#Getting-started" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
508+<td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
509+<td valign="middle" align="left">[<a href="#Installation" title="Next chapter"> &gt;&gt; </a>]</td>
510+<td valign="middle" align="left"> &nbsp; </td>
511+<td valign="middle" align="left"> &nbsp; </td>
512+<td valign="middle" align="left"> &nbsp; </td>
513+<td valign="middle" align="left"> &nbsp; </td>
514+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
515+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
516+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
517+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
518+</tr></table>
519+<a name="Functional-overview-2"></a>
520+<h1 class="chapter">3. Functional overview</h1>
521+
522+<hr size="6">
523+<a name="Functional-overview-1"></a>
524+<table cellpadding="1" cellspacing="1" border="0">
525+<tr><td valign="middle" align="left">[<a href="#Functional-overview" title="Previous section in reading order"> &lt; </a>]</td>
526+<td valign="middle" align="left">[<a href="#Modes" title="Next section in reading order"> &gt; </a>]</td>
527+<td valign="middle" align="left"> &nbsp; </td>
528+<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
529+<td valign="middle" align="left">[<a href="#Functional-overview" title="Up section"> Up </a>]</td>
530+<td valign="middle" align="left">[<a href="#Installation" title="Next chapter"> &gt;&gt; </a>]</td>
531+<td valign="middle" align="left"> &nbsp; </td>
532+<td valign="middle" align="left"> &nbsp; </td>
533+<td valign="middle" align="left"> &nbsp; </td>
534+<td valign="middle" align="left"> &nbsp; </td>
535+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
536+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
537+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
538+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
539+</tr></table>
540+<h2 class="section">3.1 Functional overview</h2>
541+<a name="index-Functional-overview"></a>
542+<p>The Xnee applications (gnee and xnee) receives X11 protocol data (e.g. events)
543+from an X server (using libxnee) and print them to a file, called Xnee
544+Session File. Theses events are later read from the session file and replayed.
545+Gnee and xnee can read its settings from a file, called Xnee Project File,
546+or from command line (cnee) or via the GUI (gnee).
547+</p>
548+
549+<br>
550+<p>Events directly generated by the user (e.g KeyPress) can be replayed
551+or faked. Requests, replies, errors and events not directly generated by the
552+user (e.g MapNotify) can be recorded as well. By using these data
553+Xnee can replay with synchronisation.
554+</p>
555+<p>This picture gives an overview of Xnee and the files used.
556+<br>
557+<img src="xngener.png" alt="xngener">
558+In this section you will be given information about key concepts in X11 and Xnee. It is
559+vital that you read through this chapter.
560+</p>
561+<hr size="6">
562+<a name="Modes"></a>
563+<table cellpadding="1" cellspacing="1" border="0">
564+<tr><td valign="middle" align="left">[<a href="#Functional-overview-1" title="Previous section in reading order"> &lt; </a>]</td>
565+<td valign="middle" align="left">[<a href="#Record" title="Next section in reading order"> &gt; </a>]</td>
566+<td valign="middle" align="left"> &nbsp; </td>
567+<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
568+<td valign="middle" align="left">[<a href="#Functional-overview" title="Up section"> Up </a>]</td>
569+<td valign="middle" align="left">[<a href="#Installation" title="Next chapter"> &gt;&gt; </a>]</td>
570+<td valign="middle" align="left"> &nbsp; </td>
571+<td valign="middle" align="left"> &nbsp; </td>
572+<td valign="middle" align="left"> &nbsp; </td>
573+<td valign="middle" align="left"> &nbsp; </td>
574+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
575+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
576+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
577+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
578+</tr></table>
579+<h2 class="section">3.2 Modes</h2>
580+<a name="index-modes"></a>
581+<p>Xnee has four modes:
582+</p><ul>
583+<li> record
584+</li><li> replay
585+</li><li> retype
586+</li><li> distribute
587+</li></ul>
588+
589+<p>The distribution mechanism can be used together with the other three.
590+</p>
591+<hr size="6">
592+<a name="Record"></a>
593+<table cellpadding="1" cellspacing="1" border="0">
594+<tr><td valign="middle" align="left">[<a href="#Modes" title="Previous section in reading order"> &lt; </a>]</td>
595+<td valign="middle" align="left">[<a href="#Replay" title="Next section in reading order"> &gt; </a>]</td>
596+<td valign="middle" align="left"> &nbsp; </td>
597+<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
598+<td valign="middle" align="left">[<a href="#Modes" title="Up section"> Up </a>]</td>
599+<td valign="middle" align="left">[<a href="#Installation" title="Next chapter"> &gt;&gt; </a>]</td>
600+<td valign="middle" align="left"> &nbsp; </td>
601+<td valign="middle" align="left"> &nbsp; </td>
602+<td valign="middle" align="left"> &nbsp; </td>
603+<td valign="middle" align="left"> &nbsp; </td>
604+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
605+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
606+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
607+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
608+</tr></table>
609+<h3 class="subsection">3.2.1 Record</h3>
610+<a name="index-recording"></a>
611+<p>When record mode is used Xnee receives a copy of the data sent to and from the
612+X server. The copy is printed to a file. Xnee can record the whole X11
613+protocol, not just mouse and keyboard events.
614+</p>
615+<p>This picture gives an overview of Xnee and the files used when recording.
616+<br>
617+<img src="xnrec.png" alt="xnrec">
618+</p>
619+
620+<hr size="6">
621+<a name="Replay"></a>
622+<table cellpadding="1" cellspacing="1" border="0">
623+<tr><td valign="middle" align="left">[<a href="#Record" title="Previous section in reading order"> &lt; </a>]</td>
624+<td valign="middle" align="left">[<a href="#Retype" title="Next section in reading order"> &gt; </a>]</td>
625+<td valign="middle" align="left"> &nbsp; </td>
626+<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
627+<td valign="middle" align="left">[<a href="#Modes" title="Up section"> Up </a>]</td>
628+<td valign="middle" align="left">[<a href="#Installation" title="Next chapter"> &gt;&gt; </a>]</td>
629+<td valign="middle" align="left"> &nbsp; </td>
630+<td valign="middle" align="left"> &nbsp; </td>
631+<td valign="middle" align="left"> &nbsp; </td>
632+<td valign="middle" align="left"> &nbsp; </td>
633+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
634+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
635+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
636+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
637+</tr></table>
638+<h3 class="subsection">3.2.2 Replay</h3>
639+<a name="index-replaying"></a>
640+<p>When replay mode is used Xnee reads data from a file or stdin. These data is
641+either sent to the server (if it is a keyboard or a mouse event) or used to
642+synchronise with (if any of the other data).
643+</p>
644+<p>This picture gives an overview of Xnee and the files used when replaying.
645+<br>
646+<img src="xnrep.png" alt="xnrep">
647+</p>
648+
649+<hr size="6">
650+<a name="Retype"></a>
651+<table cellpadding="1" cellspacing="1" border="0">
652+<tr><td valign="middle" align="left">[<a href="#Replay" title="Previous section in reading order"> &lt; </a>]</td>
653+<td valign="middle" align="left">[<a href="#Distribution" title="Next section in reading order"> &gt; </a>]</td>
654+<td valign="middle" align="left"> &nbsp; </td>
655+<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
656+<td valign="middle" align="left">[<a href="#Modes" title="Up section"> Up </a>]</td>
657+<td valign="middle" align="left">[<a href="#Installation" title="Next chapter"> &gt;&gt; </a>]</td>
658+<td valign="middle" align="left"> &nbsp; </td>
659+<td valign="middle" align="left"> &nbsp; </td>
660+<td valign="middle" align="left"> &nbsp; </td>
661+<td valign="middle" align="left"> &nbsp; </td>
662+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
663+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
664+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
665+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
666+</tr></table>
667+<h3 class="subsection">3.2.3 Retype</h3>
668+<a name="index-retype"></a>
669+<p>Xnee can retype the contents of a text file. This is useful when combining
670+replaying of different recorded session. You can change the text written in
671+for example an editor (e.g emacs) without having to re-record the complete
672+sessions.
673+</p>
674+<hr size="6">
675+<a name="Distribution"></a>
676+<table cellpadding="1" cellspacing="1" border="0">
677+<tr><td valign="middle" align="left">[<a href="#Retype" title="Previous section in reading order"> &lt; </a>]</td>
678+<td valign="middle" align="left">[<a href="#Ranges" title="Next section in reading order"> &gt; </a>]</td>
679+<td valign="middle" align="left"> &nbsp; </td>
680+<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
681+<td valign="middle" align="left">[<a href="#Modes" title="Up section"> Up </a>]</td>
682+<td valign="middle" align="left">[<a href="#Installation" title="Next chapter"> &gt;&gt; </a>]</td>
683+<td valign="middle" align="left"> &nbsp; </td>
684+<td valign="middle" align="left"> &nbsp; </td>
685+<td valign="middle" align="left"> &nbsp; </td>
686+<td valign="middle" align="left"> &nbsp; </td>
687+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
688+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
689+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
690+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
691+</tr></table>
692+<h3 class="subsection">3.2.4 Distribution</h3>
693+<a name="index-distributing"></a>
694+<p>Xnee can fake mouse and keyboard events on multiple displays. This
695+distribution mechanism can be used when recording, replaying or retyping.
696+</p>
697+
698+<hr size="6">
699+<a name="Ranges"></a>
700+<table cellpadding="1" cellspacing="1" border="0">
701+<tr><td valign="middle" align="left">[<a href="#Distribution" title="Previous section in reading order"> &lt; </a>]</td>
702+<td valign="middle" align="left">[<a href="#First-and-last-motion-event" title="Next section in reading order"> &gt; </a>]</td>
703+<td valign="middle" align="left"> &nbsp; </td>
704+<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
705+<td valign="middle" align="left">[<a href="#Functional-overview" title="Up section"> Up </a>]</td>
706+<td valign="middle" align="left">[<a href="#Installation" title="Next chapter"> &gt;&gt; </a>]</td>
707+<td valign="middle" align="left"> &nbsp; </td>
708+<td valign="middle" align="left"> &nbsp; </td>
709+<td valign="middle" align="left"> &nbsp; </td>
710+<td valign="middle" align="left"> &nbsp; </td>
711+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
712+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
713+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
714+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
715+</tr></table>
716+<h2 class="section">3.3 Ranges</h2>
717+<a name="index-ranges"></a>
718+<p>What data to record is specified using ranges. Ranges has a start value and
719+a stop value. The following data can be recorded:
720+</p>
721+<table>
722+<tr><td width="10%"></td><td width="45%"><b>Xnee name</b></td><td width="45%"><b>X Protocol Name</b></td></tr>
723+<tr><td width="10%"></td><td width="45%">core-requests</td><td width="45%">Request</td></tr>
724+<tr><td width="10%"></td><td width="45%">device-event</td><td width="45%">Event</td></tr>
725+<tr><td width="10%"></td><td width="45%">delivered-event</td><td width="45%">Event</td></tr>
726+<tr><td width="10%"></td><td width="45%">error</td><td width="45%">Error</td></tr>
727+<tr><td width="10%"></td><td width="45%">reply</td><td width="45%">Reply</td></tr>
728+<tr><td width="10%"></td><td width="45%">ext-requests.ext-major</td><td width="45%">Extension Request</td></tr>
729+<tr><td width="10%"></td><td width="45%">ext-requests.ext-minor</td><td width="45%">Extension Request</td></tr>
730+<tr><td width="10%"></td><td width="45%">ext-replies.ext-major</td><td width="45%">Extension Reply</td></tr>
731+<tr><td width="10%"></td><td width="45%">ext-replies.ext-minor</td><td width="45%">Extension Reply</td></tr>
732+</table>
733+
734+<p>When specifying the ranges when using xnee you can either type the integer value
735+of the data or the name of the data. To find out what number belongs to what
736+data name, you can use the <code>--print-data-name</code> option. For an explanation
737+of the X protocol data, please read the &quot;X Record Extension Library&quot; or the
738+&quot;Record Extension Protocol Specification&quot;.
739+</p>
740+
741+<hr size="6">
742+<a name="First-and-last-motion-event"></a>
743+<table cellpadding="1" cellspacing="1" border="0">
744+<tr><td valign="middle" align="left">[<a href="#Ranges" title="Previous section in reading order"> &lt; </a>]</td>
745+<td valign="middle" align="left">[<a href="#Delay" title="Next section in reading order"> &gt; </a>]</td>
746+<td valign="middle" align="left"> &nbsp; </td>
747+<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
748+<td valign="middle" align="left">[<a href="#Functional-overview" title="Up section"> Up </a>]</td>
749+<td valign="middle" align="left">[<a href="#Installation" title="Next chapter"> &gt;&gt; </a>]</td>
750+<td valign="middle" align="left"> &nbsp; </td>
751+<td valign="middle" align="left"> &nbsp; </td>
752+<td valign="middle" align="left"> &nbsp; </td>
753+<td valign="middle" align="left"> &nbsp; </td>
754+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
755+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
756+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
757+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
758+</tr></table>
759+<h2 class="section">3.4 First and last motion event</h2>
760+<p>Xnee has the ability to skip recording of succesive motion events with no
761+other data in between. This option is intended to reduce the number of data
762+recorded by leaving out unnecessary data. This feature can be invoked with
763+the <code>--first-last</code> flag.
764+</p>
765+<hr size="6">
766+<a name="Delay"></a>
767+<table cellpadding="1" cellspacing="1" border="0">
768+<tr><td valign="middle" align="left">[<a href="#First-and-last-motion-event" title="Previous section in reading order"> &lt; </a>]</td>
769+<td valign="middle" align="left">[<a href="#Verbose" title="Next section in reading order"> &gt; </a>]</td>
770+<td valign="middle" align="left"> &nbsp; </td>
771+<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
772+<td valign="middle" align="left">[<a href="#Functional-overview" title="Up section"> Up </a>]</td>
773+<td valign="middle" align="left">[<a href="#Installation" title="Next chapter"> &gt;&gt; </a>]</td>
774+<td valign="middle" align="left"> &nbsp; </td>
775+<td valign="middle" align="left"> &nbsp; </td>
776+<td valign="middle" align="left"> &nbsp; </td>
777+<td valign="middle" align="left"> &nbsp; </td>
778+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
779+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
780+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
781+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
782+</tr></table>
783+<h2 class="section">3.5 Delay</h2>
784+<p>Sometimes when Xnee starts recording data, the keyrelease (caused by pressing and
785+releasing RETURN to execute the Xnee command line) is recorded. This single
786+keyrelease (with no corresponding keypress) might confuse the X server.
787+With the <code>--time &lt;secs&gt;</code> option Xnee can be paused for a number of seconds
788+before recording/replaying/retyping starts.
789+</p>
790+
791+<hr size="6">
792+<a name="Verbose"></a>
793+<table cellpadding="1" cellspacing="1" border="0">
794+<tr><td valign="middle" align="left">[<a href="#Delay" title="Previous section in reading order"> &lt; </a>]</td>
795+<td valign="middle" align="left">[<a href="#Human-printouts" title="Next section in reading order"> &gt; </a>]</td>
796+<td valign="middle" align="left"> &nbsp; </td>
797+<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
798+<td valign="middle" align="left">[<a href="#Functional-overview" title="Up section"> Up </a>]</td>
799+<td valign="middle" align="left">[<a href="#Installation" title="Next chapter"> &gt;&gt; </a>]</td>
800+<td valign="middle" align="left"> &nbsp; </td>
801+<td valign="middle" align="left"> &nbsp; </td>
802+<td valign="middle" align="left"> &nbsp; </td>
803+<td valign="middle" align="left"> &nbsp; </td>
804+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
805+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
806+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
807+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
808+</tr></table>
809+<h2 class="section">3.6 Verbose</h2>
810+<p>When enabling verbose mode (<code>--verbose</code>) Xnee prints a lot of information
811+about it&rsquo;s state. This option is only intended for runtime debugging.
812+</p>
813+<hr size="6">
814+<a name="Human-printouts"></a>
815+<table cellpadding="1" cellspacing="1" border="0">
816+<tr><td valign="middle" align="left">[<a href="#Verbose" title="Previous section in reading order"> &lt; </a>]</td>
817+<td valign="middle" align="left">[<a href="#Invoking-Xnee" title="Next section in reading order"> &gt; </a>]</td>
818+<td valign="middle" align="left"> &nbsp; </td>
819+<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
820+<td valign="middle" align="left">[<a href="#Functional-overview" title="Up section"> Up </a>]</td>
821+<td valign="middle" align="left">[<a href="#Installation" title="Next chapter"> &gt;&gt; </a>]</td>
822+<td valign="middle" align="left"> &nbsp; </td>
823+<td valign="middle" align="left"> &nbsp; </td>
824+<td valign="middle" align="left"> &nbsp; </td>
825+<td valign="middle" align="left"> &nbsp; </td>
826+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
827+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
828+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
829+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
830+</tr></table>
831+<h2 class="section">3.7 Human printouts</h2>
832+<p>Sometimes it&rsquo;s hard to decide what data to use when synchronising. To do this
833+you have to analyse what data is sent from the server when recording. Instead of
834+reading the data number, s tring representation of the data is printed out.
835+To enable this option, use the <code>--human-printouts</code>.
836+</p>
837+
838+
839+<hr size="6">
840+<a name="Invoking-Xnee"></a>
841+<table cellpadding="1" cellspacing="1" border="0">
842+<tr><td valign="middle" align="left">[<a href="#Human-printouts" title="Previous section in reading order"> &lt; </a>]</td>
843+<td valign="middle" align="left">[<a href="#Command-line-syntax" title="Next section in reading order"> &gt; </a>]</td>
844+<td valign="middle" align="left"> &nbsp; </td>
845+<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
846+<td valign="middle" align="left">[<a href="#Functional-overview" title="Up section"> Up </a>]</td>
847+<td valign="middle" align="left">[<a href="#Installation" title="Next chapter"> &gt;&gt; </a>]</td>
848+<td valign="middle" align="left"> &nbsp; </td>
849+<td valign="middle" align="left"> &nbsp; </td>
850+<td valign="middle" align="left"> &nbsp; </td>
851+<td valign="middle" align="left"> &nbsp; </td>
852+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
853+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
854+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
855+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
856+</tr></table>
857+<h2 class="section">3.8 Invoking Xnee</h2>
858+
859+<hr size="6">
860+<a name="Command-line-syntax"></a>
861+<table cellpadding="1" cellspacing="1" border="0">
862+<tr><td valign="middle" align="left">[<a href="#Invoking-Xnee" title="Previous section in reading order"> &lt; </a>]</td>
863+<td valign="middle" align="left">[<a href="#Project-file-1" title="Next section in reading order"> &gt; </a>]</td>
864+<td valign="middle" align="left"> &nbsp; </td>
865+<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
866+<td valign="middle" align="left">[<a href="#Invoking-Xnee" title="Up section"> Up </a>]</td>
867+<td valign="middle" align="left">[<a href="#Installation" title="Next chapter"> &gt;&gt; </a>]</td>
868+<td valign="middle" align="left"> &nbsp; </td>
869+<td valign="middle" align="left"> &nbsp; </td>
870+<td valign="middle" align="left"> &nbsp; </td>
871+<td valign="middle" align="left"> &nbsp; </td>
872+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
873+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
874+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
875+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
876+</tr></table>
877+<h3 class="subsection">3.8.1 Command line syntax</h3>
878+<a name="index-command-line-syntax"></a>
879+<p>To get information about how to use Xnee&rsquo;s command line options please use the man page(s).
880+</p>
881+<hr size="6">
882+<a name="Project-file-1"></a>
883+<table cellpadding="1" cellspacing="1" border="0">
884+<tr><td valign="middle" align="left">[<a href="#Command-line-syntax" title="Previous section in reading order"> &lt; </a>]</td>
885+<td valign="middle" align="left">[<a href="#Session-file" title="Next section in reading order"> &gt; </a>]</td>
886+<td valign="middle" align="left"> &nbsp; </td>
887+<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
888+<td valign="middle" align="left">[<a href="#Invoking-Xnee" title="Up section"> Up </a>]</td>
889+<td valign="middle" align="left">[<a href="#Installation" title="Next chapter"> &gt;&gt; </a>]</td>
890+<td valign="middle" align="left"> &nbsp; </td>
891+<td valign="middle" align="left"> &nbsp; </td>
892+<td valign="middle" align="left"> &nbsp; </td>
893+<td valign="middle" align="left"> &nbsp; </td>
894+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
895+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
896+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
897+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
898+</tr></table>
899+<h3 class="subsection">3.8.2 Project file</h3>
900+<p>To use a Project file use the <code>--project</code> option, e.g <code>cnee --project xnee/projects/netscape.xns</code>
901+</p>
902+<hr size="6">
903+<a name="Session-file"></a>
904+<table cellpadding="1" cellspacing="1" border="0">
905+<tr><td valign="middle" align="left">[<a href="#Project-file-1" title="Previous section in reading order"> &lt; </a>]</td>
906+<td valign="middle" align="left">[<a href="#Interupting-Xnee" title="Next section in reading order"> &gt; </a>]</td>
907+<td valign="middle" align="left"> &nbsp; </td>
908+<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
909+<td valign="middle" align="left">[<a href="#Invoking-Xnee" title="Up section"> Up </a>]</td>
910+<td valign="middle" align="left">[<a href="#Installation" title="Next chapter"> &gt;&gt; </a>]</td>
911+<td valign="middle" align="left"> &nbsp; </td>
912+<td valign="middle" align="left"> &nbsp; </td>
913+<td valign="middle" align="left"> &nbsp; </td>
914+<td valign="middle" align="left"> &nbsp; </td>
915+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
916+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
917+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
918+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
919+</tr></table>
920+<h3 class="subsection">3.8.3 Session file</h3>
921+<p>To use a session file use the <code>--file</code> option, e.g
922+<code>cnee --file user1_session.xns</code>
923+</p>
924+
925+<hr size="6">
926+<a name="Interupting-Xnee"></a>
927+<table cellpadding="1" cellspacing="1" border="0">
928+<tr><td valign="middle" align="left">[<a href="#Session-file" title="Previous section in reading order"> &lt; </a>]</td>
929+<td valign="middle" align="left">[<a href="#modifier-and-key" title="Next section in reading order"> &gt; </a>]</td>
930+<td valign="middle" align="left"> &nbsp; </td>
931+<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
932+<td valign="middle" align="left">[<a href="#Functional-overview" title="Up section"> Up </a>]</td>
933+<td valign="middle" align="left">[<a href="#Installation" title="Next chapter"> &gt;&gt; </a>]</td>
934+<td valign="middle" align="left"> &nbsp; </td>
935+<td valign="middle" align="left"> &nbsp; </td>
936+<td valign="middle" align="left"> &nbsp; </td>
937+<td valign="middle" align="left"> &nbsp; </td>
938+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
939+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
940+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
941+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
942+</tr></table>
943+<h2 class="section">3.9 Interupting Xnee</h2>
944+<a name="index-Interupting-xnee"></a>
945+<p>Interupting Xnee when recording or replaying can be done as follows
946+</p><ul>
947+<li> user specified modifier and key
948+</li><li> limit the number of data to record
949+</li><li> sending a SIGTERM signal (e.g pressing Control-c in a terminal window)
950+</li></ul>
951+
952+<p>The prefered way to interrupt xnee is to use the modifier+key.
953+</p>
954+<hr size="6">
955+<a name="modifier-and-key"></a>
956+<table cellpadding="1" cellspacing="1" border="0">
957+<tr><td valign="middle" align="left">[<a href="#Interupting-Xnee" title="Previous section in reading order"> &lt; </a>]</td>
958+<td valign="middle" align="left">[<a href="#limit-the-number-of-data-to-record" title="Next section in reading order"> &gt; </a>]</td>
959+<td valign="middle" align="left"> &nbsp; </td>
960+<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
961+<td valign="middle" align="left">[<a href="#Interupting-Xnee" title="Up section"> Up </a>]</td>
962+<td valign="middle" align="left">[<a href="#Installation" title="Next chapter"> &gt;&gt; </a>]</td>
963+<td valign="middle" align="left"> &nbsp; </td>
964+<td valign="middle" align="left"> &nbsp; </td>
965+<td valign="middle" align="left"> &nbsp; </td>
966+<td valign="middle" align="left"> &nbsp; </td>
967+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
968+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
969+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
970+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
971+</tr></table>
972+<h3 class="subsection">3.9.1 modifier and key</h3>
973+<a name="index-modifier"></a>
974+<a name="index-key"></a>
975+<p>It is possible to specify a modifier (e.g Control button) and a key (e.g &rsquo;a&rsquo;)
976+that will stop the Xnee session. When using this option make sure that the
977+modifier/key is not used in any way by the applications you are recording.
978+You can specify a key+modifier to stop, pause and resume xnee. You can also
979+insert a mark in the recorded session file.
980+</p>
981+<hr size="6">
982+<a name="limit-the-number-of-data-to-record"></a>
983+<table cellpadding="1" cellspacing="1" border="0">
984+<tr><td valign="middle" align="left">[<a href="#modifier-and-key" title="Previous section in reading order"> &lt; </a>]</td>
985+<td valign="middle" align="left">[<a href="#sending-a-SIGTERM-signal" title="Next section in reading order"> &gt; </a>]</td>
986+<td valign="middle" align="left"> &nbsp; </td>
987+<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
988+<td valign="middle" align="left">[<a href="#Interupting-Xnee" title="Up section"> Up </a>]</td>
989+<td valign="middle" align="left">[<a href="#Installation" title="Next chapter"> &gt;&gt; </a>]</td>
990+<td valign="middle" align="left"> &nbsp; </td>
991+<td valign="middle" align="left"> &nbsp; </td>
992+<td valign="middle" align="left"> &nbsp; </td>
993+<td valign="middle" align="left"> &nbsp; </td>
994+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
995+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
996+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
997+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
998+</tr></table>
999+<h3 class="subsection">3.9.2 limit the number of data to record</h3>
1000+<p>By specifying the number of data to record (<code>--loops</code>) xnee stops when this number
1001+of data is received from the server. When replaying the same amount of data
1002+is replayed.
1003+</p>
1004+<hr size="6">
1005+<a name="sending-a-SIGTERM-signal"></a>
1006+<table cellpadding="1" cellspacing="1" border="0">
1007+<tr><td valign="middle" align="left">[<a href="#limit-the-number-of-data-to-record" title="Previous section in reading order"> &lt; </a>]</td>
1008+<td valign="middle" align="left">[<a href="#Stop-Xnee-with-key-combination" title="Next section in reading order"> &gt; </a>]</td>
1009+<td valign="middle" align="left"> &nbsp; </td>
1010+<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
1011+<td valign="middle" align="left">[<a href="#Interupting-Xnee" title="Up section"> Up </a>]</td>
1012+<td valign="middle" align="left">[<a href="#Installation" title="Next chapter"> &gt;&gt; </a>]</td>
1013+<td valign="middle" align="left"> &nbsp; </td>
1014+<td valign="middle" align="left"> &nbsp; </td>
1015+<td valign="middle" align="left"> &nbsp; </td>
1016+<td valign="middle" align="left"> &nbsp; </td>
1017+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
1018+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
1019+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
1020+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
1021+</tr></table>
1022+<h3 class="subsection">3.9.3 sending a SIGTERM signal</h3>
1023+<a name="index-SIGTERM"></a>
1024+<p>The easiest way to send a signal to a process is by launching Xnee
1025+from a terminal window (e.g xterm) and then press Control-c which will
1026+send the SIGTERM signal to Xnee. When replaying it can sometimes be
1027+hard to move the pointer into the terminal window (e.g if a lot of
1028+motion events were recorded that will let you compete with Xnee on
1029+where the mouse pointer shall be located. Beleive me, you&rsquo;ll end up
1030+lossing that battle).
1031+</p>
1032+<p>When using Control-c to stop Xnee you must be aware of that the pressing of the Control key gets recorded. When replaying a recorded session ending with pressing of Control your apps may think you are pressing the Control key. A simple solution for this is to press and release the Control.
1033+</p>
1034+<hr size="6">
1035+<a name="Stop-Xnee-with-key-combination"></a>
1036+<table cellpadding="1" cellspacing="1" border="0">
1037+<tr><td valign="middle" align="left">[<a href="#sending-a-SIGTERM-signal" title="Previous section in reading order"> &lt; </a>]</td>
1038+<td valign="middle" align="left">[<a href="#Pause-Xnee-with-key-combination" title="Next section in reading order"> &gt; </a>]</td>
1039+<td valign="middle" align="left"> &nbsp; </td>
1040+<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
1041+<td valign="middle" align="left">[<a href="#Interupting-Xnee" title="Up section"> Up </a>]</td>
1042+<td valign="middle" align="left">[<a href="#Installation" title="Next chapter"> &gt;&gt; </a>]</td>
1043+<td valign="middle" align="left"> &nbsp; </td>
1044+<td valign="middle" align="left"> &nbsp; </td>
1045+<td valign="middle" align="left"> &nbsp; </td>
1046+<td valign="middle" align="left"> &nbsp; </td>
1047+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
1048+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
1049+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
1050+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
1051+</tr></table>
1052+<h3 class="subsection">3.9.4 Stop Xnee with key combination</h3>
1053+<a name="index-Stop-Xnee-with-key-combination"></a>
1054+<p>Xnee stops its current action when the user presses the key
1055+combination as specified during setup. Xnee will be shut gracefully.
1056+</p>
1057+<hr size="6">
1058+<a name="Pause-Xnee-with-key-combination"></a>
1059+<table cellpadding="1" cellspacing="1" border="0">
1060+<tr><td valign="middle" align="left">[<a href="#Stop-Xnee-with-key-combination" title="Previous section in reading order"> &lt; </a>]</td>
1061+<td valign="middle" align="left">[<a href="#Pause-Xnee-with-key-combination-1" title="Next section in reading order"> &gt; </a>]</td>
1062+<td valign="middle" align="left"> &nbsp; </td>
1063+<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
1064+<td valign="middle" align="left">[<a href="#Interupting-Xnee" title="Up section"> Up </a>]</td>
1065+<td valign="middle" align="left">[<a href="#Installation" title="Next chapter"> &gt;&gt; </a>]</td>
1066+<td valign="middle" align="left"> &nbsp; </td>
1067+<td valign="middle" align="left"> &nbsp; </td>
1068+<td valign="middle" align="left"> &nbsp; </td>
1069+<td valign="middle" align="left"> &nbsp; </td>
1070+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
1071+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
1072+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
1073+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
1074+</tr></table>
1075+<h3 class="subsection">3.9.5 Pause Xnee with key combination</h3>
1076+<a name="index-Pause-Xnee-with-key-combination"></a>
1077+<p>Xnee pause its current action when the user presses the key
1078+combination as specified during setup. Xnee will be in paused mode until
1079+the user stops or resumes Xnee.
1080+</p>
1081+<hr size="6">
1082+<a name="Pause-Xnee-with-key-combination-1"></a>
1083+<table cellpadding="1" cellspacing="1" border="0">
1084+<tr><td valign="middle" align="left">[<a href="#Pause-Xnee-with-key-combination" title="Previous section in reading order"> &lt; </a>]</td>
1085+<td valign="middle" align="left">[<a href="#Insert-marks-Xnee-with-key-combination" title="Next section in reading order"> &gt; </a>]</td>
1086+<td valign="middle" align="left"> &nbsp; </td>
1087+<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
1088+<td valign="middle" align="left">[<a href="#Interupting-Xnee" title="Up section"> Up </a>]</td>
1089+<td valign="middle" align="left">[<a href="#Installation" title="Next chapter"> &gt;&gt; </a>]</td>
1090+<td valign="middle" align="left"> &nbsp; </td>
1091+<td valign="middle" align="left"> &nbsp; </td>
1092+<td valign="middle" align="left"> &nbsp; </td>
1093+<td valign="middle" align="left"> &nbsp; </td>
1094+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
1095+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
1096+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
1097+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
1098+</tr></table>
1099+<h3 class="subsection">3.9.6 Pause Xnee with key combination</h3>
1100+<a name="index-Pause-Xnee-with-key-combination-1"></a>
1101+<p>Xnee resumes its current paused action when the user presses the key
1102+combination as specified during setup. Xnee will continue where it was
1103+paused.
1104+</p>
1105+<hr size="6">
1106+<a name="Insert-marks-Xnee-with-key-combination"></a>
1107+<table cellpadding="1" cellspacing="1" border="0">
1108+<tr><td valign="middle" align="left">[<a href="#Pause-Xnee-with-key-combination-1" title="Previous section in reading order"> &lt; </a>]</td>
1109+<td valign="middle" align="left">[<a href="#Limit-number-of-data-to-record" title="Next section in reading order"> &gt; </a>]</td>
1110+<td valign="middle" align="left"> &nbsp; </td>
1111+<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
1112+<td valign="middle" align="left">[<a href="#Interupting-Xnee" title="Up section"> Up </a>]</td>
1113+<td valign="middle" align="left">[<a href="#Installation" title="Next chapter"> &gt;&gt; </a>]</td>
1114+<td valign="middle" align="left"> &nbsp; </td>
1115+<td valign="middle" align="left"> &nbsp; </td>
1116+<td valign="middle" align="left"> &nbsp; </td>
1117+<td valign="middle" align="left"> &nbsp; </td>
1118+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
1119+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
1120+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
1121+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
1122+</tr></table>
1123+<h3 class="subsection">3.9.7 Insert marks Xnee with key combination</h3>
1124+<a name="index-Insert-marks-Xnee-with-key-combination"></a>
1125+<p>When the user presses the key combination as specified during setup
1126+Xnee will print a mark in the session file containing a time stamp. This
1127+feature is intended be used when you want to mark an interresting time/event
1128+during recording. After recording has finished you can add Xnee scripting
1129+calls to Xnee which will be interpreted and executed as if they were recorded.
1130+</p>
1131+
1132+<hr size="6">
1133+<a name="Limit-number-of-data-to-record"></a>
1134+<table cellpadding="1" cellspacing="1" border="0">
1135+<tr><td valign="middle" align="left">[<a href="#Insert-marks-Xnee-with-key-combination" title="Previous section in reading order"> &lt; </a>]</td>
1136+<td valign="middle" align="left">[<a href="#Limit-the-events-to-record" title="Next section in reading order"> &gt; </a>]</td>
1137+<td valign="middle" align="left"> &nbsp; </td>
1138+<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
1139+<td valign="middle" align="left">[<a href="#Interupting-Xnee" title="Up section"> Up </a>]</td>
1140+<td valign="middle" align="left">[<a href="#Installation" title="Next chapter"> &gt;&gt; </a>]</td>
1141+<td valign="middle" align="left"> &nbsp; </td>
1142+<td valign="middle" align="left"> &nbsp; </td>
1143+<td valign="middle" align="left"> &nbsp; </td>
1144+<td valign="middle" align="left"> &nbsp; </td>
1145+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
1146+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
1147+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
1148+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
1149+</tr></table>
1150+<h3 class="subsection">3.9.8 Limit number of data to record</h3>
1151+<p>There a a few ways to limit the number of data Xnee records.
1152+</p><ul>
1153+<li> limit the events to recored
1154+</li><li> limit the data to recored
1155+</li><li> limit the time to recored
1156+</li><li> send a signal to xnee (SIGTERM)
1157+</li><li> use a selfmade record callback function
1158+</li></ul>
1159+
1160+
1161+<hr size="6">
1162+<a name="Limit-the-events-to-record"></a>
1163+<table cellpadding="1" cellspacing="1" border="0">
1164+<tr><td valign="middle" align="left">[<a href="#Limit-number-of-data-to-record" title="Previous section in reading order"> &lt; </a>]</td>
1165+<td valign="middle" align="left">[<a href="#Limit-the-data-to-record" title="Next section in reading order"> &gt; </a>]</td>
1166+<td valign="middle" align="left"> &nbsp; </td>
1167+<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
1168+<td valign="middle" align="left">[<a href="#Interupting-Xnee" title="Up section"> Up </a>]</td>
1169+<td valign="middle" align="left">[<a href="#Installation" title="Next chapter"> &gt;&gt; </a>]</td>
1170+<td valign="middle" align="left"> &nbsp; </td>
1171+<td valign="middle" align="left"> &nbsp; </td>
1172+<td valign="middle" align="left"> &nbsp; </td>
1173+<td valign="middle" align="left"> &nbsp; </td>
1174+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
1175+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
1176+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
1177+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
1178+</tr></table>
1179+<h3 class="subsection">3.9.9 Limit the events to record</h3>
1180+<a name="index-limit-the-events"></a>
1181+<p>When having received the specified amount of events from the server, Xnee
1182+stops the recording. For more information on how to use this option, read
1183+the man page for cnee or the user manual for gnee.
1184+</p>
1185+<hr size="6">
1186+<a name="Limit-the-data-to-record"></a>
1187+<table cellpadding="1" cellspacing="1" border="0">
1188+<tr><td valign="middle" align="left">[<a href="#Limit-the-events-to-record" title="Previous section in reading order"> &lt; </a>]</td>
1189+<td valign="middle" align="left">[<a href="#Limit-the-time-to-record" title="Next section in reading order"> &gt; </a>]</td>
1190+<td valign="middle" align="left"> &nbsp; </td>
1191+<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
1192+<td valign="middle" align="left">[<a href="#Interupting-Xnee" title="Up section"> Up </a>]</td>
1193+<td valign="middle" align="left">[<a href="#Installation" title="Next chapter"> &gt;&gt; </a>]</td>
1194+<td valign="middle" align="left"> &nbsp; </td>
1195+<td valign="middle" align="left"> &nbsp; </td>
1196+<td valign="middle" align="left"> &nbsp; </td>
1197+<td valign="middle" align="left"> &nbsp; </td>
1198+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
1199+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
1200+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
1201+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
1202+</tr></table>
1203+<h3 class="subsection">3.9.10 Limit the data to record</h3>
1204+<a name="index-limit-the-data"></a>
1205+<p>When having received the specified amount of data from the server, Xnee
1206+stops the recording. For more information on how to use this option, read
1207+the man page for cnee or the user manual for gnee.
1208+</p>
1209+<hr size="6">
1210+<a name="Limit-the-time-to-record"></a>
1211+<table cellpadding="1" cellspacing="1" border="0">
1212+<tr><td valign="middle" align="left">[<a href="#Limit-the-data-to-record" title="Previous section in reading order"> &lt; </a>]</td>
1213+<td valign="middle" align="left">[<a href="#Send-SIGTERM-to-Xnee" title="Next section in reading order"> &gt; </a>]</td>
1214+<td valign="middle" align="left"> &nbsp; </td>
1215+<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
1216+<td valign="middle" align="left">[<a href="#Interupting-Xnee" title="Up section"> Up </a>]</td>
1217+<td valign="middle" align="left">[<a href="#Installation" title="Next chapter"> &gt;&gt; </a>]</td>
1218+<td valign="middle" align="left"> &nbsp; </td>
1219+<td valign="middle" align="left"> &nbsp; </td>
1220+<td valign="middle" align="left"> &nbsp; </td>
1221+<td valign="middle" align="left"> &nbsp; </td>
1222+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
1223+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
1224+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
1225+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
1226+</tr></table>
1227+<h3 class="subsection">3.9.11 Limit the time to record</h3>
1228+<a name="index-limit-the-events-1"></a>
1229+<p>When having recorded for the specified amount of time from the server, Xnee
1230+stops the recording. For more information on how to use this option, read
1231+the man page for cnee or the user manual for gnee.
1232+</p>
1233+<hr size="6">
1234+<a name="Send-SIGTERM-to-Xnee"></a>
1235+<table cellpadding="1" cellspacing="1" border="0">
1236+<tr><td valign="middle" align="left">[<a href="#Limit-the-time-to-record" title="Previous section in reading order"> &lt; </a>]</td>
1237+<td valign="middle" align="left">[<a href="#Xnee-plugins" title="Next section in reading order"> &gt; </a>]</td>
1238+<td valign="middle" align="left"> &nbsp; </td>
1239+<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
1240+<td valign="middle" align="left">[<a href="#Interupting-Xnee" title="Up section"> Up </a>]</td>
1241+<td valign="middle" align="left">[<a href="#Installation" title="Next chapter"> &gt;&gt; </a>]</td>
1242+<td valign="middle" align="left"> &nbsp; </td>
1243+<td valign="middle" align="left"> &nbsp; </td>
1244+<td valign="middle" align="left"> &nbsp; </td>
1245+<td valign="middle" align="left"> &nbsp; </td>
1246+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
1247+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
1248+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
1249+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
1250+</tr></table>
1251+<h3 class="subsection">3.9.12 Send SIGTERM to Xnee</h3>
1252+<a name="index-SIGTERM-1"></a>
1253+<p>The easiest way to send a signal to a process is by launching Xnee from a
1254+terminal window (e.g xterm). By pressing Control-c xterm sends the
1255+SIGTERM signal to Xnee. When replaying it can sometimes be hard to
1256+move the pointer into the terminal window (e.g if a lot of motion
1257+events were recorded that will let you compete with Xnee on where
1258+the mouse pointer shall be located. Beleive me, you&rsquo;ll end up lossing
1259+that battle).
1260+</p>
1261+
1262+<hr size="6">
1263+<a name="Xnee-plugins"></a>
1264+<table cellpadding="1" cellspacing="1" border="0">
1265+<tr><td valign="middle" align="left">[<a href="#Send-SIGTERM-to-Xnee" title="Previous section in reading order"> &lt; </a>]</td>
1266+<td valign="middle" align="left">[<a href="#Installation" title="Next section in reading order"> &gt; </a>]</td>
1267+<td valign="middle" align="left"> &nbsp; </td>
1268+<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
1269+<td valign="middle" align="left">[<a href="#Functional-overview" title="Up section"> Up </a>]</td>
1270+<td valign="middle" align="left">[<a href="#Installation" title="Next chapter"> &gt;&gt; </a>]</td>
1271+<td valign="middle" align="left"> &nbsp; </td>
1272+<td valign="middle" align="left"> &nbsp; </td>
1273+<td valign="middle" align="left"> &nbsp; </td>
1274+<td valign="middle" align="left"> &nbsp; </td>
1275+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
1276+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
1277+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
1278+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
1279+</tr></table>
1280+<h2 class="section">3.10 Xnee plugins</h2>
1281+<a name="index-plugins"></a>
1282+<p>Xnee supports plugins since version 1.07. For information about how to write
1283+plugins, download the source code and look at the plugin example which is
1284+delivered with Xnee.
1285+</p>
1286+
1287+
1288+
1289+<hr size="6">
1290+<a name="Installation"></a>
1291+<table cellpadding="1" cellspacing="1" border="0">
1292+<tr><td valign="middle" align="left">[<a href="#Xnee-plugins" title="Previous section in reading order"> &lt; </a>]</td>
1293+<td valign="middle" align="left">[<a href="#Installation-from-source-with-the-configure-script" title="Next section in reading order"> &gt; </a>]</td>
1294+<td valign="middle" align="left"> &nbsp; </td>
1295+<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
1296+<td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
1297+<td valign="middle" align="left">[<a href="#Examples" title="Next chapter"> &gt;&gt; </a>]</td>
1298+<td valign="middle" align="left"> &nbsp; </td>
1299+<td valign="middle" align="left"> &nbsp; </td>
1300+<td valign="middle" align="left"> &nbsp; </td>
1301+<td valign="middle" align="left"> &nbsp; </td>
1302+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
1303+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
1304+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
1305+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
1306+</tr></table>
1307+<a name="Installation-1"></a>
1308+<h1 class="chapter">4. Installation</h1>
1309+
1310+<hr size="6">
1311+<a name="Installation-from-source-with-the-configure-script"></a>
1312+<table cellpadding="1" cellspacing="1" border="0">
1313+<tr><td valign="middle" align="left">[<a href="#Installation" title="Previous section in reading order"> &lt; </a>]</td>
1314+<td valign="middle" align="left">[<a href="#Installation-from-source-with-default-Makefile" title="Next section in reading order"> &gt; </a>]</td>
1315+<td valign="middle" align="left"> &nbsp; </td>
1316+<td valign="middle" align="left">[<a href="#Installation" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
1317+<td valign="middle" align="left">[<a href="#Installation" title="Up section"> Up </a>]</td>
1318+<td valign="middle" align="left">[<a href="#Examples" title="Next chapter"> &gt;&gt; </a>]</td>
1319+<td valign="middle" align="left"> &nbsp; </td>
1320+<td valign="middle" align="left"> &nbsp; </td>
1321+<td valign="middle" align="left"> &nbsp; </td>
1322+<td valign="middle" align="left"> &nbsp; </td>
1323+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
1324+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
1325+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
1326+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
1327+</tr></table>
1328+<h2 class="section">4.1 Installation from source with the configure script</h2>
1329+<p>To build and install Xnee do the following:
1330+Download the following source files into a directory (version numbers given here are just examples)
1331+</p><ul>
1332+<li> xnee-3.02.tar.gz
1333+</li></ul>
1334+
1335+
1336+<br>
1337+<p>Unzip the source file
1338+</p><table><tr><td>&nbsp;</td><td><pre class="example"><code>gunzip xnee-3.02.tar.gz</code>
1339+</pre></td></tr></table>
1340+
1341+<br>
1342+<p>Untar the source file
1343+</p><table><tr><td>&nbsp;</td><td><pre class="example"><code>tar xvf xnee-3.02.tar</code>
1344+</pre></td></tr></table>
1345+
1346+<br>
1347+<p>Enter the Xnee directory
1348+</p><table><tr><td>&nbsp;</td><td><pre class="example"><code>cd xnee-3.02</code>
1349+</pre></td></tr></table>
1350+
1351+<br>
1352+<p>Generate the makefiles
1353+</p><table><tr><td>&nbsp;</td><td><pre class="example"><code>./configure</code>
1354+</pre></td></tr></table>
1355+<br>
1356+<p>or if you want to specify which directory to install xnee to
1357+</p><table><tr><td>&nbsp;</td><td><pre class="example"><code>./configure --prefix=&lt;PATH TO INSTALLATION DIR&gt;</code>
1358+</pre></td></tr></table>
1359+
1360+<br>
1361+<p>Build Xnee
1362+</p><table><tr><td>&nbsp;</td><td><pre class="example"><code>make clean all</code>
1363+</pre></td></tr></table>
1364+
1365+<br>
1366+<p>Install (as root) if you want libxnee to be installed. If not, skip the following command. Installation of libxnee is not needed to build cnee and gnee.
1367+</p><table><tr><td>&nbsp;</td><td><pre class="example"><code>make install</code>
1368+</pre></td></tr></table>
1369+
1370+
1371+<hr size="6">
1372+<a name="Installation-from-source-with-default-Makefile"></a>
1373+<table cellpadding="1" cellspacing="1" border="0">
1374+<tr><td valign="middle" align="left">[<a href="#Installation-from-source-with-the-configure-script" title="Previous section in reading order"> &lt; </a>]</td>
1375+<td valign="middle" align="left">[<a href="#Installation-from-CVS" title="Next section in reading order"> &gt; </a>]</td>
1376+<td valign="middle" align="left"> &nbsp; </td>
1377+<td valign="middle" align="left">[<a href="#Installation" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
1378+<td valign="middle" align="left">[<a href="#Installation" title="Up section"> Up </a>]</td>
1379+<td valign="middle" align="left">[<a href="#Examples" title="Next chapter"> &gt;&gt; </a>]</td>
1380+<td valign="middle" align="left"> &nbsp; </td>
1381+<td valign="middle" align="left"> &nbsp; </td>
1382+<td valign="middle" align="left"> &nbsp; </td>
1383+<td valign="middle" align="left"> &nbsp; </td>
1384+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
1385+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
1386+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
1387+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
1388+</tr></table>
1389+<h2 class="section">4.2 Installation from source with default Makefile</h2>
1390+<p>To unpack, build and install Xnee from the sourcefiles do the following:
1391+<br>
1392+Download the source files into a directory
1393+</p>
1394+<p>Unzip the source file
1395+</p><table><tr><td>&nbsp;</td><td><pre class="example"><code>gunzip xnee-3.02.tar.gz</code>
1396+</pre></td></tr></table>
1397+
1398+<p>Untar the source file
1399+</p><table><tr><td>&nbsp;</td><td><pre class="example"><code>tar xvf xnee-3.02.tar</code>
1400+</pre></td></tr></table>
1401+
1402+<p>Enter the Xnee directory
1403+</p><table><tr><td>&nbsp;</td><td><pre class="example"><code>cd xnee-3.02</code>
1404+</pre></td></tr></table>
1405+
1406+<p>Build Xnee
1407+</p><table><tr><td>&nbsp;</td><td><pre class="example"><code>make -f Makefile.xnee clean all</code>
1408+</pre></td></tr></table>
1409+
1410+<p>Copy the Xnee binary (xnee/src/xnee) to a directory
1411+</p><table><tr><td>&nbsp;</td><td><pre class="example"><code>cp xnee/src/xnee /usr/local/bin</code>
1412+</pre></td></tr></table>
1413+
1414+
1415+
1416+
1417+
1418+<hr size="6">
1419+<a name="Installation-from-CVS"></a>
1420+<table cellpadding="1" cellspacing="1" border="0">
1421+<tr><td valign="middle" align="left">[<a href="#Installation-from-source-with-default-Makefile" title="Previous section in reading order"> &lt; </a>]</td>
1422+<td valign="middle" align="left">[<a href="#Examples" title="Next section in reading order"> &gt; </a>]</td>
1423+<td valign="middle" align="left"> &nbsp; </td>
1424+<td valign="middle" align="left">[<a href="#Installation" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
1425+<td valign="middle" align="left">[<a href="#Installation" title="Up section"> Up </a>]</td>
1426+<td valign="middle" align="left">[<a href="#Examples" title="Next chapter"> &gt;&gt; </a>]</td>
1427+<td valign="middle" align="left"> &nbsp; </td>
1428+<td valign="middle" align="left"> &nbsp; </td>
1429+<td valign="middle" align="left"> &nbsp; </td>
1430+<td valign="middle" align="left"> &nbsp; </td>
1431+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
1432+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
1433+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
1434+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
1435+</tr></table>
1436+<h2 class="section">4.3 Installation from CVS</h2>
1437+<br>
1438+<p>Download the xnee source code from the CVS repository at
1439+<a href="http://savannah.gnu.org">http://savannah.gnu.org</a>. Instructions on how to do
1440+this can be found there as well.
1441+</p>
1442+<br>
1443+
1444+<p>Build Xnee
1445+</p><table><tr><td>&nbsp;</td><td><pre class="example"><code>cd xnee</code>
1446+<code>make -f Makefile.cvs</code>
1447+<code>./configure --enable-doc</code>
1448+<code>make</code>
1449+<code>make install</code> (optional)
1450+</pre></td></tr></table>
1451+
1452+
1453+<p>Build Xnee Documentation
1454+</p><table><tr><td>&nbsp;</td><td><pre class="example"><code>cd doc</code>
1455+<code>make manual</code>
1456+<code>make install</code> (as root)
1457+<code>cd ..</code>
1458+</pre></td></tr></table>
1459+
1460+
1461+
1462+
1463+<hr size="6">
1464+<a name="Examples"></a>
1465+<table cellpadding="1" cellspacing="1" border="0">
1466+<tr><td valign="middle" align="left">[<a href="#Installation-from-CVS" title="Previous section in reading order"> &lt; </a>]</td>
1467+<td valign="middle" align="left">[<a href="#Recorder" title="Next section in reading order"> &gt; </a>]</td>
1468+<td valign="middle" align="left"> &nbsp; </td>
1469+<td valign="middle" align="left">[<a href="#Installation" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
1470+<td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
1471+<td valign="middle" align="left">[<a href="#Programs" title="Next chapter"> &gt;&gt; </a>]</td>
1472+<td valign="middle" align="left"> &nbsp; </td>
1473+<td valign="middle" align="left"> &nbsp; </td>
1474+<td valign="middle" align="left"> &nbsp; </td>
1475+<td valign="middle" align="left"> &nbsp; </td>
1476+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
1477+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
1478+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
1479+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
1480+</tr></table>
1481+<a name="Examples-1"></a>
1482+<h1 class="chapter">5. Examples</h1>
1483+
1484+<hr size="6">
1485+<a name="Recorder"></a>
1486+<table cellpadding="1" cellspacing="1" border="0">
1487+<tr><td valign="middle" align="left">[<a href="#Examples" title="Previous section in reading order"> &lt; </a>]</td>
1488+<td valign="middle" align="left">[<a href="#Record-mouse-motions" title="Next section in reading order"> &gt; </a>]</td>
1489+<td valign="middle" align="left"> &nbsp; </td>
1490+<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
1491+<td valign="middle" align="left">[<a href="#Examples" title="Up section"> Up </a>]</td>
1492+<td valign="middle" align="left">[<a href="#Programs" title="Next chapter"> &gt;&gt; </a>]</td>
1493+<td valign="middle" align="left"> &nbsp; </td>
1494+<td valign="middle" align="left"> &nbsp; </td>
1495+<td valign="middle" align="left"> &nbsp; </td>
1496+<td valign="middle" align="left"> &nbsp; </td>
1497+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
1498+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
1499+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
1500+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
1501+</tr></table>
1502+<h2 class="section">5.1 Recorder</h2>
1503+
1504+
1505+<hr size="6">
1506+<a name="Record-mouse-motions"></a>
1507+<table cellpadding="1" cellspacing="1" border="0">
1508+<tr><td valign="middle" align="left">[<a href="#Recorder" title="Previous section in reading order"> &lt; </a>]</td>
1509+<td valign="middle" align="left">[<a href="#Record-keyboard" title="Next section in reading order"> &gt; </a>]</td>
1510+<td valign="middle" align="left"> &nbsp; </td>
1511+<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
1512+<td valign="middle" align="left">[<a href="#Recorder" title="Up section"> Up </a>]</td>
1513+<td valign="middle" align="left">[<a href="#Programs" title="Next chapter"> &gt;&gt; </a>]</td>
1514+<td valign="middle" align="left"> &nbsp; </td>
1515+<td valign="middle" align="left"> &nbsp; </td>
1516+<td valign="middle" align="left"> &nbsp; </td>
1517+<td valign="middle" align="left"> &nbsp; </td>
1518+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
1519+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
1520+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
1521+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
1522+</tr></table>
1523+<h3 class="subsection">5.1.1 Record mouse motions</h3>
1524+<a name="index-Record-mouse-motions"></a>
1525+<p>Record mouse motions only and save the session to mouse-rec.xnl.
1526+</p><table><tr><td>&nbsp;</td><td><pre class="example"> <code>cnee --record --mouse --out-file mouse-rec.xnl</code>
1527+</pre></td></tr></table>
1528+<p>After having typed this you can move your mouse round for a while. After Xnee
1529+has exited you will be able to replay your motions. Xnee will stop
1530+after having record 100 events (this is the default behaviour).
1531+</p>
1532+
1533+<hr size="6">
1534+<a name="Record-keyboard"></a>
1535+<table cellpadding="1" cellspacing="1" border="0">
1536+<tr><td valign="middle" align="left">[<a href="#Record-mouse-motions" title="Previous section in reading order"> &lt; </a>]</td>
1537+<td valign="middle" align="left">[<a href="#Record-keyboard-and-mouse" title="Next section in reading order"> &gt; </a>]</td>
1538+<td valign="middle" align="left"> &nbsp; </td>
1539+<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
1540+<td valign="middle" align="left">[<a href="#Recorder" title="Up section"> Up </a>]</td>
1541+<td valign="middle" align="left">[<a href="#Programs" title="Next chapter"> &gt;&gt; </a>]</td>
1542+<td valign="middle" align="left"> &nbsp; </td>
1543+<td valign="middle" align="left"> &nbsp; </td>
1544+<td valign="middle" align="left"> &nbsp; </td>
1545+<td valign="middle" align="left"> &nbsp; </td>
1546+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
1547+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
1548+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
1549+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
1550+</tr></table>
1551+<h3 class="subsection">5.1.2 Record keyboard</h3>
1552+<a name="index-Record-keyboard"></a>
1553+<p>Record keyboard events only and save log to kbd-rec.xnl.
1554+</p><table><tr><td>&nbsp;</td><td><pre class="example"> <code>cnee --record --keyboard --out-file kbd-rec.xnl</code>
1555+</pre></td></tr></table>
1556+<p>After having typed this Xnee records all your keyboard actions. After Xnee
1557+has exited you will be able to replay your keyboard actions. Xnee will stop
1558+after having record 100 events (this is the default behaviour).
1559+</p>
1560+
1561+<hr size="6">
1562+<a name="Record-keyboard-and-mouse"></a>
1563+<table cellpadding="1" cellspacing="1" border="0">
1564+<tr><td valign="middle" align="left">[<a href="#Record-keyboard" title="Previous section in reading order"> &lt; </a>]</td>
1565+<td valign="middle" align="left">[<a href="#Record-a-gnumeric-session" title="Next section in reading order"> &gt; </a>]</td>
1566+<td valign="middle" align="left"> &nbsp; </td>
1567+<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
1568+<td valign="middle" align="left">[<a href="#Recorder" title="Up section"> Up </a>]</td>
1569+<td valign="middle" align="left">[<a href="#Programs" title="Next chapter"> &gt;&gt; </a>]</td>
1570+<td valign="middle" align="left"> &nbsp; </td>
1571+<td valign="middle" align="left"> &nbsp; </td>
1572+<td valign="middle" align="left"> &nbsp; </td>
1573+<td valign="middle" align="left"> &nbsp; </td>
1574+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
1575+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
1576+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
1577+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
1578+</tr></table>
1579+<h3 class="subsection">5.1.3 Record keyboard and mouse</h3>
1580+<a name="index-Record-keyboard-and-mouse"></a>
1581+<p>Record keyboard and mouse and save log to km-rec.xnl.
1582+</p><table><tr><td>&nbsp;</td><td><pre class="example"> <code>cnee --record --keyboard --mouse --out-file kbd-rec.xnl</code>
1583+</pre></td></tr></table>
1584+<p>After having typed this Xnee records all your keyboard and mouse actions.
1585+So now move your pointer and write some stuff with your keyboard. After Xnee
1586+has exited you will be able to replay your keyboard and mouse actions. Xnee
1587+will stop after having record 100 events (this is the default behaviour).
1588+</p>
1589+
1590+
1591+<hr size="6">
1592+<a name="Record-a-gnumeric-session"></a>
1593+<table cellpadding="1" cellspacing="1" border="0">
1594+<tr><td valign="middle" align="left">[<a href="#Record-keyboard-and-mouse" title="Previous section in reading order"> &lt; </a>]</td>
1595+<td valign="middle" align="left">[<a href="#Record-a-gnumeric-session-with-synchronisation-data" title="Next section in reading order"> &gt; </a>]</td>
1596+<td valign="middle" align="left"> &nbsp; </td>
1597+<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
1598+<td valign="middle" align="left">[<a href="#Recorder" title="Up section"> Up </a>]</td>
1599+<td valign="middle" align="left">[<a href="#Programs" title="Next chapter"> &gt;&gt; </a>]</td>
1600+<td valign="middle" align="left"> &nbsp; </td>
1601+<td valign="middle" align="left"> &nbsp; </td>
1602+<td valign="middle" align="left"> &nbsp; </td>
1603+<td valign="middle" align="left"> &nbsp; </td>
1604+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
1605+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
1606+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
1607+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
1608+</tr></table>
1609+<h3 class="subsection">5.1.4 Record a gnumeric session</h3>
1610+<a name="index-Record-a-gnumeric-session"></a>
1611+<p>Record a gnumeric session. Record 400 events. Save output in file gnumeric.xnl
1612+Start a terminal emulator (e.g xterm)
1613+</p><table><tr><td>&nbsp;</td><td><pre class="example"><code>xterm&amp;</code>
1614+</pre></td></tr></table>
1615+
1616+<p>Start Xnee
1617+</p><table><tr><td>&nbsp;</td><td><pre class="example"> <code>cnee --record --keyboard --mouse --events-to-record 400 \</code>
1618+ <code> --out-file gnumeric.xnl&amp;</code>
1619+</pre></td></tr></table>
1620+
1621+<p>Start gnumeric
1622+</p><table><tr><td>&nbsp;</td><td><pre class="example"><code>gnumeric&amp;</code>
1623+</pre></td></tr></table>
1624+<p>Start using gnumeric. Browse the menus above, reset the fonts etc.
1625+</p>
1626+
1627+
1628+
1629+<hr size="6">
1630+<a name="Record-a-gnumeric-session-with-synchronisation-data"></a>
1631+<table cellpadding="1" cellspacing="1" border="0">
1632+<tr><td valign="middle" align="left">[<a href="#Record-a-gnumeric-session" title="Previous section in reading order"> &lt; </a>]</td>
1633+<td valign="middle" align="left">[<a href="#Replayer" title="Next section in reading order"> &gt; </a>]</td>
1634+<td valign="middle" align="left"> &nbsp; </td>
1635+<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
1636+<td valign="middle" align="left">[<a href="#Recorder" title="Up section"> Up </a>]</td>
1637+<td valign="middle" align="left">[<a href="#Programs" title="Next chapter"> &gt;&gt; </a>]</td>
1638+<td valign="middle" align="left"> &nbsp; </td>
1639+<td valign="middle" align="left"> &nbsp; </td>
1640+<td valign="middle" align="left"> &nbsp; </td>
1641+<td valign="middle" align="left"> &nbsp; </td>
1642+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
1643+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
1644+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
1645+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
1646+</tr></table>
1647+<h3 class="subsection">5.1.5 Record a gnumeric session with synchronisation data</h3>
1648+<a name="index-Record-a-gnumeric-session-with-synchronisation-data"></a>
1649+<p>Record a gnumeric session. Record 400 events. Save output in file gnumeric2.xnl
1650+</p>
1651+<br>
1652+<p>Start a terminal emulator (e.g xterm)
1653+<code>xterm&amp;</code>
1654+</p>
1655+<p>Start Xnee
1656+</p><table><tr><td>&nbsp;</td><td><pre class="example"> <code>cnee --record --keyboard --mouse --events-to-record 400 \</code>
1657+ <code> --out-file gnumeric2.xnl\</code>
1658+ <code>--delivered-event-range Expose,MapRequest,LeaveNotify,EnterNotify &amp;</code>
1659+</pre></td></tr></table>
1660+
1661+<br>
1662+<p>Start gnumeric
1663+<code>gnumeric&amp;</code>
1664+Start using gnumeric. Browse the menus above, reset the fonts etc.
1665+</p>
1666+
1667+
1668+
1669+
1670+
1671+
1672+
1673+
1674+
1675+
1676+
1677+
1678+
1679+
1680+
1681+<hr size="6">
1682+<a name="Replayer"></a>
1683+<table cellpadding="1" cellspacing="1" border="0">
1684+<tr><td valign="middle" align="left">[<a href="#Record-a-gnumeric-session-with-synchronisation-data" title="Previous section in reading order"> &lt; </a>]</td>
1685+<td valign="middle" align="left">[<a href="#Replay-mouse-motions" title="Next section in reading order"> &gt; </a>]</td>
1686+<td valign="middle" align="left"> &nbsp; </td>
1687+<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
1688+<td valign="middle" align="left">[<a href="#Examples" title="Up section"> Up </a>]</td>
1689+<td valign="middle" align="left">[<a href="#Programs" title="Next chapter"> &gt;&gt; </a>]</td>
1690+<td valign="middle" align="left"> &nbsp; </td>
1691+<td valign="middle" align="left"> &nbsp; </td>
1692+<td valign="middle" align="left"> &nbsp; </td>
1693+<td valign="middle" align="left"> &nbsp; </td>
1694+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
1695+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
1696+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
1697+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
1698+</tr></table>
1699+<h2 class="section">5.2 Replayer</h2>
1700+
1701+<hr size="6">
1702+<a name="Replay-mouse-motions"></a>
1703+<table cellpadding="1" cellspacing="1" border="0">
1704+<tr><td valign="middle" align="left">[<a href="#Replayer" title="Previous section in reading order"> &lt; </a>]</td>
1705+<td valign="middle" align="left">[<a href="#Replay-mouse-motions-using-with-half-speed" title="Next section in reading order"> &gt; </a>]</td>
1706+<td valign="middle" align="left"> &nbsp; </td>
1707+<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
1708+<td valign="middle" align="left">[<a href="#Replayer" title="Up section"> Up </a>]</td>
1709+<td valign="middle" align="left">[<a href="#Programs" title="Next chapter"> &gt;&gt; </a>]</td>
1710+<td valign="middle" align="left"> &nbsp; </td>
1711+<td valign="middle" align="left"> &nbsp; </td>
1712+<td valign="middle" align="left"> &nbsp; </td>
1713+<td valign="middle" align="left"> &nbsp; </td>
1714+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
1715+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
1716+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
1717+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
1718+</tr></table>
1719+<h3 class="subsection">5.2.1 Replay mouse motions</h3>
1720+<a name="index-replay-mouse-motions"></a>
1721+<p>Replay mouse motions as found in the file mouse-rec.xnl.
1722+</p><table><tr><td>&nbsp;</td><td><pre class="example"> <code>cnee --replay --file mouse-rec.xnl</code>
1723+</pre></td></tr></table>
1724+<p>Xnee will now imitate exactly what you did when you recorded this file.
1725+</p>
1726+<hr size="6">
1727+<a name="Replay-mouse-motions-using-with-half-speed"></a>
1728+<table cellpadding="1" cellspacing="1" border="0">
1729+<tr><td valign="middle" align="left">[<a href="#Replay-mouse-motions" title="Previous section in reading order"> &lt; </a>]</td>
1730+<td valign="middle" align="left">[<a href="#Replay-mouse-motions-using-with-double-speed" title="Next section in reading order"> &gt; </a>]</td>
1731+<td valign="middle" align="left"> &nbsp; </td>
1732+<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
1733+<td valign="middle" align="left">[<a href="#Replayer" title="Up section"> Up </a>]</td>
1734+<td valign="middle" align="left">[<a href="#Programs" title="Next chapter"> &gt;&gt; </a>]</td>
1735+<td valign="middle" align="left"> &nbsp; </td>
1736+<td valign="middle" align="left"> &nbsp; </td>
1737+<td valign="middle" align="left"> &nbsp; </td>
1738+<td valign="middle" align="left"> &nbsp; </td>
1739+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
1740+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
1741+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
1742+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
1743+</tr></table>
1744+<h3 class="subsection">5.2.2 Replay mouse motions using with half speed</h3>
1745+<a name="index-replay-using-half-speed"></a>
1746+<p>Replay mouse motions as found in the file mouse-rec.xnl but with the
1747+speed set to 50% of the recorded.
1748+</p><table><tr><td>&nbsp;</td><td><pre class="example"> <code>cnee --replay --file mouse-rec.xnl --speed-percent 50</code>
1749+</pre></td></tr></table>
1750+<p>Xnee will now imitate exactly what you did when you recorded this file,
1751+allthough it will be done in 50% of the recorded time.
1752+</p>
1753+<hr size="6">
1754+<a name="Replay-mouse-motions-using-with-double-speed"></a>
1755+<table cellpadding="1" cellspacing="1" border="0">
1756+<tr><td valign="middle" align="left">[<a href="#Replay-mouse-motions-using-with-half-speed" title="Previous section in reading order"> &lt; </a>]</td>
1757+<td valign="middle" align="left">[<a href="#Replay-keyboard-actions" title="Next section in reading order"> &gt; </a>]</td>
1758+<td valign="middle" align="left"> &nbsp; </td>
1759+<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
1760+<td valign="middle" align="left">[<a href="#Replayer" title="Up section"> Up </a>]</td>
1761+<td valign="middle" align="left">[<a href="#Programs" title="Next chapter"> &gt;&gt; </a>]</td>
1762+<td valign="middle" align="left"> &nbsp; </td>
1763+<td valign="middle" align="left"> &nbsp; </td>
1764+<td valign="middle" align="left"> &nbsp; </td>
1765+<td valign="middle" align="left"> &nbsp; </td>
1766+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
1767+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
1768+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
1769+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
1770+</tr></table>
1771+<h3 class="subsection">5.2.3 Replay mouse motions using with double speed</h3>
1772+<a name="index-replay-using-double-speed"></a>
1773+<p>Replay mouse motions as found in the file mouse-rec.xnl but with the
1774+speed set to 200% of the recorded.
1775+</p><table><tr><td>&nbsp;</td><td><pre class="example"> <code>cnee --replay --file mouse-rec.xnl --speed-percent 200</code>
1776+</pre></td></tr></table>
1777+<p>Xnee will now imitate exactly what you did when you recorded this file,
1778+allthough it will be done twice as fast as when recorded.
1779+</p>
1780+<hr size="6">
1781+<a name="Replay-keyboard-actions"></a>
1782+<table cellpadding="1" cellspacing="1" border="0">
1783+<tr><td valign="middle" align="left">[<a href="#Replay-mouse-motions-using-with-double-speed" title="Previous section in reading order"> &lt; </a>]</td>
1784+<td valign="middle" align="left">[<a href="#Replay-keyboard-and-mouse" title="Next section in reading order"> &gt; </a>]</td>
1785+<td valign="middle" align="left"> &nbsp; </td>
1786+<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
1787+<td valign="middle" align="left">[<a href="#Replayer" title="Up section"> Up </a>]</td>
1788+<td valign="middle" align="left">[<a href="#Programs" title="Next chapter"> &gt;&gt; </a>]</td>
1789+<td valign="middle" align="left"> &nbsp; </td>
1790+<td valign="middle" align="left"> &nbsp; </td>
1791+<td valign="middle" align="left"> &nbsp; </td>
1792+<td valign="middle" align="left"> &nbsp; </td>
1793+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
1794+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
1795+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
1796+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
1797+</tr></table>
1798+<h3 class="subsection">5.2.4 Replay keyboard actions</h3>
1799+<a name="index-Replay-keyboard-actions"></a>
1800+<p>Replay keyboard events from file kbd-rec.xnl.
1801+</p><table><tr><td>&nbsp;</td><td><pre class="example"> <code>cnee --replay --file kbd-rec.xnl</code>
1802+</pre></td></tr></table>
1803+<p>After having typed this Xnee replays all your keyboard actions. After Xnee
1804+has exited you will be able to replay your keyboard actions.
1805+</p>
1806+
1807+
1808+<hr size="6">
1809+<a name="Replay-keyboard-and-mouse"></a>
1810+<table cellpadding="1" cellspacing="1" border="0">
1811+<tr><td valign="middle" align="left">[<a href="#Replay-keyboard-actions" title="Previous section in reading order"> &lt; </a>]</td>
1812+<td valign="middle" align="left">[<a href="#Replay-a-gnumeric-session" title="Next section in reading order"> &gt; </a>]</td>
1813+<td valign="middle" align="left"> &nbsp; </td>
1814+<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
1815+<td valign="middle" align="left">[<a href="#Replayer" title="Up section"> Up </a>]</td>
1816+<td valign="middle" align="left">[<a href="#Programs" title="Next chapter"> &gt;&gt; </a>]</td>
1817+<td valign="middle" align="left"> &nbsp; </td>
1818+<td valign="middle" align="left"> &nbsp; </td>
1819+<td valign="middle" align="left"> &nbsp; </td>
1820+<td valign="middle" align="left"> &nbsp; </td>
1821+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
1822+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
1823+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
1824+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
1825+</tr></table>
1826+<h3 class="subsection">5.2.5 Replay keyboard and mouse</h3>
1827+<a name="index-Replay-keyboard-and-mouse"></a>
1828+<p>Replay keyboard and mouse from the file km-rec.xnl.
1829+</p><table><tr><td>&nbsp;</td><td><pre class="example"> <code>cnee --replay --keyboard --mouse --file kbd-rec.xnl</code>
1830+</pre></td></tr></table>
1831+<p>After having typed this Xnee replays all your keyboard and mouse actions.
1832+Xnee moves your pointer and writes the the same stuff as you did when
1833+recording.
1834+</p>
1835+
1836+
1837+<hr size="6">
1838+<a name="Replay-a-gnumeric-session"></a>
1839+<table cellpadding="1" cellspacing="1" border="0">
1840+<tr><td valign="middle" align="left">[<a href="#Replay-keyboard-and-mouse" title="Previous section in reading order"> &lt; </a>]</td>
1841+<td valign="middle" align="left">[<a href="#Replay-a-gnumeric-session-with-synchronisation-data" title="Next section in reading order"> &gt; </a>]</td>
1842+<td valign="middle" align="left"> &nbsp; </td>
1843+<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
1844+<td valign="middle" align="left">[<a href="#Replayer" title="Up section"> Up </a>]</td>
1845+<td valign="middle" align="left">[<a href="#Programs" title="Next chapter"> &gt;&gt; </a>]</td>
1846+<td valign="middle" align="left"> &nbsp; </td>
1847+<td valign="middle" align="left"> &nbsp; </td>
1848+<td valign="middle" align="left"> &nbsp; </td>
1849+<td valign="middle" align="left"> &nbsp; </td>
1850+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
1851+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
1852+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
1853+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
1854+</tr></table>
1855+<h3 class="subsection">5.2.6 Replay a gnumeric session</h3>
1856+<a name="index-Replay-a-gnumeric-session"></a>
1857+<p>Replay the gnumeric session above
1858+<br>
1859+Start a terminal emulator (e.g xterm)
1860+<code>xterm&amp;</code>
1861+Start a new fresh gnumeric spreadsheet
1862+<code>gnumeric&amp;</code>
1863+</p>
1864+<p>Start Xnee
1865+</p><table><tr><td>&nbsp;</td><td><pre class="example"> <code>cnee --replay --file gnumeric.xnl</code>
1866+</pre></td></tr></table>
1867+<p>Xnee will now do the same stuff you did when recording. It may happen
1868+that some user actions are replayed to early. This is so because Xnee has
1869+no way of knowing if it is in sync with the recorded session.
1870+</p>
1871+
1872+
1873+
1874+<hr size="6">
1875+<a name="Replay-a-gnumeric-session-with-synchronisation-data"></a>
1876+<table cellpadding="1" cellspacing="1" border="0">
1877+<tr><td valign="middle" align="left">[<a href="#Replay-a-gnumeric-session" title="Previous section in reading order"> &lt; </a>]</td>
1878+<td valign="middle" align="left">[<a href="#Replay-a-gnumeric-session-with-synchronisation-data-setting-threshold" title="Next section in reading order"> &gt; </a>]</td>
1879+<td valign="middle" align="left"> &nbsp; </td>
1880+<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
1881+<td valign="middle" align="left">[<a href="#Replayer" title="Up section"> Up </a>]</td>
1882+<td valign="middle" align="left">[<a href="#Programs" title="Next chapter"> &gt;&gt; </a>]</td>
1883+<td valign="middle" align="left"> &nbsp; </td>
1884+<td valign="middle" align="left"> &nbsp; </td>
1885+<td valign="middle" align="left"> &nbsp; </td>
1886+<td valign="middle" align="left"> &nbsp; </td>
1887+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
1888+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
1889+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
1890+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
1891+</tr></table>
1892+<h3 class="subsection">5.2.7 Replay a gnumeric session with synchronisation data</h3>
1893+<a name="index-Replay-a-gnumeric-session-with-synchronisation-data"></a>
1894+<p>Replay the second gnumeric session above.
1895+<br>
1896+Start a terminal emulator (e.g xterm)
1897+<code>xterm&amp;</code>
1898+Start a new fresh gnumeric spreadsheet
1899+<code>gnumeric&amp;</code>
1900+</p>
1901+
1902+<p>Start Xnee
1903+</p><table><tr><td>&nbsp;</td><td><pre class="example"> <code>cnee --replay --file gnumeric2.xnl</code>
1904+</pre></td></tr></table>
1905+<p>Xnee will now do the same stuff you did when recording. It may happen
1906+that the replaying slows down. This is because Xnee is currently out of sync.
1907+When being out of sync Xnee slows down a bit and checks the thresholds if it
1908+is allowed to continue. Xnee will most probably find itself in sync after
1909+a short while. All recorded user actions should have occured the same way
1910+as when recording.
1911+</p>
1912+
1913+<hr size="6">
1914+<a name="Replay-a-gnumeric-session-with-synchronisation-data-setting-threshold"></a>
1915+<table cellpadding="1" cellspacing="1" border="0">
1916+<tr><td valign="middle" align="left">[<a href="#Replay-a-gnumeric-session-with-synchronisation-data" title="Previous section in reading order"> &lt; </a>]</td>
1917+<td valign="middle" align="left">[<a href="#Retyper" title="Next section in reading order"> &gt; </a>]</td>
1918+<td valign="middle" align="left"> &nbsp; </td>
1919+<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
1920+<td valign="middle" align="left">[<a href="#Replayer" title="Up section"> Up </a>]</td>
1921+<td valign="middle" align="left">[<a href="#Programs" title="Next chapter"> &gt;&gt; </a>]</td>
1922+<td valign="middle" align="left"> &nbsp; </td>
1923+<td valign="middle" align="left"> &nbsp; </td>
1924+<td valign="middle" align="left"> &nbsp; </td>
1925+<td valign="middle" align="left"> &nbsp; </td>
1926+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
1927+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
1928+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
1929+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
1930+</tr></table>
1931+<h3 class="subsection">5.2.8 Replay a gnumeric session with synchronisation data setting threshold</h3>
1932+<a name="index-Replay-a-gnumeric-session-with-synchronisation-data-setting-threshold"></a>
1933+<p>Replay the second gnumeric session above.
1934+<br>
1935+Start a terminal emulator (e.g xterm)
1936+<code>xterm&amp;</code>
1937+Start a new fresh gnumeric spreadsheet
1938+<code>gnumeric&amp;</code>
1939+</p>
1940+
1941+<hr size="6">
1942+<a name="Retyper"></a>
1943+<table cellpadding="1" cellspacing="1" border="0">
1944+<tr><td valign="middle" align="left">[<a href="#Replay-a-gnumeric-session-with-synchronisation-data-setting-threshold" title="Previous section in reading order"> &lt; </a>]</td>
1945+<td valign="middle" align="left">[<a href="#Retype-the-help-printout" title="Next section in reading order"> &gt; </a>]</td>
1946+<td valign="middle" align="left"> &nbsp; </td>
1947+<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
1948+<td valign="middle" align="left">[<a href="#Examples" title="Up section"> Up </a>]</td>
1949+<td valign="middle" align="left">[<a href="#Programs" title="Next chapter"> &gt;&gt; </a>]</td>
1950+<td valign="middle" align="left"> &nbsp; </td>
1951+<td valign="middle" align="left"> &nbsp; </td>
1952+<td valign="middle" align="left"> &nbsp; </td>
1953+<td valign="middle" align="left"> &nbsp; </td>
1954+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
1955+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
1956+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
1957+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
1958+</tr></table>
1959+<h2 class="section">5.3 Retyper</h2>
1960+
1961+<hr size="6">
1962+<a name="Retype-the-help-printout"></a>
1963+<table cellpadding="1" cellspacing="1" border="0">
1964+<tr><td valign="middle" align="left">[<a href="#Retyper" title="Previous section in reading order"> &lt; </a>]</td>
1965+<td valign="middle" align="left">[<a href="#Retype-a-file" title="Next section in reading order"> &gt; </a>]</td>
1966+<td valign="middle" align="left"> &nbsp; </td>
1967+<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
1968+<td valign="middle" align="left">[<a href="#Retyper" title="Up section"> Up </a>]</td>
1969+<td valign="middle" align="left">[<a href="#Programs" title="Next chapter"> &gt;&gt; </a>]</td>
1970+<td valign="middle" align="left"> &nbsp; </td>
1971+<td valign="middle" align="left"> &nbsp; </td>
1972+<td valign="middle" align="left"> &nbsp; </td>
1973+<td valign="middle" align="left"> &nbsp; </td>
1974+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
1975+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
1976+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
1977+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
1978+</tr></table>
1979+<h3 class="subsection">5.3.1 Retype the help printout</h3>
1980+<a name="index-Retype-the-help-printout"></a>
1981+<p>If you want Xnee to fake a user typing the help printout from xnee
1982+you can use the <code>--type-help</code> option.
1983+<br>
1984+Start a terminal emulator (e.g xterm) and an editor (e.g emacs).
1985+</p><table><tr><td>&nbsp;</td><td><pre class="example"><code>xterm &amp;</code>
1986+</pre></td></tr></table>
1987+<table><tr><td>&nbsp;</td><td><pre class="example"><code>emacs &amp;</code>
1988+</pre></td></tr></table>
1989+<p>Retype the help printout by starting xnee with a 10 seconds delay delay.
1990+</p><table><tr><td>&nbsp;</td><td><pre class="example"><code>cnee --time 10 --type-help</code>
1991+</pre></td></tr></table>
1992+<p>Move your mouse to the editor and make the editor have focus.
1993+Wait a few seconds and xnee will type the help. You will now also have a
1994+copy of help text.
1995+</p>
1996+
1997+<hr size="6">
1998+<a name="Retype-a-file"></a>
1999+<table cellpadding="1" cellspacing="1" border="0">
2000+<tr><td valign="middle" align="left">[<a href="#Retype-the-help-printout" title="Previous section in reading order"> &lt; </a>]</td>
2001+<td valign="middle" align="left">[<a href="#Distributor" title="Next section in reading order"> &gt; </a>]</td>
2002+<td valign="middle" align="left"> &nbsp; </td>
2003+<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
2004+<td valign="middle" align="left">[<a href="#Retyper" title="Up section"> Up </a>]</td>
2005+<td valign="middle" align="left">[<a href="#Programs" title="Next chapter"> &gt;&gt; </a>]</td>
2006+<td valign="middle" align="left"> &nbsp; </td>
2007+<td valign="middle" align="left"> &nbsp; </td>
2008+<td valign="middle" align="left"> &nbsp; </td>
2009+<td valign="middle" align="left"> &nbsp; </td>
2010+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
2011+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
2012+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
2013+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
2014+</tr></table>
2015+<h3 class="subsection">5.3.2 Retype a file</h3>
2016+<a name="index-Retype-a-file"></a>
2017+<p>If you want Xnee to fake a user typing the letters as found in a text
2018+file you can use the retype mode. Note that it isn&rsquo;t possible to retype all
2019+characters yet. This will be implemented as soon as possible. We&rsquo;ll give
2020+an example on how to use this mode.
2021+<br>
2022+Start a terminal emulator (e.g xterm)
2023+</p><table><tr><td>&nbsp;</td><td><pre class="example"><code>xterm &amp;</code>
2024+</pre></td></tr></table>
2025+<p>Create a text file
2026+</p><table><tr><td>&nbsp;</td><td><pre class="example"><code>echo &quot;Hi Xnee&quot; &gt; testfile.txt</code>
2027+</pre></td></tr></table>
2028+
2029+<p>Retype the contents of this file to another file by starting xnee
2030+with a 10 seconds delay delay.
2031+</p><table><tr><td>&nbsp;</td><td><pre class="example"><code>cnee --time 10 --retype-file testfile.txt</code>
2032+</pre></td></tr></table>
2033+<p>Start the fabulous editor <code>cat</code>
2034+</p><table><tr><td>&nbsp;</td><td><pre class="example"><code>cat &gt; copiedfile.txt</code>
2035+</pre></td></tr></table>
2036+<p>Wait a few seconds and xnee will retype the letters in the file
2037+<code>testfile.txt</code>. You will now also have a copy of that file.
2038+The copy is called copiedfile.txt. This is a realy a stupid way
2039+to copy a file but this option opens up a few possibilities.
2040+</p>
2041+
2042+
2043+<hr size="6">
2044+<a name="Distributor"></a>
2045+<table cellpadding="1" cellspacing="1" border="0">
2046+<tr><td valign="middle" align="left">[<a href="#Retype-a-file" title="Previous section in reading order"> &lt; </a>]</td>
2047+<td valign="middle" align="left">[<a href="#Distribute-your-mouse-motions" title="Next section in reading order"> &gt; </a>]</td>
2048+<td valign="middle" align="left"> &nbsp; </td>
2049+<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
2050+<td valign="middle" align="left">[<a href="#Examples" title="Up section"> Up </a>]</td>
2051+<td valign="middle" align="left">[<a href="#Programs" title="Next chapter"> &gt;&gt; </a>]</td>
2052+<td valign="middle" align="left"> &nbsp; </td>
2053+<td valign="middle" align="left"> &nbsp; </td>
2054+<td valign="middle" align="left"> &nbsp; </td>
2055+<td valign="middle" align="left"> &nbsp; </td>
2056+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
2057+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
2058+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
2059+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
2060+</tr></table>
2061+<h2 class="section">5.4 Distributor</h2>
2062+<p>With the distribution mode Xnee can send your device events to
2063+multiple displays.
2064+</p>
2065+<hr size="6">
2066+<a name="Distribute-your-mouse-motions"></a>
2067+<table cellpadding="1" cellspacing="1" border="0">
2068+<tr><td valign="middle" align="left">[<a href="#Distributor" title="Previous section in reading order"> &lt; </a>]</td>
2069+<td valign="middle" align="left">[<a href="#Distribute-the-replaying-of-mouse-motions" title="Next section in reading order"> &gt; </a>]</td>
2070+<td valign="middle" align="left"> &nbsp; </td>
2071+<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
2072+<td valign="middle" align="left">[<a href="#Distributor" title="Up section"> Up </a>]</td>
2073+<td valign="middle" align="left">[<a href="#Programs" title="Next chapter"> &gt;&gt; </a>]</td>
2074+<td valign="middle" align="left"> &nbsp; </td>
2075+<td valign="middle" align="left"> &nbsp; </td>
2076+<td valign="middle" align="left"> &nbsp; </td>
2077+<td valign="middle" align="left"> &nbsp; </td>
2078+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
2079+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
2080+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
2081+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
2082+</tr></table>
2083+<h3 class="subsection">5.4.1 Distribute your mouse motions</h3>
2084+<a name="index-Distribute-your-mouse-motions"></a>
2085+<p>You can distribute your mouse motions to the displays frodo:0.0 and
2086+sam:0.0
2087+<br>
2088+Start a terminal emulator (e.g xterm)
2089+</p><table><tr><td>&nbsp;</td><td><pre class="example"><code>xterm &amp;</code>
2090+</pre></td></tr></table>
2091+<p>Start xnee
2092+</p><table><tr><td>&nbsp;</td><td><pre class="example"><code>cnee --distribute frodo:0,sam:0.0</code>
2093+<code> --record --mouse</code>
2094+</pre></td></tr></table>
2095+
2096+<p>If you have setup authority correct on frodo and sam you will
2097+see all you mouse motions being done on those displays as well.
2098+</p>
2099+
2100+<hr size="6">
2101+<a name="Distribute-the-replaying-of-mouse-motions"></a>
2102+<table cellpadding="1" cellspacing="1" border="0">
2103+<tr><td valign="middle" align="left">[<a href="#Distribute-your-mouse-motions" title="Previous section in reading order"> &lt; </a>]</td>
2104+<td valign="middle" align="left">[<a href="#Distribute-the-retyping-of-a-file" title="Next section in reading order"> &gt; </a>]</td>
2105+<td valign="middle" align="left"> &nbsp; </td>
2106+<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
2107+<td valign="middle" align="left">[<a href="#Distributor" title="Up section"> Up </a>]</td>
2108+<td valign="middle" align="left">[<a href="#Programs" title="Next chapter"> &gt;&gt; </a>]</td>
2109+<td valign="middle" align="left"> &nbsp; </td>
2110+<td valign="middle" align="left"> &nbsp; </td>
2111+<td valign="middle" align="left"> &nbsp; </td>
2112+<td valign="middle" align="left"> &nbsp; </td>
2113+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
2114+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
2115+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
2116+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
2117+</tr></table>
2118+<h3 class="subsection">5.4.2 Distribute the replaying of mouse motions</h3>
2119+<a name="index-Distribute-the-replaying-of-mouse-motions"></a>
2120+<p>Replay and distribute mouse motions as found in the file
2121+<code>mouse-rec.xnl</code>.
2122+</p><table><tr><td>&nbsp;</td><td><pre class="example"> <code>cnee --replay --file mouse-rec.xnl</code>
2123+ <code> --distribute frodo:0,sam:0.0</code>
2124+</pre></td></tr></table>
2125+<p>Xnee will now imitate exactly what you did when you recorded this file on
2126+your host as well on frodo and sam.
2127+</p>
2128+
2129+
2130+<hr size="6">
2131+<a name="Distribute-the-retyping-of-a-file"></a>
2132+<table cellpadding="1" cellspacing="1" border="0">
2133+<tr><td valign="middle" align="left">[<a href="#Distribute-the-replaying-of-mouse-motions" title="Previous section in reading order"> &lt; </a>]</td>
2134+<td valign="middle" align="left">[<a href="#Key" title="Next section in reading order"> &gt; </a>]</td>
2135+<td valign="middle" align="left"> &nbsp; </td>
2136+<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
2137+<td valign="middle" align="left">[<a href="#Distributor" title="Up section"> Up </a>]</td>
2138+<td valign="middle" align="left">[<a href="#Programs" title="Next chapter"> &gt;&gt; </a>]</td>
2139+<td valign="middle" align="left"> &nbsp; </td>
2140+<td valign="middle" align="left"> &nbsp; </td>
2141+<td valign="middle" align="left"> &nbsp; </td>
2142+<td valign="middle" align="left"> &nbsp; </td>
2143+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
2144+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
2145+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
2146+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
2147+</tr></table>
2148+<h3 class="subsection">5.4.3 Distribute the retyping of a file</h3>
2149+<a name="index-Distribute-the-retyping-of-a-file"></a>
2150+<p>If you want Xnee to to distribute the fakeing of a user typing the
2151+letters as found in a text file you can use the retype mode together
2152+with the distribution mode.
2153+<br>
2154+Start a terminal emulator (e.g xterm) on each of the hosts
2155+</p><table><tr><td>&nbsp;</td><td><pre class="example"><code>xterm &amp;</code>
2156+</pre></td></tr></table>
2157+<p>Create a text file.
2158+</p><table><tr><td>&nbsp;</td><td><pre class="example"><code>echo &quot;Hi again Xnee&quot; &gt; distfile.txt</code>
2159+</pre></td></tr></table>
2160+
2161+<p>Retype the contents of this file to another file by starting xnee
2162+with a 10 seconds delay delay.
2163+</p><table><tr><td>&nbsp;</td><td><pre class="example"><code>cnee --time 10 --retype-file distfile.txt</code>
2164+<code> --distribute frodo:0,sam:0.0 </code>
2165+</pre></td></tr></table>
2166+<p>Start the fabulous editor <code>cat</code> on the terminal emulators on each the
2167+terminals.
2168+</p><table><tr><td>&nbsp;</td><td><pre class="example"><code>cat &gt; copiedfile.txt</code>
2169+</pre></td></tr></table>
2170+<br>
2171+<p>If you have setup authority correct on frodo and sam you will, after
2172+a few seconds, see xnee retype the letters in the file
2173+<code>distfile.txt</code>. You will now also have three copies of that file.
2174+On copy on each host. The copy is called copiedfile.txt. This might
2175+seem like a stupid way to copy a file to three locations but this
2176+is just an example.
2177+</p>
2178+
2179+
2180+
2181+<hr size="6">
2182+<a name="Key"></a>
2183+<table cellpadding="1" cellspacing="1" border="0">
2184+<tr><td valign="middle" align="left">[<a href="#Distribute-the-retyping-of-a-file" title="Previous section in reading order"> &lt; </a>]</td>
2185+<td valign="middle" align="left">[<a href="#Stop-Xnee-with-key" title="Next section in reading order"> &gt; </a>]</td>
2186+<td valign="middle" align="left"> &nbsp; </td>
2187+<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
2188+<td valign="middle" align="left">[<a href="#Examples" title="Up section"> Up </a>]</td>
2189+<td valign="middle" align="left">[<a href="#Programs" title="Next chapter"> &gt;&gt; </a>]</td>
2190+<td valign="middle" align="left"> &nbsp; </td>
2191+<td valign="middle" align="left"> &nbsp; </td>
2192+<td valign="middle" align="left"> &nbsp; </td>
2193+<td valign="middle" align="left"> &nbsp; </td>
2194+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
2195+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
2196+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
2197+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
2198+</tr></table>
2199+<h2 class="section">5.5 Key</h2>
2200+
2201+<hr size="6">
2202+<a name="Stop-Xnee-with-key"></a>
2203+<table cellpadding="1" cellspacing="1" border="0">
2204+<tr><td valign="middle" align="left">[<a href="#Key" title="Previous section in reading order"> &lt; </a>]</td>
2205+<td valign="middle" align="left">[<a href="#Pausing-and-resuming-Xnee-with-key" title="Next section in reading order"> &gt; </a>]</td>
2206+<td valign="middle" align="left"> &nbsp; </td>
2207+<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
2208+<td valign="middle" align="left">[<a href="#Key" title="Up section"> Up </a>]</td>
2209+<td valign="middle" align="left">[<a href="#Programs" title="Next chapter"> &gt;&gt; </a>]</td>
2210+<td valign="middle" align="left"> &nbsp; </td>
2211+<td valign="middle" align="left"> &nbsp; </td>
2212+<td valign="middle" align="left"> &nbsp; </td>
2213+<td valign="middle" align="left"> &nbsp; </td>
2214+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
2215+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
2216+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
2217+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
2218+</tr></table>
2219+<h3 class="subsection">5.5.1 Stop Xnee with key</h3>
2220+<a name="index-Stop-Xnee-with-key"></a>
2221+<p>You can stop xnee by specifying a key. Make
2222+sure that this key isn&rsquo;t grabbed by another X client (e.g by the
2223+Window Manager). Let&rsquo;s say that you want Xnee to stop recording if you press
2224+Control and h.
2225+</p><table><tr><td>&nbsp;</td><td><pre class="example"> <code>cnee --record --mouse --events-to-record -1 --stop-key h</code>
2226+</pre></td></tr></table>
2227+<p>This will make xnee record mouse events until you press h.
2228+All printouts are done to stdout so you can see that Xnee stops when you
2229+press the key.
2230+<br>
2231+Move your mouse for a while and you&rsquo;ll see xnee print out lots of lines.
2232+<br>
2233+Press h.
2234+<br>
2235+Xnee will now have stopped recording.
2236+</p>
2237+
2238+<hr size="6">
2239+<a name="Pausing-and-resuming-Xnee-with-key"></a>
2240+<table cellpadding="1" cellspacing="1" border="0">
2241+<tr><td valign="middle" align="left">[<a href="#Stop-Xnee-with-key" title="Previous section in reading order"> &lt; </a>]</td>
2242+<td valign="middle" align="left">[<a href="#Using-macro" title="Next section in reading order"> &gt; </a>]</td>
2243+<td valign="middle" align="left"> &nbsp; </td>
2244+<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
2245+<td valign="middle" align="left">[<a href="#Key" title="Up section"> Up </a>]</td>
2246+<td valign="middle" align="left">[<a href="#Programs" title="Next chapter"> &gt;&gt; </a>]</td>
2247+<td valign="middle" align="left"> &nbsp; </td>
2248+<td valign="middle" align="left"> &nbsp; </td>
2249+<td valign="middle" align="left"> &nbsp; </td>
2250+<td valign="middle" align="left"> &nbsp; </td>
2251+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
2252+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
2253+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
2254+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
2255+</tr></table>
2256+<h3 class="subsection">5.5.2 Pausing and resuming Xnee with key</h3>
2257+<a name="index-Pausing-and-resuming-Xnee-with-key"></a>
2258+<p>You can pause and resum xnee by specifying a key.
2259+Make sure that this key isn&rsquo;t grabbed by another X client (e.g by
2260+the Window Manager). Let&rsquo;s say that you want Xnee to pause recording if you
2261+press p and to resume when pressing Comntrol and r.
2262+</p><table><tr><td>&nbsp;</td><td><pre class="example"> <code>cnee --record --mouse --events-to-record -1 --pause-key p \</code>
2263+ <code>--resume-key r</code>
2264+</pre></td></tr></table>
2265+<p>This will make xnee record mouse events until you press p.
2266+All printouts are done to stdout so you can see that Xnee stops when you
2267+press the key.
2268+<br>
2269+Move your mouse for a while and you&rsquo;ll see xnee print out lots of lines.
2270+<br>
2271+Press p.
2272+<br>
2273+Xnee will now have paused recording. Move your mouse for a while and note that
2274+nothing is printed.
2275+<br>
2276+Press r.
2277+<br>
2278+Xnee will now have resumed recording. Move your mouse for a while and note that
2279+xnee begins its printouts.
2280+</p>
2281+
2282+<hr size="6">
2283+<a name="Using-macro"></a>
2284+<table cellpadding="1" cellspacing="1" border="0">
2285+<tr><td valign="middle" align="left">[<a href="#Pausing-and-resuming-Xnee-with-key" title="Previous section in reading order"> &lt; </a>]</td>
2286+<td valign="middle" align="left">[<a href="#Define-a-simple-macro" title="Next section in reading order"> &gt; </a>]</td>
2287+<td valign="middle" align="left"> &nbsp; </td>
2288+<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
2289+<td valign="middle" align="left">[<a href="#Examples" title="Up section"> Up </a>]</td>
2290+<td valign="middle" align="left">[<a href="#Programs" title="Next chapter"> &gt;&gt; </a>]</td>
2291+<td valign="middle" align="left"> &nbsp; </td>
2292+<td valign="middle" align="left"> &nbsp; </td>
2293+<td valign="middle" align="left"> &nbsp; </td>
2294+<td valign="middle" align="left"> &nbsp; </td>
2295+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
2296+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
2297+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
2298+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
2299+</tr></table>
2300+<h2 class="section">5.6 Using macro</h2>
2301+<p>Macors can be used in various applications allthough many applicaions have
2302+a macro functionality built in (e.g emacs).
2303+</p>
2304+<hr size="6">
2305+<a name="Define-a-simple-macro"></a>
2306+<table cellpadding="1" cellspacing="1" border="0">
2307+<tr><td valign="middle" align="left">[<a href="#Using-macro" title="Previous section in reading order"> &lt; </a>]</td>
2308+<td valign="middle" align="left">[<a href="#Define-another-simple-macro" title="Next section in reading order"> &gt; </a>]</td>
2309+<td valign="middle" align="left"> &nbsp; </td>
2310+<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
2311+<td valign="middle" align="left">[<a href="#Using-macro" title="Up section"> Up </a>]</td>
2312+<td valign="middle" align="left">[<a href="#Programs" title="Next chapter"> &gt;&gt; </a>]</td>
2313+<td valign="middle" align="left"> &nbsp; </td>
2314+<td valign="middle" align="left"> &nbsp; </td>
2315+<td valign="middle" align="left"> &nbsp; </td>
2316+<td valign="middle" align="left"> &nbsp; </td>
2317+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
2318+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
2319+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
2320+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
2321+</tr></table>
2322+<h3 class="subsection">5.6.1 Define a simple macro</h3>
2323+<a name="index-Define-a-simple-macro"></a>
2324+<p>There are plenty of tools that bind a key combination to
2325+different actions. For various reasons the author of this manual is familliar
2326+with xrebind so we will use xrebind in this example.
2327+<br>
2328+The first thing to do is to decide which key combination to tie
2329+to the wanted action. Let&rsquo;s say we want to use one of the funtion keys, F1.
2330+We then have to find out which keycode belongs to that key. The action we will
2331+bind to this key combination will be the replaying of a recorded
2332+session from the previous examples.
2333+<br>
2334+We use Xnee to find the keycode for F1. Start xnee.
2335+</p><table><tr><td>&nbsp;</td><td><pre class="example"> <code>cnee --record --keyboard --events-to-record 20</code>
2336+</pre></td></tr></table>
2337+<p>Press the F1 key and see what number was printed out. It will look something
2338+like this:
2339+</p><table><tr><td>&nbsp;</td><td><pre class="example"><code>0,2,0,0,0,67,0,90300078</code>
2340+<code>0,3,0,0,0,67,0,90300156</code>
2341+</pre></td></tr></table>
2342+<p>The interesting part here is the 6th column. In our example we find 67, which
2343+is the keycode for F1.
2344+<br>
2345+Now we move on to setup xrebind to grab F1 and bind that to replay the
2346+mouse motions from the file <code>mouse-rec.xnl</code>. Open or create a new file
2347+in your home directory called <code>.xrbrc</code> and add the lines.
2348+</p><table><tr><td>&nbsp;</td><td><pre class="example"><code>XrebindGrab</code>
2349+<code>{</code>
2350+<code> Action = Execute</code>
2351+<code> GrabKeycode = 67</code>
2352+<code> Modifier = AnyModifier</code>
2353+<code> Command = xnee --replay --file mouse-rec.xnl</code>
2354+<code> Comment = Starting xnee replay</code>
2355+<code> AutoRepeat = false</code>
2356+<code> Fork = true</code>
2357+<code>}</code>
2358+</pre></td></tr></table>
2359+<p>Let&rsquo;s try it. Start xrebind with verbose printouts.
2360+</p><table><tr><td>&nbsp;</td><td><pre class="example"><code>xrebind --verbose</code>
2361+</pre></td></tr></table>
2362+<p>Press F1 and the recorded session from the previous example shall be replayed. You
2363+can also see in the verbose printouts that xrebind executes xnee.
2364+</p>
2365+
2366+<hr size="6">
2367+<a name="Define-another-simple-macro"></a>
2368+<table cellpadding="1" cellspacing="1" border="0">
2369+<tr><td valign="middle" align="left">[<a href="#Define-a-simple-macro" title="Previous section in reading order"> &lt; </a>]</td>
2370+<td valign="middle" align="left">[<a href="#Various-options" title="Next section in reading order"> &gt; </a>]</td>
2371+<td valign="middle" align="left"> &nbsp; </td>
2372+<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
2373+<td valign="middle" align="left">[<a href="#Using-macro" title="Up section"> Up </a>]</td>
2374+<td valign="middle" align="left">[<a href="#Programs" title="Next chapter"> &gt;&gt; </a>]</td>
2375+<td valign="middle" align="left"> &nbsp; </td>
2376+<td valign="middle" align="left"> &nbsp; </td>
2377+<td valign="middle" align="left"> &nbsp; </td>
2378+<td valign="middle" align="left"> &nbsp; </td>
2379+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
2380+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
2381+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
2382+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
2383+</tr></table>
2384+<h3 class="subsection">5.6.2 Define another simple macro</h3>
2385+<a name="index-Define-another-simple-macro"></a>
2386+<p>Let&rsquo;s say we want to bind Control and e to execute the session as in the
2387+example above. This time setting up xrebind is a bit easier.
2388+<br>
2389+Setup xrebind to grab F1 and bind that to replay the
2390+mouse motions from the file <code>mouse-rec.xnl</code> by opening or create a
2391+new file in your home directory called <code>.xrbrc</code> and add the lines.
2392+</p><table><tr><td>&nbsp;</td><td><pre class="example"><code>XrebindGrab</code>
2393+<code>{</code>
2394+<code> Action = Execute</code>
2395+<code> GrabKey = e</code>
2396+<code> Modifier = Control</code>
2397+<code> Command = xnee --replay --file mouse-rec.xnl</code>
2398+<code> Comment = Starting xnee replay</code>
2399+<code> AutoRepeat = false</code>
2400+<code> Fork = true</code>
2401+<code>}</code>
2402+<code>e, Control, Exec, xnee, --replay --file mouse-rec.xnl, \</code>
2403+<code>Fork, NoAutoRepeat</code>
2404+</pre></td></tr></table>
2405+<p>Let&rsquo;s try it. Start xrebind with verbose printouts.
2406+</p><table><tr><td>&nbsp;</td><td><pre class="example"><code>xrebind --verbose</code>
2407+</pre></td></tr></table>
2408+<p>Press Control and e and the recorded session from the previous example
2409+shall be replayed.
2410+</p>
2411+
2412+
2413+
2414+
2415+
2416+
2417+
2418+
2419+
2420+
2421+
2422+<hr size="6">
2423+<a name="Various-options"></a>
2424+<table cellpadding="1" cellspacing="1" border="0">
2425+<tr><td valign="middle" align="left">[<a href="#Define-another-simple-macro" title="Previous section in reading order"> &lt; </a>]</td>
2426+<td valign="middle" align="left">[<a href="#Using-verbose-mode" title="Next section in reading order"> &gt; </a>]</td>
2427+<td valign="middle" align="left"> &nbsp; </td>
2428+<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
2429+<td valign="middle" align="left">[<a href="#Examples" title="Up section"> Up </a>]</td>
2430+<td valign="middle" align="left">[<a href="#Programs" title="Next chapter"> &gt;&gt; </a>]</td>
2431+<td valign="middle" align="left"> &nbsp; </td>
2432+<td valign="middle" align="left"> &nbsp; </td>
2433+<td valign="middle" align="left"> &nbsp; </td>
2434+<td valign="middle" align="left"> &nbsp; </td>
2435+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
2436+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
2437+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
2438+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
2439+</tr></table>
2440+<h2 class="section">5.7 Various options</h2>
2441+
2442+<hr size="6">
2443+<a name="Using-verbose-mode"></a>
2444+<table cellpadding="1" cellspacing="1" border="0">
2445+<tr><td valign="middle" align="left">[<a href="#Various-options" title="Previous section in reading order"> &lt; </a>]</td>
2446+<td valign="middle" align="left">[<a href="#Using-human-readable-printouts" title="Next section in reading order"> &gt; </a>]</td>
2447+<td valign="middle" align="left"> &nbsp; </td>
2448+<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
2449+<td valign="middle" align="left">[<a href="#Various-options" title="Up section"> Up </a>]</td>
2450+<td valign="middle" align="left">[<a href="#Programs" title="Next chapter"> &gt;&gt; </a>]</td>
2451+<td valign="middle" align="left"> &nbsp; </td>
2452+<td valign="middle" align="left"> &nbsp; </td>
2453+<td valign="middle" align="left"> &nbsp; </td>
2454+<td valign="middle" align="left"> &nbsp; </td>
2455+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
2456+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
2457+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
2458+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
2459+</tr></table>
2460+<h3 class="subsection">5.7.1 Using verbose mode</h3>
2461+<a name="index-Using-verbose-mode"></a>
2462+<p>To enable verbose mode, start xnee like this
2463+</p><table><tr><td>&nbsp;</td><td><pre class="example"><code>cnee --verbose --record --mouse</code>
2464+</pre></td></tr></table>
2465+<p>Move the mouse for a while and you&rsquo;ll lots of verbose printouts that
2466+usualy isn&rsquo;t there.
2467+</p>
2468+
2469+<hr size="6">
2470+<a name="Using-human-readable-printouts"></a>
2471+<table cellpadding="1" cellspacing="1" border="0">
2472+<tr><td valign="middle" align="left">[<a href="#Using-verbose-mode" title="Previous section in reading order"> &lt; </a>]</td>
2473+<td valign="middle" align="left">[<a href="#Using-a-differet-screen-resolution" title="Next section in reading order"> &gt; </a>]</td>
2474+<td valign="middle" align="left"> &nbsp; </td>
2475+<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
2476+<td valign="middle" align="left">[<a href="#Various-options" title="Up section"> Up </a>]</td>
2477+<td valign="middle" align="left">[<a href="#Programs" title="Next chapter"> &gt;&gt; </a>]</td>
2478+<td valign="middle" align="left"> &nbsp; </td>
2479+<td valign="middle" align="left"> &nbsp; </td>
2480+<td valign="middle" align="left"> &nbsp; </td>
2481+<td valign="middle" align="left"> &nbsp; </td>
2482+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
2483+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
2484+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
2485+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
2486+</tr></table>
2487+<h3 class="subsection">5.7.2 Using human readable printouts</h3>
2488+<a name="index-Using-human-readable-printouts"></a>
2489+<p>To enable human printout mode, start xnee like this
2490+</p><table><tr><td>&nbsp;</td><td><pre class="example"><code>cnee --human-printout --record --mouse</code>
2491+</pre></td></tr></table>
2492+<p>Move the mouse for a while and you&rsquo;ll see the data printed out in an almost
2493+human friendly format.
2494+</p>
2495+
2496+
2497+<hr size="6">
2498+<a name="Using-a-differet-screen-resolution"></a>
2499+<table cellpadding="1" cellspacing="1" border="0">
2500+<tr><td valign="middle" align="left">[<a href="#Using-human-readable-printouts" title="Previous section in reading order"> &lt; </a>]</td>
2501+<td valign="middle" align="left">[<a href="#Using-a-offset-when-replaying" title="Next section in reading order"> &gt; </a>]</td>
2502+<td valign="middle" align="left"> &nbsp; </td>
2503+<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
2504+<td valign="middle" align="left">[<a href="#Various-options" title="Up section"> Up </a>]</td>
2505+<td valign="middle" align="left">[<a href="#Programs" title="Next chapter"> &gt;&gt; </a>]</td>
2506+<td valign="middle" align="left"> &nbsp; </td>
2507+<td valign="middle" align="left"> &nbsp; </td>
2508+<td valign="middle" align="left"> &nbsp; </td>
2509+<td valign="middle" align="left"> &nbsp; </td>
2510+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
2511+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
2512+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
2513+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
2514+</tr></table>
2515+<h3 class="subsection">5.7.3 Using a differet screen resolution</h3>
2516+<a name="index-Using-a-differet-screen-resolution"></a>
2517+<p>If a session was recorded on a screen with another resolution than
2518+on the one where we replay the session xnee will translate all coordinates
2519+automagically. However, you can force xnee to use a specific resolution when
2520+replaying. To do this, start xnee like this
2521+</p><table><tr><td>&nbsp;</td><td><pre class="example"><code>cnee --replay --file mouse-rec.xnl \ </code>
2522+<code>--replay-resolution 800x600</code>
2523+</pre></td></tr></table>
2524+<p>Xnee will now replay the events recorded in the sessions file
2525+<code>mouse-rec.xnl</code> as if the screen has a resolution of 800x600.
2526+</p>
2527+
2528+<hr size="6">
2529+<a name="Using-a-offset-when-replaying"></a>
2530+<table cellpadding="1" cellspacing="1" border="0">
2531+<tr><td valign="middle" align="left">[<a href="#Using-a-differet-screen-resolution" title="Previous section in reading order"> &lt; </a>]</td>
2532+<td valign="middle" align="left">[<a href="#Using-a-window-position-recall" title="Next section in reading order"> &gt; </a>]</td>
2533+<td valign="middle" align="left"> &nbsp; </td>
2534+<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
2535+<td valign="middle" align="left">[<a href="#Various-options" title="Up section"> Up </a>]</td>
2536+<td valign="middle" align="left">[<a href="#Programs" title="Next chapter"> &gt;&gt; </a>]</td>
2537+<td valign="middle" align="left"> &nbsp; </td>
2538+<td valign="middle" align="left"> &nbsp; </td>
2539+<td valign="middle" align="left"> &nbsp; </td>
2540+<td valign="middle" align="left"> &nbsp; </td>
2541+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
2542+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
2543+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
2544+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
2545+</tr></table>
2546+<h3 class="subsection">5.7.4 Using a offset when replaying</h3>
2547+<a name="index-Using-a-offset-when-replaying"></a>
2548+<p>If a session was recording a centered window with a window manager
2549+and is to bo replayed without a window manager (still centered) you
2550+can use the offset switch to make Xnee replay the events in order to
2551+get the coordinates right.
2552+</p><table><tr><td>&nbsp;</td><td><pre class="example"><code>cnee --replay --file mouse-rec.xnl \ </code>
2553+<code>--replay-offset 12,-7</code>
2554+</pre></td></tr></table>
2555+<p>Xnee will now replay the events recorded in the sessions file
2556+<code>mouse-rec.xnl</code> and adding 12 to the x coordinate and subtract
2557+7 from the y coordinate.
2558+</p>
2559+
2560+<hr size="6">
2561+<a name="Using-a-window-position-recall"></a>
2562+<table cellpadding="1" cellspacing="1" border="0">
2563+<tr><td valign="middle" align="left">[<a href="#Using-a-offset-when-replaying" title="Previous section in reading order"> &lt; </a>]</td>
2564+<td valign="middle" align="left">[<a href="#Using-no-resolution-translation" title="Next section in reading order"> &gt; </a>]</td>
2565+<td valign="middle" align="left"> &nbsp; </td>
2566+<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
2567+<td valign="middle" align="left">[<a href="#Various-options" title="Up section"> Up </a>]</td>
2568+<td valign="middle" align="left">[<a href="#Programs" title="Next chapter"> &gt;&gt; </a>]</td>
2569+<td valign="middle" align="left"> &nbsp; </td>
2570+<td valign="middle" align="left"> &nbsp; </td>
2571+<td valign="middle" align="left"> &nbsp; </td>
2572+<td valign="middle" align="left"> &nbsp; </td>
2573+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
2574+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
2575+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
2576+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
2577+</tr></table>
2578+<h3 class="subsection">5.7.5 Using a window position recall</h3>
2579+<a name="index-Using-a-window-position-recall"></a>
2580+<p>For some reason a replayed window may pop up at a different position
2581+as when recorded. Xnee can try to solve this by adding the
2582+<code>recall-window-position</code> option during replay.
2583+</p><table><tr><td>&nbsp;</td><td><pre class="example"><code>cnee --replay --file mouse-rec.xnl \ </code>
2584+<code>--recall-window-position</code>
2585+</pre></td></tr></table>
2586+<p>If a window pops up at a different position when replaying (as whe
2587+recorded) Xnee moves the new window to the same position as when
2588+recorded.
2589+</p>
2590+
2591+<hr size="6">
2592+<a name="Using-no-resolution-translation"></a>
2593+<table cellpadding="1" cellspacing="1" border="0">
2594+<tr><td valign="middle" align="left">[<a href="#Using-a-window-position-recall" title="Previous section in reading order"> &lt; </a>]</td>
2595+<td valign="middle" align="left">[<a href="#Record-another-display-than-the-default" title="Next section in reading order"> &gt; </a>]</td>
2596+<td valign="middle" align="left"> &nbsp; </td>
2597+<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
2598+<td valign="middle" align="left">[<a href="#Various-options" title="Up section"> Up </a>]</td>
2599+<td valign="middle" align="left">[<a href="#Programs" title="Next chapter"> &gt;&gt; </a>]</td>
2600+<td valign="middle" align="left"> &nbsp; </td>
2601+<td valign="middle" align="left"> &nbsp; </td>
2602+<td valign="middle" align="left"> &nbsp; </td>
2603+<td valign="middle" align="left"> &nbsp; </td>
2604+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
2605+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
2606+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
2607+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
2608+</tr></table>
2609+<h3 class="subsection">5.7.6 Using no resolution translation</h3>
2610+<a name="index-Using-no-resolution-translation"></a>
2611+<p>If a session was recorded on a screen with another resolution than the
2612+on the one where we replay the session xnee will translate all coordinates
2613+automagically. However, you can force xnee not to use translation. To do this,
2614+start xnee like this
2615+</p><table><tr><td>&nbsp;</td><td><pre class="example"><code>cnee --replay --file mouse-rec.xnl \ </code>
2616+<code>--no-resolution-adjustment</code>
2617+</pre></td></tr></table>
2618+<p>Xnee will now replay the events recorded in the sessions file
2619+<code>mouse-rec.xnl</code> as if the screen had the same resolution
2620+the recorded one.
2621+</p>
2622+
2623+
2624+<hr size="6">
2625+<a name="Record-another-display-than-the-default"></a>
2626+<table cellpadding="1" cellspacing="1" border="0">
2627+<tr><td valign="middle" align="left">[<a href="#Using-no-resolution-translation" title="Previous section in reading order"> &lt; </a>]</td>
2628+<td valign="middle" align="left">[<a href="#Replay-to-another-display-than-the-default" title="Next section in reading order"> &gt; </a>]</td>
2629+<td valign="middle" align="left"> &nbsp; </td>
2630+<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
2631+<td valign="middle" align="left">[<a href="#Various-options" title="Up section"> Up </a>]</td>
2632+<td valign="middle" align="left">[<a href="#Programs" title="Next chapter"> &gt;&gt; </a>]</td>
2633+<td valign="middle" align="left"> &nbsp; </td>
2634+<td valign="middle" align="left"> &nbsp; </td>
2635+<td valign="middle" align="left"> &nbsp; </td>
2636+<td valign="middle" align="left"> &nbsp; </td>
2637+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
2638+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
2639+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
2640+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
2641+</tr></table>
2642+<h3 class="subsection">5.7.7 Record another display than the default</h3>
2643+<a name="index-Record-another-display-than-the-default"></a>
2644+<p>If you want to record another display than the default, as set in the
2645+DISPLAY variable, you use the <code>--display</code> option.
2646+</p><table><tr><td>&nbsp;</td><td><pre class="example"><code>cnee --record --mouse --display frodo:0.0 </code>
2647+</pre></td></tr></table>
2648+<p>Xnee will now record the mouse events on the display frodo:0.0.
2649+</p>
2650+
2651+<hr size="6">
2652+<a name="Replay-to-another-display-than-the-default"></a>
2653+<table cellpadding="1" cellspacing="1" border="0">
2654+<tr><td valign="middle" align="left">[<a href="#Record-another-display-than-the-default" title="Previous section in reading order"> &lt; </a>]</td>
2655+<td valign="middle" align="left">[<a href="#Shell-scripts-using-Xnee" title="Next section in reading order"> &gt; </a>]</td>
2656+<td valign="middle" align="left"> &nbsp; </td>
2657+<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
2658+<td valign="middle" align="left">[<a href="#Various-options" title="Up section"> Up </a>]</td>
2659+<td valign="middle" align="left">[<a href="#Programs" title="Next chapter"> &gt;&gt; </a>]</td>
2660+<td valign="middle" align="left"> &nbsp; </td>
2661+<td valign="middle" align="left"> &nbsp; </td>
2662+<td valign="middle" align="left"> &nbsp; </td>
2663+<td valign="middle" align="left"> &nbsp; </td>
2664+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
2665+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
2666+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
2667+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
2668+</tr></table>
2669+<h3 class="subsection">5.7.8 Replay to another display than the default</h3>
2670+<a name="index-Replay-to-another-display-than-the-default"></a>
2671+<p>If you want to replay to another display than the default, as set in the
2672+DISPLAY variable, you use the <code>--display</code> option.
2673+</p><table><tr><td>&nbsp;</td><td><pre class="example"><code>cnee --replay --display frodo:0.0 --file mouse-rec.xnl </code>
2674+</pre></td></tr></table>
2675+<p>Xnee will now replay the mouse events on the display frodo:0.0.
2676+</p>
2677+<hr size="6">
2678+<a name="Shell-scripts-using-Xnee"></a>
2679+<table cellpadding="1" cellspacing="1" border="0">
2680+<tr><td valign="middle" align="left">[<a href="#Replay-to-another-display-than-the-default" title="Previous section in reading order"> &lt; </a>]</td>
2681+<td valign="middle" align="left">[<a href="#Programs" title="Next section in reading order"> &gt; </a>]</td>
2682+<td valign="middle" align="left"> &nbsp; </td>
2683+<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
2684+<td valign="middle" align="left">[<a href="#Examples" title="Up section"> Up </a>]</td>
2685+<td valign="middle" align="left">[<a href="#Programs" title="Next chapter"> &gt;&gt; </a>]</td>
2686+<td valign="middle" align="left"> &nbsp; </td>
2687+<td valign="middle" align="left"> &nbsp; </td>
2688+<td valign="middle" align="left"> &nbsp; </td>
2689+<td valign="middle" align="left"> &nbsp; </td>
2690+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
2691+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
2692+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
2693+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
2694+</tr></table>
2695+<h2 class="section">5.8 Shell scripts using Xnee</h2>
2696+<a name="index-Shell-scripts-using-Xnee"></a>
2697+<p>Insted of onvoking Xnee for every time you need to fake events
2698+you can make use of the shell functions as delivered with Xnee.
2699+With these functions you can start one instance of Xnee and fake
2700+device events whenever you need.
2701+</p><table><tr><td>&nbsp;</td><td><pre class="example">
2702+<code>#!/bin/bash </code>
2703+<code> </code>
2704+<code># Source in handy functions </code>
2705+<code>. /usr/share/xnee/xnee.sh </code>
2706+<code> </code>
2707+<code># Loop and press buttons </code>
2708+<code>TMP=0 </code>
2709+<code>while [ $TMP -le 5]</code>
2710+<code>do</code>
2711+<code> TMP=$(($TMP+1))</code>
2712+<code> xnee_fake_button $TMP </code>
2713+<code>done</code>
2714+<code> </code>
2715+<code># Just a simple example ....don't bother to understand </code>
2716+<code>tar cvf /tmp/crap.tar *</code>
2717+<code>sleep 2</code>
2718+<code> </code>
2719+<code># Fake ls and Enter </code>
2720+<code>xnee_fake_key l</code>
2721+<code>xnee_fake_key s</code>
2722+<code>xnee_fake_key XK_Return</code>
2723+<code> </code>
2724+<code> </code>
2725+</pre></td></tr></table>
2726+<p>This example will fake press and release of the mouse button and
2727+do fake press and release of ls followed by a press and release
2728+of Enter.... and of course, you&rsquo;ll get a tar file in /tmp.
2729+</p>
2730+
2731+<p>Make sure that the path to the <code>xnee.sh</code> is correct.
2732+</p>
2733+
2734+
2735+
2736+<hr size="6">
2737+<a name="Programs"></a>
2738+<table cellpadding="1" cellspacing="1" border="0">
2739+<tr><td valign="middle" align="left">[<a href="#Shell-scripts-using-Xnee" title="Previous section in reading order"> &lt; </a>]</td>
2740+<td valign="middle" align="left">[<a href="#cnee-_002d-cnee_0027s-not-an-event-emulator" title="Next section in reading order"> &gt; </a>]</td>
2741+<td valign="middle" align="left"> &nbsp; </td>
2742+<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
2743+<td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
2744+<td valign="middle" align="left">[<a href="#File-format" title="Next chapter"> &gt;&gt; </a>]</td>
2745+<td valign="middle" align="left"> &nbsp; </td>
2746+<td valign="middle" align="left"> &nbsp; </td>
2747+<td valign="middle" align="left"> &nbsp; </td>
2748+<td valign="middle" align="left"> &nbsp; </td>
2749+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
2750+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
2751+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
2752+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
2753+</tr></table>
2754+<a name="Xnee-Programs"></a>
2755+<h1 class="chapter">6. Xnee Programs</h1>
2756+
2757+<p>GNU Xnee consists of three different programs, cnee, gnee and pnee.
2758+</p>
2759+
2760+
2761+<hr size="6">
2762+<a name="cnee-_002d-cnee_0027s-not-an-event-emulator"></a>
2763+<table cellpadding="1" cellspacing="1" border="0">
2764+<tr><td valign="middle" align="left">[<a href="#Programs" title="Previous section in reading order"> &lt; </a>]</td>
2765+<td valign="middle" align="left">[<a href="#gnee-_002d-gnee_0027s-not-an-emulator-either" title="Next section in reading order"> &gt; </a>]</td>
2766+<td valign="middle" align="left"> &nbsp; </td>
2767+<td valign="middle" align="left">[<a href="#Programs" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
2768+<td valign="middle" align="left">[<a href="#Programs" title="Up section"> Up </a>]</td>
2769+<td valign="middle" align="left">[<a href="#File-format" title="Next chapter"> &gt;&gt; </a>]</td>
2770+<td valign="middle" align="left"> &nbsp; </td>
2771+<td valign="middle" align="left"> &nbsp; </td>
2772+<td valign="middle" align="left"> &nbsp; </td>
2773+<td valign="middle" align="left"> &nbsp; </td>
2774+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
2775+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
2776+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
2777+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
2778+</tr></table>
2779+<h2 class="section">6.1 cnee - cnee&rsquo;s not an event emulator</h2>
2780+
2781+<p>This is the Xnee command line program. This programs contains most
2782+features and is the basis for this documentation.
2783+</p>
2784+<p>For a user not used to X11 it is probably a good idea to start with
2785+gnee or pnee instead or start using cnee in demonstration mode:
2786+<code>cnee --demo</code>
2787+</p>
2788+
2789+<hr size="6">
2790+<a name="gnee-_002d-gnee_0027s-not-an-emulator-either"></a>
2791+<table cellpadding="1" cellspacing="1" border="0">
2792+<tr><td valign="middle" align="left">[<a href="#cnee-_002d-cnee_0027s-not-an-event-emulator" title="Previous section in reading order"> &lt; </a>]</td>
2793+<td valign="middle" align="left">[<a href="#pnee-_002d-pnee_0027s-not-even-emulating" title="Next section in reading order"> &gt; </a>]</td>
2794+<td valign="middle" align="left"> &nbsp; </td>
2795+<td valign="middle" align="left">[<a href="#Programs" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
2796+<td valign="middle" align="left">[<a href="#Programs" title="Up section"> Up </a>]</td>
2797+<td valign="middle" align="left">[<a href="#File-format" title="Next chapter"> &gt;&gt; </a>]</td>
2798+<td valign="middle" align="left"> &nbsp; </td>
2799+<td valign="middle" align="left"> &nbsp; </td>
2800+<td valign="middle" align="left"> &nbsp; </td>
2801+<td valign="middle" align="left"> &nbsp; </td>
2802+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
2803+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
2804+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
2805+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
2806+</tr></table>
2807+<h2 class="section">6.2 gnee - gnee&rsquo;s not an emulator either</h2>
2808+
2809+<p>This is a GUI (using GTK2/Gnome) with most of the features of
2810+cnee. The GUI has been designed for ease of use.
2811+</p>
2812+<p>Currently there are no plans for making a separate manual for gnee.
2813+</p>
2814+<hr size="6">
2815+<a name="pnee-_002d-pnee_0027s-not-even-emulating"></a>
2816+<table cellpadding="1" cellspacing="1" border="0">
2817+<tr><td valign="middle" align="left">[<a href="#gnee-_002d-gnee_0027s-not-an-emulator-either" title="Previous section in reading order"> &lt; </a>]</td>
2818+<td valign="middle" align="left">[<a href="#Reporting-pnee-bugs" title="Next section in reading order"> &gt; </a>]</td>
2819+<td valign="middle" align="left"> &nbsp; </td>
2820+<td valign="middle" align="left">[<a href="#Programs" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
2821+<td valign="middle" align="left">[<a href="#Programs" title="Up section"> Up </a>]</td>
2822+<td valign="middle" align="left">[<a href="#File-format" title="Next chapter"> &gt;&gt; </a>]</td>
2823+<td valign="middle" align="left"> &nbsp; </td>
2824+<td valign="middle" align="left"> &nbsp; </td>
2825+<td valign="middle" align="left"> &nbsp; </td>
2826+<td valign="middle" align="left"> &nbsp; </td>
2827+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
2828+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
2829+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
2830+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
2831+</tr></table>
2832+<h2 class="section">6.3 pnee - pnee&rsquo;s not even emulating</h2>
2833+
2834+<p>This is a Gnome panel applet with a minimal set of features. Ease of
2835+use is the motto for this program. It is intended for users not being
2836+experts on X11 but still wants to record and replay a session for what
2837+ever purpose. By default pnee have settings that need not be changed
2838+for most cases. You can, however, launch the preferences dialog and
2839+set your preferred values as in most other applets.
2840+</p>
2841+<p>If you find pnee a bit limited we suggest you switch over to using
2842+cnee.
2843+</p>
2844+<p><b>Note</b>: If pnee hangs you can press the stop button twice to make a
2845+reset. Hopefully this will solve the problem.
2846+</p>
2847+<hr size="6">
2848+<a name="Reporting-pnee-bugs"></a>
2849+<table cellpadding="1" cellspacing="1" border="0">
2850+<tr><td valign="middle" align="left">[<a href="#pnee-_002d-pnee_0027s-not-even-emulating" title="Previous section in reading order"> &lt; </a>]</td>
2851+<td valign="middle" align="left">[<a href="#File-format" title="Next section in reading order"> &gt; </a>]</td>
2852+<td valign="middle" align="left"> &nbsp; </td>
2853+<td valign="middle" align="left">[<a href="#Programs" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
2854+<td valign="middle" align="left">[<a href="#pnee-_002d-pnee_0027s-not-even-emulating" title="Up section"> Up </a>]</td>
2855+<td valign="middle" align="left">[<a href="#File-format" title="Next chapter"> &gt;&gt; </a>]</td>
2856+<td valign="middle" align="left"> &nbsp; </td>
2857+<td valign="middle" align="left"> &nbsp; </td>
2858+<td valign="middle" align="left"> &nbsp; </td>
2859+<td valign="middle" align="left"> &nbsp; </td>
2860+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
2861+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
2862+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
2863+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
2864+</tr></table>
2865+<h3 class="subsection">6.3.1 Reporting pnee bugs</h3>
2866+<a name="index-Reporting-pnee-bugs"></a>
2867+
2868+<p>By default pnee writes error, verbose printouts and warnings to stderr
2869+which will not be visible to you as a user, since pnee will be started
2870+automatically along with the other applets. If you start up the
2871+preferences dialog you can choose a file for pnee printouts. After
2872+that you should turn on verbose logging (also in the preferences
2873+dialog) and then reproduce the bug and send over the file to
2874+<a href="mailto:xnee-bug@gnu.org">xnee-bug@gnu.org</a>.
2875+
2876+</p>
2877+<hr size="6">
2878+<a name="File-format"></a>
2879+<table cellpadding="1" cellspacing="1" border="0">
2880+<tr><td valign="middle" align="left">[<a href="#Reporting-pnee-bugs" title="Previous section in reading order"> &lt; </a>]</td>
2881+<td valign="middle" align="left">[<a href="#Project-file" title="Next section in reading order"> &gt; </a>]</td>
2882+<td valign="middle" align="left"> &nbsp; </td>
2883+<td valign="middle" align="left">[<a href="#Programs" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
2884+<td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
2885+<td valign="middle" align="left">[<a href="#Internals" title="Next chapter"> &gt;&gt; </a>]</td>
2886+<td valign="middle" align="left"> &nbsp; </td>
2887+<td valign="middle" align="left"> &nbsp; </td>
2888+<td valign="middle" align="left"> &nbsp; </td>
2889+<td valign="middle" align="left"> &nbsp; </td>
2890+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
2891+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
2892+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
2893+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
2894+</tr></table>
2895+<a name="File-types-and-format"></a>
2896+<h1 class="chapter">7. File types and format</h1>
2897+
2898+<p>The files used by Xnee are
2899+</p><ul>
2900+<li> Xnee Project File
2901+</li><li> Xnee Session File
2902+</li></ul>
2903+
2904+<p>These files must follow the Xnee File Format.
2905+</p>
2906+<hr size="6">
2907+<a name="Project-file"></a>
2908+<table cellpadding="1" cellspacing="1" border="0">
2909+<tr><td valign="middle" align="left">[<a href="#File-format" title="Previous section in reading order"> &lt; </a>]</td>
2910+<td valign="middle" align="left">[<a href="#Create-a-project-file" title="Next section in reading order"> &gt; </a>]</td>
2911+<td valign="middle" align="left"> &nbsp; </td>
2912+<td valign="middle" align="left">[<a href="#File-format" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
2913+<td valign="middle" align="left">[<a href="#File-format" title="Up section"> Up </a>]</td>
2914+<td valign="middle" align="left">[<a href="#Internals" title="Next chapter"> &gt;&gt; </a>]</td>
2915+<td valign="middle" align="left"> &nbsp; </td>
2916+<td valign="middle" align="left"> &nbsp; </td>
2917+<td valign="middle" align="left"> &nbsp; </td>
2918+<td valign="middle" align="left"> &nbsp; </td>
2919+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
2920+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
2921+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
2922+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
2923+</tr></table>
2924+<h2 class="section">7.1 Project file</h2>
2925+<a name="index-Project-file"></a>
2926+<p>Xnee can be set either using command line options (when using xnee) or by
2927+clicking the correct buttons etc in the GUI (using gnee). Instead of setting
2928+the same settings over and over again, you can use the Xnee Project File.
2929+</p>
2930+
2931+<hr size="6">
2932+<a name="Create-a-project-file"></a>
2933+<table cellpadding="1" cellspacing="1" border="0">
2934+<tr><td valign="middle" align="left">[<a href="#Project-file" title="Previous section in reading order"> &lt; </a>]</td>
2935+<td valign="middle" align="left">[<a href="#Xnee-Session-file" title="Next section in reading order"> &gt; </a>]</td>
2936+<td valign="middle" align="left"> &nbsp; </td>
2937+<td valign="middle" align="left">[<a href="#File-format" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
2938+<td valign="middle" align="left">[<a href="#Project-file" title="Up section"> Up </a>]</td>
2939+<td valign="middle" align="left">[<a href="#Internals" title="Next chapter"> &gt;&gt; </a>]</td>
2940+<td valign="middle" align="left"> &nbsp; </td>
2941+<td valign="middle" align="left"> &nbsp; </td>
2942+<td valign="middle" align="left"> &nbsp; </td>
2943+<td valign="middle" align="left"> &nbsp; </td>
2944+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
2945+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
2946+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
2947+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
2948+</tr></table>
2949+<h3 class="subsection">7.1.1 Create a project file</h3>
2950+<a name="index-Create-a-project-file"></a>
2951+<p>You can create a project by yourself. This can be done using
2952+the <code>write-settings</code> option in cnee or the &ldquo;save settings to file&rdquo;
2953+when using gnee or you can use the Xnee GUI (gnee) to write one.
2954+You can also write one by yourself in your favorite editor. Just make sure you
2955+follow the Xnee format. For information and specification on this format read
2956+the Xnee format chapter.
2957+&nbsp;
2958+</p>
2959+<p>The authors of Xnee suggests you start of with a generated project file. To get one
2960+such file, type the following
2961+<code>cnee --mouse --keyboard --write-settings new_proj.xnp</code>. You will now
2962+have a file <code>new_proj.xnp</code> with some useful values, which you can edit as you wish.
2963+&nbsp;
2964+</p>
2965+<p>To use this file to record, simply type
2966+<code>cnee --record --project new_proj.xnp</code>
2967+</p>
2968+
2969+<hr size="6">
2970+<a name="Xnee-Session-file"></a>
2971+<table cellpadding="1" cellspacing="1" border="0">
2972+<tr><td valign="middle" align="left">[<a href="#Create-a-project-file" title="Previous section in reading order"> &lt; </a>]</td>
2973+<td valign="middle" align="left">[<a href="#Xnee-file-format" title="Next section in reading order"> &gt; </a>]</td>
2974+<td valign="middle" align="left"> &nbsp; </td>
2975+<td valign="middle" align="left">[<a href="#File-format" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
2976+<td valign="middle" align="left">[<a href="#File-format" title="Up section"> Up </a>]</td>
2977+<td valign="middle" align="left">[<a href="#Internals" title="Next chapter"> &gt;&gt; </a>]</td>
2978+<td valign="middle" align="left"> &nbsp; </td>
2979+<td valign="middle" align="left"> &nbsp; </td>
2980+<td valign="middle" align="left"> &nbsp; </td>
2981+<td valign="middle" align="left"> &nbsp; </td>
2982+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
2983+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
2984+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
2985+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
2986+</tr></table>
2987+<h2 class="section">7.2 Xnee Session file</h2>
2988+<a name="index-Session-file"></a>
2989+<p>The Xnee session files are the printouts from a recorded session
2990+following the Xnee File Format. For information and specification on
2991+this format read the Xnee File Format chapter.
2992+</p>
2993+
2994+
2995+<hr size="6">
2996+<a name="Xnee-file-format"></a>
2997+<table cellpadding="1" cellspacing="1" border="0">
2998+<tr><td valign="middle" align="left">[<a href="#Xnee-Session-file" title="Previous section in reading order"> &lt; </a>]</td>
2999+<td valign="middle" align="left">[<a href="#Xnee-directives" title="Next section in reading order"> &gt; </a>]</td>
3000+<td valign="middle" align="left"> &nbsp; </td>
3001+<td valign="middle" align="left">[<a href="#File-format" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
3002+<td valign="middle" align="left">[<a href="#File-format" title="Up section"> Up </a>]</td>
3003+<td valign="middle" align="left">[<a href="#Internals" title="Next chapter"> &gt;&gt; </a>]</td>
3004+<td valign="middle" align="left"> &nbsp; </td>
3005+<td valign="middle" align="left"> &nbsp; </td>
3006+<td valign="middle" align="left"> &nbsp; </td>
3007+<td valign="middle" align="left"> &nbsp; </td>
3008+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
3009+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
3010+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
3011+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
3012+</tr></table>
3013+<h2 class="section">7.3 Xnee file format</h2>
3014+<p>The Xnee Format is divided into different directives.
3015+The format is line based, meaning that
3016+</p>
3017+<ul>
3018+<li> there is one directive per line
3019+</li><li> one line contains one (and only one) directive
3020+</li></ul>
3021+
3022+<p>These directives are definied as follows.
3023+</p>
3024+<hr size="6">
3025+<a name="Xnee-directives"></a>
3026+<table cellpadding="1" cellspacing="1" border="0">
3027+<tr><td valign="middle" align="left">[<a href="#Xnee-file-format" title="Previous section in reading order"> &lt; </a>]</td>
3028+<td valign="middle" align="left">[<a href="#Comment" title="Next section in reading order"> &gt; </a>]</td>
3029+<td valign="middle" align="left"> &nbsp; </td>
3030+<td valign="middle" align="left">[<a href="#File-format" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
3031+<td valign="middle" align="left">[<a href="#File-format" title="Up section"> Up </a>]</td>
3032+<td valign="middle" align="left">[<a href="#Internals" title="Next chapter"> &gt;&gt; </a>]</td>
3033+<td valign="middle" align="left"> &nbsp; </td>
3034+<td valign="middle" align="left"> &nbsp; </td>
3035+<td valign="middle" align="left"> &nbsp; </td>
3036+<td valign="middle" align="left"> &nbsp; </td>
3037+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
3038+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
3039+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
3040+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
3041+</tr></table>
3042+<h2 class="section">7.4 Xnee directives</h2>
3043+<p>The following directives are used in Xnee:
3044+</p><table>
3045+<tr><td width="0%"></td><td width="30%"><b>Directives</b></td><td width="70%"><b>Description</b></td></tr>
3046+<tr><td width="0%"></td><td width="30%">Comment</td><td width="70%">This is used to comment the various files</td></tr>
3047+<tr><td width="0%"></td><td width="30%">Project</td><td width="70%">These contains information about the session- or project file</td></tr>
3048+<tr><td width="0%"></td><td width="30%">Settings</td><td width="70%">Data used when recording and replaying</td></tr>
3049+<tr><td width="0%"></td><td width="30%">Replay data</td><td width="70%">Recorded replayable data (used when replaying)</td></tr>
3050+<tr><td width="0%"></td><td width="30%">Script replay data</td><td width="70%">Scriptable primitives</td></tr>
3051+<tr><td width="0%"></td><td width="30%">Mark</td><td width="70%">Lines inserted in the seesion file when a modifier+key was pressed</td></tr>
3052+<tr><td width="0%"></td><td width="30%">Execution</td><td width="70%">Lines that trigger the execution of an external program</td></tr>
3053+<tr><td width="0%"></td><td width="30%">Project information</td><td width="70%">Project</td></tr>
3054+</table>
3055+
3056+
3057+
3058+
3059+<hr size="6">
3060+<a name="Comment"></a>
3061+<table cellpadding="1" cellspacing="1" border="0">
3062+<tr><td valign="middle" align="left">[<a href="#Xnee-directives" title="Previous section in reading order"> &lt; </a>]</td>
3063+<td valign="middle" align="left">[<a href="#Settings" title="Next section in reading order"> &gt; </a>]</td>
3064+<td valign="middle" align="left"> &nbsp; </td>
3065+<td valign="middle" align="left">[<a href="#File-format" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
3066+<td valign="middle" align="left">[<a href="#Xnee-directives" title="Up section"> Up </a>]</td>
3067+<td valign="middle" align="left">[<a href="#Internals" title="Next chapter"> &gt;&gt; </a>]</td>
3068+<td valign="middle" align="left"> &nbsp; </td>
3069+<td valign="middle" align="left"> &nbsp; </td>
3070+<td valign="middle" align="left"> &nbsp; </td>
3071+<td valign="middle" align="left"> &nbsp; </td>
3072+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
3073+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
3074+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
3075+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
3076+</tr></table>
3077+<h3 class="subsection">7.4.1 Comment</h3>
3078+<a name="index-Comment-directives"></a>
3079+
3080+
3081+<table>
3082+<tr><td width="0%"></td><td width="20%"><b>First token</b></td><td width="50%"><b>Interpretation</b></td></tr>
3083+<tr><td width="0%"></td><td width="20%">#</td><td width="50%">The whole line is ignored.</td></tr>
3084+</table>
3085+
3086+<p>As long as the first token is <code>#</code> the whole line is intrepreted as a comment, just
3087+as in bash.
3088+</p>
3089+
3090+<hr size="6">
3091+<a name="Settings"></a>
3092+<table cellpadding="1" cellspacing="1" border="0">
3093+<tr><td valign="middle" align="left">[<a href="#Comment" title="Previous section in reading order"> &lt; </a>]</td>
3094+<td valign="middle" align="left">[<a href="#Replay-1" title="Next section in reading order"> &gt; </a>]</td>
3095+<td valign="middle" align="left"> &nbsp; </td>
3096+<td valign="middle" align="left">[<a href="#File-format" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
3097+<td valign="middle" align="left">[<a href="#Xnee-directives" title="Up section"> Up </a>]</td>
3098+<td valign="middle" align="left">[<a href="#Internals" title="Next chapter"> &gt;&gt; </a>]</td>
3099+<td valign="middle" align="left"> &nbsp; </td>
3100+<td valign="middle" align="left"> &nbsp; </td>
3101+<td valign="middle" align="left"> &nbsp; </td>
3102+<td valign="middle" align="left"> &nbsp; </td>
3103+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
3104+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
3105+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
3106+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
3107+</tr></table>
3108+<h3 class="subsection">7.4.2 Settings</h3>
3109+<a name="index-Settings"></a>
3110+
3111+<table>
3112+<tr><td width="45%"><b>Settings directive</b></td><td width="15%"><b>Argument</b></td><td width="60%"><b>Interpretation</b></td></tr>
3113+<tr><td width="45%">data-to-record</td><td width="15%">integer</td><td width="60%">Limits the number of data to record to to the integer value</td></tr>
3114+<tr><td width="45%">events-to-record</td><td width="15%">integer</td><td width="60%">Limits the number of events to record to to the integer value</td></tr>
3115+<tr><td width="45%">time-to-record</td><td width="15%">integer</td><td width="60%">Limits the number of seconds to record to to the integer value</td></tr>
3116+<tr><td width="45%">display</td><td width="15%">string</td><td width="60%">Sets the display to record or replay to the string</td></tr>
3117+<tr><td width="45%">distribute</td><td width="15%">string</td><td width="60%">Distribute all recorded or replayed replayable events to the display given by the string</td></tr>
3118+<tr><td width="45%">file</td><td width="15%">string</td><td width="60%">Read replay data from the file given by the string</td></tr>
3119+<tr><td width="45%">out-file</td><td width="15%">string</td><td width="60%">Print recorded data to the file given by the string</td></tr>
3120+<tr><td width="45%">plugin</td><td width="15%">string</td><td width="60%">Use the plugin given by the string</td></tr>
3121+<tr><td width="45%">first-last</td><td width="15%">boolean</td><td width="60%">Print only first and last of successive MotionNotify events</td></tr>
3122+<tr><td width="45%">verbose</td><td width="15%">boolean</td><td width="60%">Use verbose debugging printout</td></tr>
3123+<tr><td width="45%">buffer-verbose</td><td width="15%">boolean</td><td width="60%">Use verbose buffer verbose printouts (not built by default)</td></tr>
3124+<tr><td width="45%">time</td><td width="15%">integer</td><td width="60%">Delay the start of the Xnee action</td></tr>
3125+<tr><td width="45%">all-clients</td><td width="15%">boolean</td><td width="60%">Record all curret and future clients (default)</td></tr>
3126+<tr><td width="45%">future-clients</td><td width="15%">boolean</td><td width="60%">Record only future clients</td></tr>
3127+<tr><td width="45%">human-printout</td><td width="15%">boolean</td><td width="60%">Prints the recorded data in a (quite) more ser friendly format</td></tr>
3128+<tr><td width="45%">sync-mode</td><td width="15%">boolean</td><td width="60%">Sets recording mode</td></tr>
3129+<tr><td width="45%">speed-percent</td><td width="15%">integer</td><td width="60%">Sets the replaying speed percentage to the integer value</td></tr>
3130+<tr><td width="45%">stop-key</td><td width="15%"><acronym>string</acronym></td><td width="60%">Sets the stop key combination to the string</td></tr>
3131+<tr><td width="45%">pause-key</td><td width="15%"><acronym>string</acronym></td><td width="60%">Sets the pause key combination to the string</td></tr>
3132+<tr><td width="45%">resume-key</td><td width="15%"><acronym>string</acronym></td><td width="60%">Sets the resume key combination to the string</td></tr>
3133+<tr><td width="45%">mark-key</td><td width="15%"><acronym>string</acronym></td><td width="60%">Sets the mark key combination to the string</td></tr>
3134+<tr><td width="45%">exec-key</td><td width="15%"><acronym>string</acronym></td><td width="60%">Sets the execute key combination to string</td></tr>
3135+<tr><td width="45%">replay-resolution</td><td width="15%">string</td><td width="60%">Sets the replay resolution to the string</td></tr>
3136+<tr><td width="45%">replay-resolution</td><td width="15%">string</td><td width="60%">Sets the replay resolution to the string</td></tr>
3137+<tr><td width="45%">recall-window-position</td><td width="15%"></td><td width="60%">Use window position recall during replay</td></tr>
3138+<tr><td width="45%">resolution-adjustment</td><td width="15%">boolean</td><td width="60%">Use resolution adjustment, even if the recored resolution differs from the one to replay to</td></tr>
3139+<tr><td width="45%">event-range</td><td width="15%">range</td><td width="60%">Sets the events to record</td></tr>
3140+<tr><td width="45%">error-range</td><td width="15%">range</td><td width="60%">Sets the errors to record to range*</td></tr>
3141+<tr><td width="45%">request-range</td><td width="15%">range</td><td width="60%">Sets the request to record to range*</td></tr>
3142+<tr><td width="45%">reply-range</td><td width="15%">range</td><td width="60%">Sets the replies to record to range*</td></tr>
3143+<tr><td width="45%">extension-request-major-range</td><td width="15%">range</td><td width="60%">Sets the extension requests (major) to record to range*</td></tr>
3144+<tr><td width="45%">extension-request-minor-range</td><td width="15%">range</td><td width="60%">Sets the extension requests (minor) to record to range*</td></tr>
3145+<tr><td width="45%">extension-reply-major-range</td><td width="15%">range</td><td width="60%">Sets the extension replies (major) to record to range*</td></tr>
3146+<tr><td width="45%">extension-reply-minor-range</td><td width="15%">range</td><td width="60%">Sets the extension replies (minor) to record to range*</td></tr>
3147+<tr><td width="45%">force-replay</td><td width="15%">boolean</td><td width="60%">Continue to replay even if Xnee is out of sync</td></tr>
3148+<tr><td width="45%">max-threshold</td><td width="15%">integer</td><td width="60%">Sets the maximum synchronisation threshold</td></tr>
3149+<tr><td width="45%">min-threshold</td><td width="15%">integer</td><td width="60%">Sets the minimum synchronisation threshold</td></tr>
3150+<tr><td width="45%">total-threshold</td><td width="15%">integer</td><td width="60%">Sets the total maximum synchronisation threshold</td></tr>
3151+<tr><td width="45%">events-to-record</td><td width="15%">integer</td><td width="60%">Sets the number of events to record</td></tr>
3152+<tr><td width="45%">data-to-record</td><td width="15%">integer</td><td width="60%">Sets the number of data to record</td></tr>
3153+<tr><td width="45%">time-to-record</td><td width="15%">integer</td><td width="60%">Sets the number of seconds to record</td></tr>
3154+<tr><td width="45%">store-mouse-position</td><td width="15%"></td><td width="60%">If set, Xnee records the initial mouse position and makes sure that replaying starts from there</td></tr>
3155+<tr><td width="45%">retype-press-delay</td><td width="15%">integer</td><td width="60%">Xnee delays processing after a faked key press (during retype)
3156+with integer milli seconds</td></tr>
3157+<tr><td width="45%">retype-release-delay</td><td width="15%">integer</td><td width="60%">Xnee delays processing after a faked key press (during retype)
3158+with integer milli seconds</td></tr>
3159+</table>
3160+
3161+
3162+<a name="index-Xnee-Settings-Arguments"></a>
3163+
3164+<table>
3165+<tr><td width="30%"><b>Settings argument</b></td><td width="40%"><b>Description</b></td><td width="30%"><b>Example</b></td></tr>
3166+<tr><td width="30%"><code>integer</code></td><td width="40%">is an integer value.</td><td width="30%">1</td></tr>
3167+<tr><td width="30%"><code>string</code></td><td width="40%">is a string.</td><td width="30%">localhost</td></tr>
3168+<tr><td width="30%"><code>boolean</code></td><td width="40%">is a boolean value given by true/1 or false/0</td><td width="30%">true, false, 0, 1</td></tr>
3169+<tr><td width="30%"><code>subrange</code></td><td width="40%">Subrange is gives a range of data by specifying a start and stop
3170+ data. In the case of one data the stop data can be omitted.</td><td width="30%">2-5 or MapNotify</td></tr>
3171+<tr><td width="30%"><code>range</code></td><td width="40%">Ranges are a comma separated list of subranges.</td><td width="30%">2-3,MotionNotify-MapNotify,GravityNotify,PropertyNotify,30</td></tr>
3172+</table>
3173+
3174+
3175+
3176+
3177+<hr size="6">
3178+<a name="Replay-1"></a>
3179+<table cellpadding="1" cellspacing="1" border="0">
3180+<tr><td valign="middle" align="left">[<a href="#Settings" title="Previous section in reading order"> &lt; </a>]</td>
3181+<td valign="middle" align="left">[<a href="#Script-replay-data" title="Next section in reading order"> &gt; </a>]</td>
3182+<td valign="middle" align="left"> &nbsp; </td>
3183+<td valign="middle" align="left">[<a href="#File-format" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
3184+<td valign="middle" align="left">[<a href="#Xnee-directives" title="Up section"> Up </a>]</td>
3185+<td valign="middle" align="left">[<a href="#Internals" title="Next chapter"> &gt;&gt; </a>]</td>
3186+<td valign="middle" align="left"> &nbsp; </td>
3187+<td valign="middle" align="left"> &nbsp; </td>
3188+<td valign="middle" align="left"> &nbsp; </td>
3189+<td valign="middle" align="left"> &nbsp; </td>
3190+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
3191+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
3192+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
3193+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
3194+</tr></table>
3195+<h3 class="subsection">7.4.3 Replay</h3>
3196+<a name="index-Replay-directive"></a>
3197+<table>
3198+<tr><td width="40%"><b>Replay directive</b></td><td width="60%"><b>Interpretation</b></td></tr>
3199+<tr><td width="40%">0,0</td><td width="60%">not valid</td></tr>
3200+<tr><td width="40%">0,1</td><td width="60%">not valid</td></tr>
3201+<tr><td width="40%">0,2,keycode,time</td><td width="60%">KeyPress on key with keycode, used to replay</td></tr>
3202+<tr><td width="40%">0,3,keycode,time</td><td width="60%">KeyRelease on key with keycode, used to replay</td></tr>
3203+<tr><td width="40%">0,4,button nr,time</td><td width="60%">ButtonPress on button nr, used to replay</td></tr>
3204+<tr><td width="40%">0,5,button nr,time</td><td width="60%">ButtonRelease on button nr, used to replay</td></tr>
3205+<tr><td width="40%">0,6,x,y,time</td><td width="60%">MotionNotify on poistion (x,y), used to replay</td></tr>
3206+<tr><td width="40%">0,7-XXX,time</td><td width="60%">MotionNotify on poistion (x,y), used to replay</td></tr>
3207+<tr><td width="40%">1,request number, request type, length, request id, time</td><td width="60%">Recorded request, used during synchronisation</td></tr>
3208+<tr><td width="40%">2,reply number,time</td><td width="60%">Recorded reply, used during synchronisation</td></tr>
3209+<tr><td width="40%">3,error number,time</td><td width="60%">Recorded error, used during synchronisation</td></tr>
3210+</table>
3211+
3212+<p>time is the time on the server the data was to the recording Xnee
3213+client. This time is used to keep the speed intact during replay.
3214+</p>
3215+<hr size="6">
3216+<a name="Script-replay-data"></a>
3217+<table cellpadding="1" cellspacing="1" border="0">
3218+<tr><td valign="middle" align="left">[<a href="#Replay-1" title="Previous section in reading order"> &lt; </a>]</td>
3219+<td valign="middle" align="left">[<a href="#Mark" title="Next section in reading order"> &gt; </a>]</td>
3220+<td valign="middle" align="left"> &nbsp; </td>
3221+<td valign="middle" align="left">[<a href="#File-format" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
3222+<td valign="middle" align="left">[<a href="#Xnee-directives" title="Up section"> Up </a>]</td>
3223+<td valign="middle" align="left">[<a href="#Internals" title="Next chapter"> &gt;&gt; </a>]</td>
3224+<td valign="middle" align="left"> &nbsp; </td>
3225+<td valign="middle" align="left"> &nbsp; </td>
3226+<td valign="middle" align="left"> &nbsp; </td>
3227+<td valign="middle" align="left"> &nbsp; </td>
3228+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
3229+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
3230+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
3231+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
3232+</tr></table>
3233+<h3 class="subsection">7.4.4 Script replay data</h3>
3234+<a name="index-Script-replay-data"></a>
3235+
3236+<table>
3237+<tr><td width="40%"><b>Primitive</b></td><td width="60%"><b>Interpretation</b></td></tr>
3238+<tr><td width="40%">fake-motion</td><td width="60%">Fakes a mouse motion</td></tr>
3239+<tr><td width="40%">fake-button-press</td><td width="60%">Fakes a button press</td></tr>
3240+<tr><td width="40%">fake-button-release</td><td width="60%">Fakes a button release</td></tr>
3241+<tr><td width="40%">fake-button</td><td width="60%">Fakes a button press and release</td></tr>
3242+<tr><td width="40%">fake-key-press</td><td width="60%">Fakes a key press</td></tr>
3243+<tr><td width="40%">fake-key-release</td><td width="60%">Fakes a key release</td></tr>
3244+<tr><td width="40%">fake-key</td><td width="60%">Fakes a key press and release</td></tr>
3245+</table>
3246+
3247+
3248+<table>
3249+<tr><td width="20%"><b>Primitive variable</b></td><td width="20%"><b>Primitive values</b></td><td width="60%"><b>Interpretation</b></td></tr>
3250+<tr><td width="20%">x=value</td><td width="20%">integer</td><td width="60%">Sets the x position used in fake-motion to value</td></tr>
3251+<tr><td width="20%">x=value</td><td width="20%">+integer</td><td width="60%">Set the relative motion (x direction) used in fake-motion to value</td></tr>
3252+<tr><td width="20%">x=value</td><td width="20%">-integer</td><td width="60%">Set the relative motion (x direction) used in fake-motion to value</td></tr>
3253+<tr><td width="20%">y=value</td><td width="20%">integer</td><td width="60%">Sets the y position used in fake-motion to value</td></tr>
3254+<tr><td width="20%">y=value</td><td width="20%">+integer</td><td width="60%">Set the relative motion (y direction) used in fake-motion to value</td></tr>
3255+<tr><td width="20%">y=value</td><td width="20%">-integer</td><td width="60%">Set the relative motion (y direction) used in fake-motion to value</td></tr>
3256+<tr><td width="20%">button=value</td><td width="20%">integer</td><td width="60%">set the button to fake with fake-button-press, fake-button-release and fake-button to value</td></tr>
3257+<tr><td width="20%">key=value</td><td width="20%">integer</td><td width="60%">set the key to fake with fake-key-press, fake-key-release and fake-key to value</td></tr>
3258+</table>
3259+
3260+
3261+
3262+<hr size="6">
3263+<a name="Mark"></a>
3264+<table cellpadding="1" cellspacing="1" border="0">
3265+<tr><td valign="middle" align="left">[<a href="#Script-replay-data" title="Previous section in reading order"> &lt; </a>]</td>
3266+<td valign="middle" align="left">[<a href="#Exec" title="Next section in reading order"> &gt; </a>]</td>
3267+<td valign="middle" align="left"> &nbsp; </td>
3268+<td valign="middle" align="left">[<a href="#File-format" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
3269+<td valign="middle" align="left">[<a href="#Xnee-directives" title="Up section"> Up </a>]</td>
3270+<td valign="middle" align="left">[<a href="#Internals" title="Next chapter"> &gt;&gt; </a>]</td>
3271+<td valign="middle" align="left"> &nbsp; </td>
3272+<td valign="middle" align="left"> &nbsp; </td>
3273+<td valign="middle" align="left"> &nbsp; </td>
3274+<td valign="middle" align="left"> &nbsp; </td>
3275+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
3276+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
3277+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
3278+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
3279+</tr></table>
3280+<h3 class="subsection">7.4.5 Mark</h3>
3281+<a name="index-Mark-directive"></a>
3282+<table>
3283+<tr><td width="20%"><b>First tokens</b></td><td width="20%"><b>Arguments</b></td><td width="60%"><b>Interpretation</b></td></tr>
3284+<tr><td width="20%">Mark</td><td width="20%">time string</td><td width="60%">Ignored. This feature is intended to let the user do whatever he/she
3285+ wants to. This will obviously lead to modifying the source code etc.</td></tr>
3286+</table>
3287+
3288+
3289+
3290+<hr size="6">
3291+<a name="Exec"></a>
3292+<table cellpadding="1" cellspacing="1" border="0">
3293+<tr><td valign="middle" align="left">[<a href="#Mark" title="Previous section in reading order"> &lt; </a>]</td>
3294+<td valign="middle" align="left">[<a href="#Project-information" title="Next section in reading order"> &gt; </a>]</td>
3295+<td valign="middle" align="left"> &nbsp; </td>
3296+<td valign="middle" align="left">[<a href="#File-format" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
3297+<td valign="middle" align="left">[<a href="#Xnee-directives" title="Up section"> Up </a>]</td>
3298+<td valign="middle" align="left">[<a href="#Internals" title="Next chapter"> &gt;&gt; </a>]</td>
3299+<td valign="middle" align="left"> &nbsp; </td>
3300+<td valign="middle" align="left"> &nbsp; </td>
3301+<td valign="middle" align="left"> &nbsp; </td>
3302+<td valign="middle" align="left"> &nbsp; </td>
3303+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
3304+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
3305+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
3306+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
3307+</tr></table>
3308+<h3 class="subsection">7.4.6 Exec</h3>
3309+<a name="index-Exec-directive"></a>
3310+<table>
3311+<tr><td width="20%"><b>First tokens</b></td><td width="20%"><b>Arguments</b></td><td width="60%"><b>Interpretation</b></td></tr>
3312+<tr><td width="20%">Exec</td><td width="20%">command string</td><td width="60%">This is used during to replay to execute a given command. If no
3313+ command string is found Xnee will try to
3314+ read the command from the environment variable <code>XNEE_EXEC_COMMAND</code></td></tr>
3315+</table>
3316+
3317+
3318+
3319+<hr size="6">
3320+<a name="Project-information"></a>
3321+<table cellpadding="1" cellspacing="1" border="0">
3322+<tr><td valign="middle" align="left">[<a href="#Exec" title="Previous section in reading order"> &lt; </a>]</td>
3323+<td valign="middle" align="left">[<a href="#Internals" title="Next section in reading order"> &gt; </a>]</td>
3324+<td valign="middle" align="left"> &nbsp; </td>
3325+<td valign="middle" align="left">[<a href="#File-format" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
3326+<td valign="middle" align="left">[<a href="#Xnee-directives" title="Up section"> Up </a>]</td>
3327+<td valign="middle" align="left">[<a href="#Internals" title="Next chapter"> &gt;&gt; </a>]</td>
3328+<td valign="middle" align="left"> &nbsp; </td>
3329+<td valign="middle" align="left"> &nbsp; </td>
3330+<td valign="middle" align="left"> &nbsp; </td>
3331+<td valign="middle" align="left"> &nbsp; </td>
3332+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
3333+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
3334+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
3335+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
3336+</tr></table>
3337+<h3 class="subsection">7.4.7 Project information</h3>
3338+<a name="index-Project-information-directive"></a>
3339+<table>
3340+<tr><td width="45%"><b>Project information directives</b></td><td width="55%"><b>Arguments</b></td></tr>
3341+<tr><td width="45%">ProjectName</td><td width="55%">string s is the project name</td></tr>
3342+<tr><td width="45%">ProjectDescription</td><td width="55%">string s is the project description</td></tr>
3343+<tr><td width="45%">ProjectCreationDate</td><td width="55%">string s is the project creation date</td></tr>
3344+<tr><td width="45%">ProjectCreationProgram</td><td width="55%">string s is the name of the program that create the project file</td></tr>
3345+<tr><td width="45%">ProjectCreationProgVersion</td><td width="55%">string s is the version of the program that create the project file</td></tr>
3346+<tr><td width="45%">ProjectLastChangeDate</td><td width="55%">string s is the date of the last change of the project file</td></tr>
3347+<tr><td width="45%">ProjectLastChangeProgram</td><td width="55%">string s is the name of the program that last changed of the project file</td></tr>
3348+<tr><td width="45%">ProjectLastChangeVersion</td><td width="55%">string s is the version of the program that last changed of the project file</td></tr>
3349+<tr><td width="45%">ProjectCurrentChangeDate</td><td width="55%">string s is the date of the current change of the project file</td></tr>
3350+<tr><td width="45%">ProjectCurrentChangeProgram</td><td width="55%">string s is the name of the program that current changed of the project file</td></tr>
3351+<tr><td width="45%">ProjectCurrentChangeVersion</td><td width="55%">string s is the version of the program that current changed of the project file</td></tr>
3352+</table>
3353+
3354+
3355+
3356+<hr size="6">
3357+<a name="Internals"></a>
3358+<table cellpadding="1" cellspacing="1" border="0">
3359+<tr><td valign="middle" align="left">[<a href="#Project-information" title="Previous section in reading order"> &lt; </a>]</td>
3360+<td valign="middle" align="left">[<a href="#Synchronisation" title="Next section in reading order"> &gt; </a>]</td>
3361+<td valign="middle" align="left"> &nbsp; </td>
3362+<td valign="middle" align="left">[<a href="#File-format" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
3363+<td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
3364+<td valign="middle" align="left">[<a href="#Requirements" title="Next chapter"> &gt;&gt; </a>]</td>
3365+<td valign="middle" align="left"> &nbsp; </td>
3366+<td valign="middle" align="left"> &nbsp; </td>
3367+<td valign="middle" align="left"> &nbsp; </td>
3368+<td valign="middle" align="left"> &nbsp; </td>
3369+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
3370+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
3371+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
3372+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
3373+</tr></table>
3374+
3375+<a name="Xnee-Internals"></a>
3376+<h1 class="chapter">8. Xnee Internals</h1>
3377+<a name="index-Xnee-Internals"></a>
3378+<p>This chapter is intended to explain the internal design of libxnee.
3379+Hopefully this will lead to a better understanding of how to use Xnee
3380+and why some features exists and why some doesn&rsquo;t.
3381+</p>
3382+
3383+
3384+
3385+
3386+
3387+
3388+<hr size="6">
3389+<a name="Synchronisation"></a>
3390+<table cellpadding="1" cellspacing="1" border="0">
3391+<tr><td valign="middle" align="left">[<a href="#Internals" title="Previous section in reading order"> &lt; </a>]</td>
3392+<td valign="middle" align="left">[<a href="#Why-synchronise" title="Next section in reading order"> &gt; </a>]</td>
3393+<td valign="middle" align="left"> &nbsp; </td>
3394+<td valign="middle" align="left">[<a href="#Internals" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
3395+<td valign="middle" align="left">[<a href="#Internals" title="Up section"> Up </a>]</td>
3396+<td valign="middle" align="left">[<a href="#Requirements" title="Next chapter"> &gt;&gt; </a>]</td>
3397+<td valign="middle" align="left"> &nbsp; </td>
3398+<td valign="middle" align="left"> &nbsp; </td>
3399+<td valign="middle" align="left"> &nbsp; </td>
3400+<td valign="middle" align="left"> &nbsp; </td>
3401+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
3402+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
3403+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
3404+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
3405+</tr></table>
3406+<h2 class="section">8.1 Synchronisation</h2>
3407+<a name="index-Synchronisation"></a>
3408+<p>We will try to go through the basics of how Xnee implememnts synchronisation
3409+and try to tell you, by using examples, why synhronisation is important.
3410+</p>
3411+<hr size="6">
3412+<a name="Why-synchronise"></a>
3413+<table cellpadding="1" cellspacing="1" border="0">
3414+<tr><td valign="middle" align="left">[<a href="#Synchronisation" title="Previous section in reading order"> &lt; </a>]</td>
3415+<td valign="middle" align="left">[<a href="#How-to-synchronise" title="Next section in reading order"> &gt; </a>]</td>
3416+<td valign="middle" align="left"> &nbsp; </td>
3417+<td valign="middle" align="left">[<a href="#Internals" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
3418+<td valign="middle" align="left">[<a href="#Synchronisation" title="Up section"> Up </a>]</td>
3419+<td valign="middle" align="left">[<a href="#Requirements" title="Next chapter"> &gt;&gt; </a>]</td>
3420+<td valign="middle" align="left"> &nbsp; </td>
3421+<td valign="middle" align="left"> &nbsp; </td>
3422+<td valign="middle" align="left"> &nbsp; </td>
3423+<td valign="middle" align="left"> &nbsp; </td>
3424+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
3425+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
3426+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
3427+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
3428+</tr></table>
3429+<h3 class="subsection">8.1.1 Why synchronise</h3>
3430+<a name="index-why-synchronise"></a>
3431+
3432+<p>To understand why synchronisation during replay is needed an example is given.
3433+</p>
3434+<p>In this example only mouse and keyboard events are recorded. Think of a session with a web browser.
3435+</p>
3436+<p>During record the following is done:
3437+</p><ul>
3438+<li> Start galeon (or another web browser) via the GNOME panel
3439+</li><li> Press Ctrl-O which pops up a window
3440+</li><li> Press the left button in the textfield of the popup window
3441+</li><li> Enter the URL you want to enter (e.g <a href="http://www.gnu.org">http://www.gnu.org</a>)
3442+</li><li> Click on the OK button
3443+</li><li> Then click on another URL (e.g GNU Documentation)
3444+</li><li> Then click on another URL (e.g On-Line Documentation)
3445+</li></ul>
3446+
3447+<p>When replaying this session it is often to synchronise the recorded session with what&rsquo;s happening &quot;right now&quot; on the display since sometimes (or rather always) there can be different response times from the same URL.
3448+</p>
3449+<p>During replay the following is done:
3450+</p><ul>
3451+<li> Galeon is started
3452+</li><li> Ctrl-O is typed which pops up a window
3453+</li><li> Press the left button in the textfield of the popup window
3454+</li><li> Enter the URL you want to enter (e.g <a href="http://www.gnu.org">http://www.gnu.org</a>)
3455+</li><li> Click on the OK button
3456+</li><li> ... due to an enormous amount of visitors the GNU web server can&rsquo;t respond as quick as it did when recording. So when the next thing happens
3457+</li><li> Then click on another URL (e.g GNU Documentation)
3458+</li><li> ... the page hasn&rsquo;t been loaded and when the next event is replayed
3459+</li><li> Then click on another URL (e.g On-Line Documentation)
3460+</li><li> ... the link isn&rsquo;t there and we&rsquo;re really out of sync with the recorded session
3461+</li></ul>
3462+
3463+
3464+<hr size="6">
3465+<a name="How-to-synchronise"></a>
3466+<table cellpadding="1" cellspacing="1" border="0">
3467+<tr><td valign="middle" align="left">[<a href="#Why-synchronise" title="Previous section in reading order"> &lt; </a>]</td>
3468+<td valign="middle" align="left">[<a href="#Synchronisation-is-needed" title="Next section in reading order"> &gt; </a>]</td>
3469+<td valign="middle" align="left"> &nbsp; </td>
3470+<td valign="middle" align="left">[<a href="#Internals" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
3471+<td valign="middle" align="left">[<a href="#Synchronisation" title="Up section"> Up </a>]</td>
3472+<td valign="middle" align="left">[<a href="#Requirements" title="Next chapter"> &gt;&gt; </a>]</td>
3473+<td valign="middle" align="left"> &nbsp; </td>
3474+<td valign="middle" align="left"> &nbsp; </td>
3475+<td valign="middle" align="left"> &nbsp; </td>
3476+<td valign="middle" align="left"> &nbsp; </td>
3477+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
3478+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
3479+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
3480+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
3481+</tr></table>
3482+<h3 class="subsection">8.1.2 How to synchronise</h3>
3483+<a name="index-how-to-synchronise"></a>
3484+<p>Instead we could record some more data than just the mouse and keyboard events.
3485+</p>
3486+<p>During record the following is done:
3487+</p><ul>
3488+<li> Start galeon (or another web browser) via the GNOME panel
3489+</li><li> Record some X data that tells us that a window have been created
3490+</li><li> Press Ctrl-O which pops up a window
3491+</li><li> Record some X data that tells us that a window have been created
3492+</li><li> Press the left button in the textfield of the popup window
3493+</li><li> Enter the URL you want to enter (e.g <a href="http://www.gnu.org">http://www.gnu.org</a>)
3494+</li><li> Click on the OK button
3495+</li><li> Record some X data that tells us that a window have been destroyed
3496+</li><li> Then click on another URL (e.g GNU Documentation)
3497+</li><li> Record some X data that tells us that a some text has been displayed in a window
3498+</li><li> Then click on another URL (e.g On-Line Documentation)
3499+</li><li> Record some X data that tells us that a some text has been displayed in a window
3500+</li></ul>
3501+<p>The non-mouse-or-keyboard events recorded (window created &amp; text displayed) are record for synchronisation purposes.
3502+</p>
3503+<p>During replay the following is done:
3504+</p><ul>
3505+<li> Start galeon (or another web browser) via the GNOME panel
3506+</li><li> wait for: the recorded X data to be sent again
3507+</li><li> Press Ctrl-O which pops up a window
3508+</li><li> wait for: the recorded X data to be sent again
3509+</li><li> Press the left button in the textfield of the popup window
3510+</li><li> Enter the URL you want to enter (e.g <a href="http://www.gnu.org">http://www.gnu.org</a>)
3511+</li><li> Click on the OK button
3512+</li><li> wait for: the recorded X data to be sent again
3513+</li><li> Then click on another URL (e.g GNU Documentation)
3514+</li><li> wait for: the recorded X data to be sent again
3515+</li><li> Then click on another URL (e.g On-Line Documentation)
3516+</li><li> wait for: the recorded X data to be sent again
3517+</li></ul>
3518+
3519+
3520+
3521+<hr size="6">
3522+<a name="Synchronisation-is-needed"></a>
3523+<table cellpadding="1" cellspacing="1" border="0">
3524+<tr><td valign="middle" align="left">[<a href="#How-to-synchronise" title="Previous section in reading order"> &lt; </a>]</td>
3525+<td valign="middle" align="left">[<a href="#Different-data-for-different-kind-of-sessions" title="Next section in reading order"> &gt; </a>]</td>
3526+<td valign="middle" align="left"> &nbsp; </td>
3527+<td valign="middle" align="left">[<a href="#Internals" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
3528+<td valign="middle" align="left">[<a href="#Synchronisation" title="Up section"> Up </a>]</td>
3529+<td valign="middle" align="left">[<a href="#Requirements" title="Next chapter"> &gt;&gt; </a>]</td>
3530+<td valign="middle" align="left"> &nbsp; </td>
3531+<td valign="middle" align="left"> &nbsp; </td>
3532+<td valign="middle" align="left"> &nbsp; </td>
3533+<td valign="middle" align="left"> &nbsp; </td>
3534+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
3535+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
3536+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
3537+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
3538+</tr></table>
3539+<h3 class="subsection">8.1.3 Synchronisation is needed</h3>
3540+<p>So by recording more data than just the events to be replayed we can synchornise what was recorded with what is going on when replaying. But the data has to be choosen with respect to that the data:
3541+</p><ul>
3542+<li> differs from different sessions (Gimp and Xterm are really different)
3543+</li><li> slows down the replay session if there are too many
3544+</li><li> is hard to choose since the X protocol is rich
3545+</li><li> differs (comparing record and replaying)
3546+</li><li> can have different ordering (comparing record and replaying)
3547+</li></ul>
3548+
3549+<hr size="6">
3550+<a name="Different-data-for-different-kind-of-sessions"></a>
3551+<table cellpadding="1" cellspacing="1" border="0">
3552+<tr><td valign="middle" align="left">[<a href="#Synchronisation-is-needed" title="Previous section in reading order"> &lt; </a>]</td>
3553+<td valign="middle" align="left">[<a href="#Slow-replay-session-due-to-too-many-synchronise-data" title="Next section in reading order"> &gt; </a>]</td>
3554+<td valign="middle" align="left"> &nbsp; </td>
3555+<td valign="middle" align="left">[<a href="#Internals" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
3556+<td valign="middle" align="left">[<a href="#Synchronisation" title="Up section"> Up </a>]</td>
3557+<td valign="middle" align="left">[<a href="#Requirements" title="Next chapter"> &gt;&gt; </a>]</td>
3558+<td valign="middle" align="left"> &nbsp; </td>
3559+<td valign="middle" align="left"> &nbsp; </td>
3560+<td valign="middle" align="left"> &nbsp; </td>
3561+<td valign="middle" align="left"> &nbsp; </td>
3562+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
3563+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
3564+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
3565+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
3566+</tr></table>
3567+<h3 class="subsection">8.1.4 Different data for different kind of sessions</h3>
3568+<p>If we record an xterm session with all data being recorded and compare that to a recorded GIMP session with all data being recordr we can see that the data to use as synchronisation data differs. AS an example there aren&rsquo;t so many windows created/destryed during an xterm session.
3569+</p>
3570+<p>The solve to the the problem of finding out what data to use as synchronisation data one can:
3571+</p><ul>
3572+<li> use the project files delivered with Xnee
3573+</li><li> analyse the application (using Xnee&rsquo;s <code>--human-printouts</code> option) and do some &quot;trial and error&quot;
3574+</li></ul>
3575+
3576+
3577+<hr size="6">
3578+<a name="Slow-replay-session-due-to-too-many-synchronise-data"></a>
3579+<table cellpadding="1" cellspacing="1" border="0">
3580+<tr><td valign="middle" align="left">[<a href="#Different-data-for-different-kind-of-sessions" title="Previous section in reading order"> &lt; </a>]</td>
3581+<td valign="middle" align="left">[<a href="#X-protocol-is-rich-and-asynchronous" title="Next section in reading order"> &gt; </a>]</td>
3582+<td valign="middle" align="left"> &nbsp; </td>
3583+<td valign="middle" align="left">[<a href="#Internals" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
3584+<td valign="middle" align="left">[<a href="#Synchronisation" title="Up section"> Up </a>]</td>
3585+<td valign="middle" align="left">[<a href="#Requirements" title="Next chapter"> &gt;&gt; </a>]</td>
3586+<td valign="middle" align="left"> &nbsp; </td>
3587+<td valign="middle" align="left"> &nbsp; </td>
3588+<td valign="middle" align="left"> &nbsp; </td>
3589+<td valign="middle" align="left"> &nbsp; </td>
3590+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
3591+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
3592+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
3593+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
3594+</tr></table>
3595+<h3 class="subsection">8.1.5 Slow replay session due to too many synchronise data</h3>
3596+<p>The synchronisation itself doesn&rsquo;t take much time but there are timeouts that makes Xnee paues for a short while (see above). If there are many such timeouts it will lead to a slow or shaky replaying session.
3597+</p>
3598+<hr size="6">
3599+<a name="X-protocol-is-rich-and-asynchronous"></a>
3600+<table cellpadding="1" cellspacing="1" border="0">
3601+<tr><td valign="middle" align="left">[<a href="#Slow-replay-session-due-to-too-many-synchronise-data" title="Previous section in reading order"> &lt; </a>]</td>
3602+<td valign="middle" align="left">[<a href="#Different-data-sent" title="Next section in reading order"> &gt; </a>]</td>
3603+<td valign="middle" align="left"> &nbsp; </td>
3604+<td valign="middle" align="left">[<a href="#Internals" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
3605+<td valign="middle" align="left">[<a href="#Synchronisation" title="Up section"> Up </a>]</td>
3606+<td valign="middle" align="left">[<a href="#Requirements" title="Next chapter"> &gt;&gt; </a>]</td>
3607+<td valign="middle" align="left"> &nbsp; </td>
3608+<td valign="middle" align="left"> &nbsp; </td>
3609+<td valign="middle" align="left"> &nbsp; </td>
3610+<td valign="middle" align="left"> &nbsp; </td>
3611+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
3612+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
3613+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
3614+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
3615+</tr></table>
3616+<h3 class="subsection">8.1.6 X protocol is rich and asynchronous</h3>
3617+<p>For an end user (with no X expertise) it is hard to read the X protocol specification and make assumptions on what data to use.
3618+</p>
3619+<hr size="6">
3620+<a name="Different-data-sent"></a>
3621+<table cellpadding="1" cellspacing="1" border="0">
3622+<tr><td valign="middle" align="left">[<a href="#X-protocol-is-rich-and-asynchronous" title="Previous section in reading order"> &lt; </a>]</td>
3623+<td valign="middle" align="left">[<a href="#Buffers-and-timeouts" title="Next section in reading order"> &gt; </a>]</td>
3624+<td valign="middle" align="left"> &nbsp; </td>
3625+<td valign="middle" align="left">[<a href="#Internals" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
3626+<td valign="middle" align="left">[<a href="#Synchronisation" title="Up section"> Up </a>]</td>
3627+<td valign="middle" align="left">[<a href="#Requirements" title="Next chapter"> &gt;&gt; </a>]</td>
3628+<td valign="middle" align="left"> &nbsp; </td>
3629+<td valign="middle" align="left"> &nbsp; </td>
3630+<td valign="middle" align="left"> &nbsp; </td>
3631+<td valign="middle" align="left"> &nbsp; </td>
3632+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
3633+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
3634+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
3635+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
3636+</tr></table>
3637+<h3 class="subsection">8.1.7 Different data sent</h3>
3638+<p>Even if one starts up a machine from scratch (reboot) when recording and from scratch when replaying there is no guarantee that the data is sent in the same order or that exactly the same amount of data is sent.
3639+</p>
3640+
3641+<hr size="6">
3642+<a name="Buffers-and-timeouts"></a>
3643+<table cellpadding="1" cellspacing="1" border="0">
3644+<tr><td valign="middle" align="left">[<a href="#Different-data-sent" title="Previous section in reading order"> &lt; </a>]</td>
3645+<td valign="middle" align="left">[<a href="#Requirements" title="Next section in reading order"> &gt; </a>]</td>
3646+<td valign="middle" align="left"> &nbsp; </td>
3647+<td valign="middle" align="left">[<a href="#Internals" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
3648+<td valign="middle" align="left">[<a href="#Synchronisation" title="Up section"> Up </a>]</td>
3649+<td valign="middle" align="left">[<a href="#Requirements" title="Next chapter"> &gt;&gt; </a>]</td>
3650+<td valign="middle" align="left"> &nbsp; </td>
3651+<td valign="middle" align="left"> &nbsp; </td>
3652+<td valign="middle" align="left"> &nbsp; </td>
3653+<td valign="middle" align="left"> &nbsp; </td>
3654+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
3655+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
3656+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
3657+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
3658+</tr></table>
3659+<h3 class="subsection">8.1.8 Buffers and timeouts</h3>
3660+<p>To enable synchronisation Xnee buffers data:
3661+</p><ul>
3662+<li> that was read in the session file but hasn&rsquo;t been sent during replay
3663+</li><li> that was sent during replay but hasn&rsquo;t been seen in the session
3664+ file being replayed
3665+</li></ul>
3666+<p>For every data read from session file (during replay) that isn&rsquo;t replayable
3667+(i e device event) Xnee stores the data in a buffer. Xnee also stores the
3668+data sent from the X server during playback. The data received from the server
3669+make the buffer entry for that specific data be decremented. If, on the other
3670+hand, the same data was read from file the buffer entry for that data is
3671+incremented.
3672+Before replaying any replayable event Xnee makes sure it is in sync. If Xnee
3673+is in sync the replaying
3674+continues. If Xnee is out of sync it will look for its thresholds and see
3675+if it is inside a user specified range. There are three thresholds:
3676+</p><ul>
3677+<li> <b>positive maximum</b> nr data read from session file
3678+</li><li> <b>negative minimum</b> nr of data sent from X server
3679+</li><li> <b>absolute total maximum</b> sum of the absolute values above
3680+</li></ul>
3681+<p>If Xnee read one data from file (e.g the event MapNotify) Xnee checks if the
3682+buffer entry for the specific data is bigger than the positive maximum value
3683+(after having incremented the buffer value).
3684+</p>
3685+<p>If Xnee receives one data from the X server (e.g the event MapNotify) it
3686+checks if the buffer entry for the specific data is bigger than the
3687+negative minimum value (after having decremented the buffer value).
3688+</p>
3689+<p>Xnee also checks if the absolute sum of the differences for every entry
3690+in the buffer is higher the a total threshold.
3691+</p>
3692+<p>If Xnee is getting out of sync it slows down the speed a bit and tries to
3693+continue. However after a while it may happen that Xnee considers that it
3694+no use to continue since we are too much out of sync.
3695+<br>
3696+Xnee compensates for the delay during replay that is caused when being out of
3697+sync.
3698+<br>
3699+It is possible to tweak the thresholds using the <code>--maximum-threshold</code>,
3700+<code>--negative-threshold</code> and <code>--total-diff-threshold</code> options. Is is
3701+also possible to turn off synchronisation completely using the <code>--no-sync</code>
3702+option.
3703+
3704+</p>
3705+<hr size="6">
3706+<a name="Requirements"></a>
3707+<table cellpadding="1" cellspacing="1" border="0">
3708+<tr><td valign="middle" align="left">[<a href="#Buffers-and-timeouts" title="Previous section in reading order"> &lt; </a>]</td>
3709+<td valign="middle" align="left">[<a href="#Runtime-requirements" title="Next section in reading order"> &gt; </a>]</td>
3710+<td valign="middle" align="left"> &nbsp; </td>
3711+<td valign="middle" align="left">[<a href="#Internals" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
3712+<td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
3713+<td valign="middle" align="left">[<a href="#FAQ" title="Next chapter"> &gt;&gt; </a>]</td>
3714+<td valign="middle" align="left"> &nbsp; </td>
3715+<td valign="middle" align="left"> &nbsp; </td>
3716+<td valign="middle" align="left"> &nbsp; </td>
3717+<td valign="middle" align="left"> &nbsp; </td>
3718+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
3719+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
3720+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
3721+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
3722+</tr></table>
3723+<a name="Xnee-Requirements"></a>
3724+<h1 class="chapter">9. Xnee Requirements</h1>
3725+<a name="index-requirements"></a>
3726+
3727+<hr size="6">
3728+<a name="Runtime-requirements"></a>
3729+<table cellpadding="1" cellspacing="1" border="0">
3730+<tr><td valign="middle" align="left">[<a href="#Requirements" title="Previous section in reading order"> &lt; </a>]</td>
3731+<td valign="middle" align="left">[<a href="#Development-requirements" title="Next section in reading order"> &gt; </a>]</td>
3732+<td valign="middle" align="left"> &nbsp; </td>
3733+<td valign="middle" align="left">[<a href="#Requirements" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
3734+<td valign="middle" align="left">[<a href="#Requirements" title="Up section"> Up </a>]</td>
3735+<td valign="middle" align="left">[<a href="#FAQ" title="Next chapter"> &gt;&gt; </a>]</td>
3736+<td valign="middle" align="left"> &nbsp; </td>
3737+<td valign="middle" align="left"> &nbsp; </td>
3738+<td valign="middle" align="left"> &nbsp; </td>
3739+<td valign="middle" align="left"> &nbsp; </td>
3740+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
3741+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
3742+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
3743+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
3744+</tr></table>
3745+<h2 class="section">9.1 Runtime requirements</h2>
3746+<a name="index-runtime-requirements"></a>
3747+<p>Xnee requirements:
3748+</p><ul>
3749+<li> RECORD extension
3750+</li><li> XTest extension
3751+</li></ul>
3752+<p>You can use Xnee in replaying mode without RECORD extension if synchronisation is turned off.
3753+</p>
3754+<hr size="6">
3755+<a name="Development-requirements"></a>
3756+<table cellpadding="1" cellspacing="1" border="0">
3757+<tr><td valign="middle" align="left">[<a href="#Runtime-requirements" title="Previous section in reading order"> &lt; </a>]</td>
3758+<td valign="middle" align="left">[<a href="#FAQ" title="Next section in reading order"> &gt; </a>]</td>
3759+<td valign="middle" align="left"> &nbsp; </td>
3760+<td valign="middle" align="left">[<a href="#Requirements" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
3761+<td valign="middle" align="left">[<a href="#Requirements" title="Up section"> Up </a>]</td>
3762+<td valign="middle" align="left">[<a href="#FAQ" title="Next chapter"> &gt;&gt; </a>]</td>
3763+<td valign="middle" align="left"> &nbsp; </td>
3764+<td valign="middle" align="left"> &nbsp; </td>
3765+<td valign="middle" align="left"> &nbsp; </td>
3766+<td valign="middle" align="left"> &nbsp; </td>
3767+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
3768+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
3769+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
3770+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
3771+</tr></table>
3772+<h2 class="section">9.2 Development requirements</h2>
3773+<a name="index-development-requirements"></a>
3774+<p>For development requirements, please look at the DEVELOPMENT file that is distributed with all packages and with CVS.
3775+</p>
3776+
3777+
3778+<hr size="6">
3779+<a name="FAQ"></a>
3780+<table cellpadding="1" cellspacing="1" border="0">
3781+<tr><td valign="middle" align="left">[<a href="#Development-requirements" title="Previous section in reading order"> &lt; </a>]</td>
3782+<td valign="middle" align="left">[<a href="#Copying-This-Manual" title="Next section in reading order"> &gt; </a>]</td>
3783+<td valign="middle" align="left"> &nbsp; </td>
3784+<td valign="middle" align="left">[<a href="#Requirements" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
3785+<td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
3786+<td valign="middle" align="left">[<a href="#Copying-This-Manual" title="Next chapter"> &gt;&gt; </a>]</td>
3787+<td valign="middle" align="left"> &nbsp; </td>
3788+<td valign="middle" align="left"> &nbsp; </td>
3789+<td valign="middle" align="left"> &nbsp; </td>
3790+<td valign="middle" align="left"> &nbsp; </td>
3791+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
3792+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
3793+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
3794+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
3795+</tr></table>
3796+<a name="FAQ-1"></a>
3797+<h1 class="chapter">10. FAQ</h1>
3798+
3799+
3800+<dl compact="compact">
3801+<dt> &lsquo;<samp>Where do I send questions?</samp>&rsquo;</dt>
3802+<dd><a name="index-questions-is-sent-where_003f"></a>
3803+<p><a href="mailto:xnee-devel@gnu.org">xnee-devel@gnu.org</a>
3804+<br>
3805+</p>
3806+</dd>
3807+<dt> &lsquo;<samp>Where and how do I report bugs?</samp>&rsquo;</dt>
3808+<dd><a name="index-Report-bugs_003f"></a>
3809+<p>Turn on verbose mode <code>cnee --verbose</code> and save the printouts.
3810+Include all printouts and log files in the mail which is sent to
3811+<a href="mailto:bug-xnee@gnu.org">bug-xnee@gnu.org</a>
3812+<br>
3813+</p>
3814+</dd>
3815+<dt> &lsquo;<samp>Can you add xxx functionality to Xnee</samp>&rsquo;</dt>
3816+<dd><p> Send an email to <a href="mailto:xnee-devel@gnu.org">xnee-devel@gnu.org</a> and we&rsquo;ll consider it.
3817+</p>
3818+</dd>
3819+<dt> &lsquo;<samp>Why the name Xnee?</samp>&rsquo;</dt>
3820+<dd><a name="index-why-name-it-Xnee"></a>
3821+<p>We wanted to use a recursive acronym, as GNU (&ldquo;GNU&rsquo;s Not Unix&rsquo;).
3822+After having read the Wine documentation, we thought that Xnee is not an
3823+Event Emulator would work fine since Xnee is Not an Event Emulator but
3824+rather a event recorder and faker.
3825+</p>
3826+</dd>
3827+<dt> &lsquo;<samp>What does the name cnee mean?</samp>&rsquo;</dt>
3828+<dd><a name="index-What-does-the-name-cnee-mean_003f"></a>
3829+<p> cnee&rsquo;s not an event emulator
3830+</p>
3831+</dd>
3832+<dt> &lsquo;<samp>What does the name gnee mean?</samp>&rsquo;</dt>
3833+<dd><a name="index-What-does-the-name-gnee-mean_003f"></a>
3834+<p> gnee&rsquo;s not an emulator either
3835+</p>
3836+</dd>
3837+<dt> &lsquo;<samp>What does the name pnee mean?</samp>&rsquo;</dt>
3838+<dd><a name="index-What-does-the-name-gnee-mean_003f-1"></a>
3839+<p> pnee&rsquo;s not even emulating
3840+</p>
3841+
3842+</dd>
3843+<dt> &lsquo;<samp>What doesn't the name gnee mean?</samp>&rsquo;</dt>
3844+<dd><a name="index-What-does-the-name-gnee-mean_003f-2"></a>
3845+<p> gnee&rsquo;s not an Event Emulator
3846+</p>
3847+
3848+</dd>
3849+<dt> &lsquo;<samp>What license is Xnee released under ?</samp>&rsquo;</dt>
3850+<dd><a name="index-license"></a>
3851+<p>GPL version two or later. Which can be found at
3852+<a href="http://www.gnu.org/copyleft/gpl.html">http://www.gnu.org/copyleft/gpl.html</a>. Xnee will switch to GPLv3
3853+as soon as GPLv3 is released.
3854+</p>
3855+
3856+</dd>
3857+<dt> &lsquo;<samp>Where is the CVS repository?</samp>&rsquo;</dt>
3858+<dd><p>You can find a CVS tree at <a href="http://savannah.gnu.org">http://savannah.gnu.org</a>.
3859+You are more than welcome to join
3860+</p>
3861+</dd>
3862+<dt> &lsquo;<samp>Is there a GUI frontend for Xnee ?</samp>&rsquo;</dt>
3863+<dd><a name="index-GUI-frontend-for-Xnee"></a>
3864+<p>Yes! Gnee.
3865+</p>
3866+
3867+</dd>
3868+<dt> &lsquo;<samp>When setting ranges (integers), how do I know what numbers belong</samp>&rsquo; </dt>
3869+<dd><p>to X11 data?
3870+<a name="index-what-numbers-belong-to-X11-data_003f"></a>
3871+You can either type the data name directly (e.g MotionNotify) or you
3872+can use the
3873+print-xxx-name options.
3874+</p><ul>
3875+<li> <code>--print-data-name</code>
3876+</li><li> <code>--print-event-name</code>
3877+</li><li> <code>--print-error-name</code>
3878+</li><li> <code>--print-reply-name</code>
3879+</li><li> <code>--print-request-name</code>
3880+</li></ul>
3881+
3882+</dd>
3883+<dt> &lsquo;<samp>When I replay to another display the characters are not correct?</samp>&rsquo;</dt>
3884+<dd><a name="index-replay-to-another-display-the-characters-are-not-correct"></a>
3885+<p>Make sure you use the same keyboard mapping.
3886+<br>
3887+A typical example:
3888+<br>
3889+<br>
3890+Record local host using Xnee:
3891+<br>
3892+<code>cnee --record --out-file recorded_on_local.xnl </code>
3893+<br>
3894+<br>
3895+Store remote keymap:
3896+<br>
3897+<code>xmodmap -pke -display remote:0 &gt; remote.map </code>
3898+<br>
3899+<br>
3900+Store local keymap:
3901+<br>
3902+<code>xmodmap -pke &gt; local.map </code>
3903+<br>
3904+<br>
3905+Copy local keymap to remote host:
3906+<br>
3907+<code>cat local.map | xmodmap -display remote:0 - </code>
3908+<br>
3909+<br>
3910+Replay previously recorded session:
3911+<br>
3912+<code>cnee --replay --file recorded_on_local.xnl --display remote:0 </code>
3913+<br>
3914+<br>
3915+Copy the original remote keymap to remote host:
3916+<br>
3917+<code>cat remote.map | xmodmap -display remote:0 - </code>
3918+<br>
3919+<br>
3920+</p>
3921+</dd>
3922+<dt> &lsquo;<samp>When starting Xnee I am informed that I am missing the RECORD extension</samp>&rsquo;</dt>
3923+<dd><a name="index-missing-RECORD-extension"></a>
3924+<p>Your X server doesn&rsquo;t have the RECORD extension either loaded or compiled. To solve this you have to, depending on what Xserver you have do the following:
3925+</p>
3926+</dd>
3927+<dt> &lsquo;<samp>Can Xnee record more than one display?</samp>&rsquo;</dt>
3928+<dd><a name="index-can-Xnee-record-more-than-one-display"></a>
3929+<p>No, we used to consider adding the functionality but have no plans to
3930+implement it anymore.
3931+</p>
3932+</dd>
3933+<dt> &lsquo;<samp>When starting Xnee I am informed that I am missing the RECORD extension</samp>&rsquo;</dt>
3934+<dd><a name="index-missing-RECORD-extension-1"></a>
3935+<p>Your X server doesn&rsquo;t have the RECORD extension either loaded or compiled. To solve this you have to, depending on what Xserver you have do the following:
3936+</p>
3937+<ul>
3938+<li> XFree86 4.0 and higher
3939+Make sure that the RECORD extension is loaded. This is done by letting the Module section in the X config file (e.g /etc/X11/XF86Config-4) look something like:
3940+
3941+<p><code>Section &quot;Module&quot;</code><br>
3942+&nbsp;&nbsp;&nbsp;&nbsp;<code>Load &quot;dbe&quot; # Double-buffering</code><br>
3943+&nbsp;&nbsp;&nbsp;&nbsp;<code>Load &quot;GLcore&quot; # OpenGL support</code><br>
3944+&nbsp;&nbsp;&nbsp;&nbsp;<code>Load &quot;dri&quot; # Direct rendering infrastructure</code><br>
3945+&nbsp;&nbsp;&nbsp;&nbsp;<code>Load &quot;glx&quot; # OpenGL X protocol interface</code><br>
3946+&nbsp;&nbsp;&nbsp;&nbsp;<code>Load &quot;extmod&quot; # Misc. required extensions</code><br>
3947+&nbsp;&nbsp;&nbsp;&nbsp;<code>Load &quot;v4l&quot; # Video4Linux</code><br>
3948+&nbsp;&nbsp;&nbsp;&nbsp;<code># Load &quot;pex5&quot; # PHIGS for X 3D environment (obsolete)</code><br>
3949+&nbsp;&nbsp;&nbsp;&nbsp;<code>Load &quot;record&quot; # X event recorder</code><br>
3950+&nbsp;&nbsp;&nbsp;&nbsp;<code># Load &quot;xie&quot; # X Image Extension (obsolete)</code><br>
3951+&nbsp;&nbsp;&nbsp;&nbsp;<code># You only need the following two modules if you do not use xfs.</code><br>
3952+&nbsp;&nbsp;&nbsp;&nbsp;<code># Load &quot;freetype&quot; # TrueType font handler</code><br>
3953+&nbsp;&nbsp;&nbsp;&nbsp;<code># Load &quot;type1&quot; # Adobe Type 1 font handler</code><br>
3954+EndSection
3955+</p>
3956+<p>The important load directive (in this case) is the following line<br>
3957+&nbsp;&nbsp;&nbsp;&nbsp;<code>Load &quot;record&quot; # X event recorder</code><br>
3958+</p>
3959+
3960+
3961+</li><li> X.org, XFree86 (3.3 and lower) or any other Xserver
3962+Recompile and reinstall the Xserver and make sure that RECORD extension
3963+is built into the Xserver. Please look at the documentation from your
3964+Xserver &quot;vendor&quot; on how to do that.
3965+</li></ul>
3966+
3967+</dd>
3968+<dt> &lsquo;<samp>How do I build VNC so that I can use Xnee together with it?</samp>&rsquo;</dt>
3969+<dd><a name="index-Build-VNC-to-be-used-with-Xnee"></a>
3970+<br>
3971+<p>Download vnc source from:
3972+<br>
3973+<a href="http://www.uk.research.att.com/vnc/xvnchistory.html">http://www.uk.research.att.com/vnc/xvnchistory.html</a>
3974+<br>
3975+<br>
3976+In the file <code>Xvnc/config/cf/vnc.def</code> change NO on the following
3977+items to YES as below:
3978+<br>
3979+<code>#define BuildRECORD YES</code>
3980+<br>
3981+<code>#define BuildRECORDlib YES</code>
3982+<br>
3983+<br>
3984+Download the Xfree86 distribution from <a href="http://www.xfree86.org">http://www.xfree86.org</a>.
3985+Specifically, the following dir,
3986+(currently in the file <code>X430src-3.tgz file</code> ):
3987+<br>
3988+<code>tar zxvf \</code>
3989+<br>
3990+<code>X430src-3.tgz </code>
3991+<br>
3992+<code>xc/programs/Xserver/record/</code>
3993+<br>
3994+<code>xc/programs/Xserver/record/Imakefile</code>
3995+<br>
3996+<code>xc/programs/Xserver/record/record.c</code>
3997+<br>
3998+<code>xc/programs/Xserver/record/recordmod.c</code>
3999+<br>
4000+<code>xc/programs/Xserver/record/set.c</code>
4001+<br>
4002+<code>xc/programs/Xserver/record/set.h</code>
4003+<br>
4004+<code>xc/programs/Xserver/record/module/</code>
4005+<br>
4006+<code>xc/programs/Xserver/record/module/Imakefile</code>
4007+<br>
4008+<code>cp -rf \</code>
4009+<br>
4010+<code>xc/programs/Xserver/record \</code>
4011+<br>
4012+<code>vnc_unixsrc/Xvnc/programs/Xserver</code>
4013+<br>
4014+<code>cd libvncauth/</code>
4015+<code>xmkmf</code>
4016+<code>make all</code>
4017+<br>
4018+<code>cd Xvnc</code>
4019+<code>make World |&amp; tee LOG</code>
4020+<br>
4021+<br>
4022+Verify the build by running <code>xdpyinfo</code> in an xterm in the vncserver
4023+and verify that RECORD and XTEST extensions are loaded.
4024+</p>
4025+
4026+</dd>
4027+<dt> &lsquo;<samp>How do I ensure that the mouse, during replay, is at the same position (x,y) as when recorded?</samp>&rsquo;</dt>
4028+<dd><p>Use the <code>--store-mouse-pos</code> option.
4029+This will cause Xnee to store the mouse position before starting to record. This position will be used to set the start position before replaying of recorded data starts.
4030+</p>
4031+</dd>
4032+<dt> &lsquo;<samp>How do I ensure that the same window is focused as when recorded?</samp>&rsquo;</dt>
4033+<dd><p>It&rsquo;s simple, just make sure that you record the window getting focus.
4034+</p>
4035+</dd>
4036+<dt> &lsquo;<samp>The window pops up at different positions when replaying, can Xnee handle that?</samp>&rsquo;</dt>
4037+<dd><p>Yes, use the <code>--recall-window-position</code> option when
4038+replaying (with cnee). This makes cnee try yo reposition the window as
4039+it was positioned when recording the session.
4040+</p>
4041+</dd>
4042+<dt> &lsquo;<samp>Xnee seems to mess up my entire session after replaying a sessions which was interupted by Control-C?</samp>&rsquo;</dt>
4043+<dd><p>Xnee records the KeyPress belonging to Control. After that the system
4044+sends Xnee a signal which makes Xnee stop recording. So you end up
4045+having a Control KeyPress recorded, with no coresponding
4046+KeyRelease. To solve the screwed up session, press Control (which
4047+generates a KeyPress and the wanted KeyRelease). If you want to keep
4048+your recorded session and not want this to happen again, remove the
4049+last line in the recorded file starting with <code>2,</code>.
4050+</p>
4051+
4052+<p>A better way to interrupt Xnee is to use the stop key option, e.g in
4053+cnee <code>--stop-key F1</code>. This prevents the above situation.
4054+</p>
4055+
4056+</dd>
4057+<dt> &lsquo;<samp>Autorepeat is turned off by Xnee, how do I turn it on again?</samp>&rsquo;</dt>
4058+<dd><p><code>xset r on</code>
4059+</p>
4060+
4061+</dd>
4062+</dl>
4063+
4064+
4065+
4066+
4067+<hr size="6">
4068+<a name="Copying-This-Manual"></a>
4069+<table cellpadding="1" cellspacing="1" border="0">
4070+<tr><td valign="middle" align="left">[<a href="#FAQ" title="Previous section in reading order"> &lt; </a>]</td>
4071+<td valign="middle" align="left">[<a href="#GNU-Free-Documentation-License" title="Next section in reading order"> &gt; </a>]</td>
4072+<td valign="middle" align="left"> &nbsp; </td>
4073+<td valign="middle" align="left">[<a href="#FAQ" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
4074+<td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
4075+<td valign="middle" align="left">[<a href="#Index" title="Next chapter"> &gt;&gt; </a>]</td>
4076+<td valign="middle" align="left"> &nbsp; </td>
4077+<td valign="middle" align="left"> &nbsp; </td>
4078+<td valign="middle" align="left"> &nbsp; </td>
4079+<td valign="middle" align="left"> &nbsp; </td>
4080+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
4081+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
4082+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
4083+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
4084+</tr></table>
4085+<a name="Copying-This-Manual-1"></a>
4086+<h1 class="appendix">A. Copying This Manual</h1>
4087+<hr size="6">
4088+<a name="GNU-Free-Documentation-License"></a>
4089+<table cellpadding="1" cellspacing="1" border="0">
4090+<tr><td valign="middle" align="left">[<a href="#Copying-This-Manual" title="Previous section in reading order"> &lt; </a>]</td>
4091+<td valign="middle" align="left">[<a href="#Index" title="Next section in reading order"> &gt; </a>]</td>
4092+<td valign="middle" align="left"> &nbsp; </td>
4093+<td valign="middle" align="left">[<a href="#Copying-This-Manual" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
4094+<td valign="middle" align="left">[<a href="#Copying-This-Manual" title="Up section"> Up </a>]</td>
4095+<td valign="middle" align="left">[<a href="#Index" title="Next chapter"> &gt;&gt; </a>]</td>
4096+<td valign="middle" align="left"> &nbsp; </td>
4097+<td valign="middle" align="left"> &nbsp; </td>
4098+<td valign="middle" align="left"> &nbsp; </td>
4099+<td valign="middle" align="left"> &nbsp; </td>
4100+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
4101+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
4102+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
4103+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
4104+</tr></table>
4105+<h2 class="appendixsec">A.1 GNU Free Documentation License</h2>
4106+
4107+<a name="index-FDL_002c-GNU-Free-Documentation-License"></a>
4108+<p align="center"> Version 1.2, November 2002
4109+</p>
4110+<table><tr><td>&nbsp;</td><td><pre class="display">Copyright &copy; 2000,2001,2002 Free Software Foundation, Inc.
4111+51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
4112+
4113+Everyone is permitted to copy and distribute verbatim copies
4114+of this license document, but changing it is not allowed.
4115+</pre></td></tr></table>
4116+
4117+<ol>
4118+<li>
4119+PREAMBLE
4120+
4121+<p>The purpose of this License is to make a manual, textbook, or other
4122+functional and useful document <em>free</em> in the sense of freedom: to
4123+assure everyone the effective freedom to copy and redistribute it,
4124+with or without modifying it, either commercially or noncommercially.
4125+Secondarily, this License preserves for the author and publisher a way
4126+to get credit for their work, while not being considered responsible
4127+for modifications made by others.
4128+</p>
4129+<p>This License is a kind of &ldquo;copyleft&rdquo;, which means that derivative
4130+works of the document must themselves be free in the same sense. It
4131+complements the GNU General Public License, which is a copyleft
4132+license designed for free software.
4133+</p>
4134+<p>We have designed this License in order to use it for manuals for free
4135+software, because free software needs free documentation: a free
4136+program should come with manuals providing the same freedoms that the
4137+software does. But this License is not limited to software manuals;
4138+it can be used for any textual work, regardless of subject matter or
4139+whether it is published as a printed book. We recommend this License
4140+principally for works whose purpose is instruction or reference.
4141+</p>
4142+</li><li>
4143+APPLICABILITY AND DEFINITIONS
4144+
4145+<p>This License applies to any manual or other work, in any medium, that
4146+contains a notice placed by the copyright holder saying it can be
4147+distributed under the terms of this License. Such a notice grants a
4148+world-wide, royalty-free license, unlimited in duration, to use that
4149+work under the conditions stated herein. The &ldquo;Document&rdquo;, below,
4150+refers to any such manual or work. Any member of the public is a
4151+licensee, and is addressed as &ldquo;you&rdquo;. You accept the license if you
4152+copy, modify or distribute the work in a way requiring permission
4153+under copyright law.
4154+</p>
4155+<p>A &ldquo;Modified Version&rdquo; of the Document means any work containing the
4156+Document or a portion of it, either copied verbatim, or with
4157+modifications and/or translated into another language.
4158+</p>
4159+<p>A &ldquo;Secondary Section&rdquo; is a named appendix or a front-matter section
4160+of the Document that deals exclusively with the relationship of the
4161+publishers or authors of the Document to the Document&rsquo;s overall
4162+subject (or to related matters) and contains nothing that could fall
4163+directly within that overall subject. (Thus, if the Document is in
4164+part a textbook of mathematics, a Secondary Section may not explain
4165+any mathematics.) The relationship could be a matter of historical
4166+connection with the subject or with related matters, or of legal,
4167+commercial, philosophical, ethical or political position regarding
4168+them.
4169+</p>
4170+<p>The &ldquo;Invariant Sections&rdquo; are certain Secondary Sections whose titles
4171+are designated, as being those of Invariant Sections, in the notice
4172+that says that the Document is released under this License. If a
4173+section does not fit the above definition of Secondary then it is not
4174+allowed to be designated as Invariant. The Document may contain zero
4175+Invariant Sections. If the Document does not identify any Invariant
4176+Sections then there are none.
4177+</p>
4178+<p>The &ldquo;Cover Texts&rdquo; are certain short passages of text that are listed,
4179+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
4180+the Document is released under this License. A Front-Cover Text may
4181+be at most 5 words, and a Back-Cover Text may be at most 25 words.
4182+</p>
4183+<p>A &ldquo;Transparent&rdquo; copy of the Document means a machine-readable copy,
4184+represented in a format whose specification is available to the
4185+general public, that is suitable for revising the document
4186+straightforwardly with generic text editors or (for images composed of
4187+pixels) generic paint programs or (for drawings) some widely available
4188+drawing editor, and that is suitable for input to text formatters or
4189+for automatic translation to a variety of formats suitable for input
4190+to text formatters. A copy made in an otherwise Transparent file
4191+format whose markup, or absence of markup, has been arranged to thwart
4192+or discourage subsequent modification by readers is not Transparent.
4193+An image format is not Transparent if used for any substantial amount
4194+of text. A copy that is not &ldquo;Transparent&rdquo; is called &ldquo;Opaque&rdquo;.
4195+</p>
4196+<p>Examples of suitable formats for Transparent copies include plain
4197+<small>ASCII</small> without markup, Texinfo input format, LaTeX input
4198+format, <acronym>SGML</acronym> or <acronym>XML</acronym> using a publicly available
4199+<acronym>DTD</acronym>, and standard-conforming simple <acronym>HTML</acronym>,
4200+PostScript or <acronym>PDF</acronym> designed for human modification. Examples
4201+of transparent image formats include <acronym>PNG</acronym>, <acronym>XCF</acronym> and
4202+<acronym>JPG</acronym>. Opaque formats include proprietary formats that can be
4203+read and edited only by proprietary word processors, <acronym>SGML</acronym> or
4204+<acronym>XML</acronym> for which the <acronym>DTD</acronym> and/or processing tools are
4205+not generally available, and the machine-generated <acronym>HTML</acronym>,
4206+PostScript or <acronym>PDF</acronym> produced by some word processors for
4207+output purposes only.
4208+</p>
4209+<p>The &ldquo;Title Page&rdquo; means, for a printed book, the title page itself,
4210+plus such following pages as are needed to hold, legibly, the material
4211+this License requires to appear in the title page. For works in
4212+formats which do not have any title page as such, &ldquo;Title Page&rdquo; means
4213+the text near the most prominent appearance of the work&rsquo;s title,
4214+preceding the beginning of the body of the text.
4215+</p>
4216+<p>A section &ldquo;Entitled XYZ&rdquo; means a named subunit of the Document whose
4217+title either is precisely XYZ or contains XYZ in parentheses following
4218+text that translates XYZ in another language. (Here XYZ stands for a
4219+specific section name mentioned below, such as &ldquo;Acknowledgements&rdquo;,
4220+&ldquo;Dedications&rdquo;, &ldquo;Endorsements&rdquo;, or &ldquo;History&rdquo;.) To &ldquo;Preserve the Title&rdquo;
4221+of such a section when you modify the Document means that it remains a
4222+section &ldquo;Entitled XYZ&rdquo; according to this definition.
4223+</p>
4224+<p>The Document may include Warranty Disclaimers next to the notice which
4225+states that this License applies to the Document. These Warranty
4226+Disclaimers are considered to be included by reference in this
4227+License, but only as regards disclaiming warranties: any other
4228+implication that these Warranty Disclaimers may have is void and has
4229+no effect on the meaning of this License.
4230+</p>
4231+</li><li>
4232+VERBATIM COPYING
4233+
4234+<p>You may copy and distribute the Document in any medium, either
4235+commercially or noncommercially, provided that this License, the
4236+copyright notices, and the license notice saying this License applies
4237+to the Document are reproduced in all copies, and that you add no other
4238+conditions whatsoever to those of this License. You may not use
4239+technical measures to obstruct or control the reading or further
4240+copying of the copies you make or distribute. However, you may accept
4241+compensation in exchange for copies. If you distribute a large enough
4242+number of copies you must also follow the conditions in section 3.
4243+</p>
4244+<p>You may also lend copies, under the same conditions stated above, and
4245+you may publicly display copies.
4246+</p>
4247+</li><li>
4248+COPYING IN QUANTITY
4249+
4250+<p>If you publish printed copies (or copies in media that commonly have
4251+printed covers) of the Document, numbering more than 100, and the
4252+Document&rsquo;s license notice requires Cover Texts, you must enclose the
4253+copies in covers that carry, clearly and legibly, all these Cover
4254+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
4255+the back cover. Both covers must also clearly and legibly identify
4256+you as the publisher of these copies. The front cover must present
4257+the full title with all words of the title equally prominent and
4258+visible. You may add other material on the covers in addition.
4259+Copying with changes limited to the covers, as long as they preserve
4260+the title of the Document and satisfy these conditions, can be treated
4261+as verbatim copying in other respects.
4262+</p>
4263+<p>If the required texts for either cover are too voluminous to fit
4264+legibly, you should put the first ones listed (as many as fit
4265+reasonably) on the actual cover, and continue the rest onto adjacent
4266+pages.
4267+</p>
4268+<p>If you publish or distribute Opaque copies of the Document numbering
4269+more than 100, you must either include a machine-readable Transparent
4270+copy along with each Opaque copy, or state in or with each Opaque copy
4271+a computer-network location from which the general network-using
4272+public has access to download using public-standard network protocols
4273+a complete Transparent copy of the Document, free of added material.
4274+If you use the latter option, you must take reasonably prudent steps,
4275+when you begin distribution of Opaque copies in quantity, to ensure
4276+that this Transparent copy will remain thus accessible at the stated
4277+location until at least one year after the last time you distribute an
4278+Opaque copy (directly or through your agents or retailers) of that
4279+edition to the public.
4280+</p>
4281+<p>It is requested, but not required, that you contact the authors of the
4282+Document well before redistributing any large number of copies, to give
4283+them a chance to provide you with an updated version of the Document.
4284+</p>
4285+</li><li>
4286+MODIFICATIONS
4287+
4288+<p>You may copy and distribute a Modified Version of the Document under
4289+the conditions of sections 2 and 3 above, provided that you release
4290+the Modified Version under precisely this License, with the Modified
4291+Version filling the role of the Document, thus licensing distribution
4292+and modification of the Modified Version to whoever possesses a copy
4293+of it. In addition, you must do these things in the Modified Version:
4294+</p>
4295+<ol>
4296+<li>
4297+Use in the Title Page (and on the covers, if any) a title distinct
4298+from that of the Document, and from those of previous versions
4299+(which should, if there were any, be listed in the History section
4300+of the Document). You may use the same title as a previous version
4301+if the original publisher of that version gives permission.
4302+
4303+</li><li>
4304+List on the Title Page, as authors, one or more persons or entities
4305+responsible for authorship of the modifications in the Modified
4306+Version, together with at least five of the principal authors of the
4307+Document (all of its principal authors, if it has fewer than five),
4308+unless they release you from this requirement.
4309+
4310+</li><li>
4311+State on the Title page the name of the publisher of the
4312+Modified Version, as the publisher.
4313+
4314+</li><li>
4315+Preserve all the copyright notices of the Document.
4316+
4317+</li><li>
4318+Add an appropriate copyright notice for your modifications
4319+adjacent to the other copyright notices.
4320+
4321+</li><li>
4322+Include, immediately after the copyright notices, a license notice
4323+giving the public permission to use the Modified Version under the
4324+terms of this License, in the form shown in the Addendum below.
4325+
4326+</li><li>
4327+Preserve in that license notice the full lists of Invariant Sections
4328+and required Cover Texts given in the Document&rsquo;s license notice.
4329+
4330+</li><li>
4331+Include an unaltered copy of this License.
4332+
4333+</li><li>
4334+Preserve the section Entitled &ldquo;History&rdquo;, Preserve its Title, and add
4335+to it an item stating at least the title, year, new authors, and
4336+publisher of the Modified Version as given on the Title Page. If
4337+there is no section Entitled &ldquo;History&rdquo; in the Document, create one
4338+stating the title, year, authors, and publisher of the Document as
4339+given on its Title Page, then add an item describing the Modified
4340+Version as stated in the previous sentence.
4341+
4342+</li><li>
4343+Preserve the network location, if any, given in the Document for
4344+public access to a Transparent copy of the Document, and likewise
4345+the network locations given in the Document for previous versions
4346+it was based on. These may be placed in the &ldquo;History&rdquo; section.
4347+You may omit a network location for a work that was published at
4348+least four years before the Document itself, or if the original
4349+publisher of the version it refers to gives permission.
4350+
4351+</li><li>
4352+For any section Entitled &ldquo;Acknowledgements&rdquo; or &ldquo;Dedications&rdquo;, Preserve
4353+the Title of the section, and preserve in the section all the
4354+substance and tone of each of the contributor acknowledgements and/or
4355+dedications given therein.
4356+
4357+</li><li>
4358+Preserve all the Invariant Sections of the Document,
4359+unaltered in their text and in their titles. Section numbers
4360+or the equivalent are not considered part of the section titles.
4361+
4362+</li><li>
4363+Delete any section Entitled &ldquo;Endorsements&rdquo;. Such a section
4364+may not be included in the Modified Version.
4365+
4366+</li><li>
4367+Do not retitle any existing section to be Entitled &ldquo;Endorsements&rdquo; or
4368+to conflict in title with any Invariant Section.
4369+
4370+</li><li>
4371+Preserve any Warranty Disclaimers.
4372+</li></ol>
4373+
4374+<p>If the Modified Version includes new front-matter sections or
4375+appendices that qualify as Secondary Sections and contain no material
4376+copied from the Document, you may at your option designate some or all
4377+of these sections as invariant. To do this, add their titles to the
4378+list of Invariant Sections in the Modified Version&rsquo;s license notice.
4379+These titles must be distinct from any other section titles.
4380+</p>
4381+<p>You may add a section Entitled &ldquo;Endorsements&rdquo;, provided it contains
4382+nothing but endorsements of your Modified Version by various
4383+parties&mdash;for example, statements of peer review or that the text has
4384+been approved by an organization as the authoritative definition of a
4385+standard.
4386+</p>
4387+<p>You may add a passage of up to five words as a Front-Cover Text, and a
4388+passage of up to 25 words as a Back-Cover Text, to the end of the list
4389+of Cover Texts in the Modified Version. Only one passage of
4390+Front-Cover Text and one of Back-Cover Text may be added by (or
4391+through arrangements made by) any one entity. If the Document already
4392+includes a cover text for the same cover, previously added by you or
4393+by arrangement made by the same entity you are acting on behalf of,
4394+you may not add another; but you may replace the old one, on explicit
4395+permission from the previous publisher that added the old one.
4396+</p>
4397+<p>The author(s) and publisher(s) of the Document do not by this License
4398+give permission to use their names for publicity for or to assert or
4399+imply endorsement of any Modified Version.
4400+</p>
4401+</li><li>
4402+COMBINING DOCUMENTS
4403+
4404+<p>You may combine the Document with other documents released under this
4405+License, under the terms defined in section 4 above for modified
4406+versions, provided that you include in the combination all of the
4407+Invariant Sections of all of the original documents, unmodified, and
4408+list them all as Invariant Sections of your combined work in its
4409+license notice, and that you preserve all their Warranty Disclaimers.
4410+</p>
4411+<p>The combined work need only contain one copy of this License, and
4412+multiple identical Invariant Sections may be replaced with a single
4413+copy. If there are multiple Invariant Sections with the same name but
4414+different contents, make the title of each such section unique by
4415+adding at the end of it, in parentheses, the name of the original
4416+author or publisher of that section if known, or else a unique number.
4417+Make the same adjustment to the section titles in the list of
4418+Invariant Sections in the license notice of the combined work.
4419+</p>
4420+<p>In the combination, you must combine any sections Entitled &ldquo;History&rdquo;
4421+in the various original documents, forming one section Entitled
4422+&ldquo;History&rdquo;; likewise combine any sections Entitled &ldquo;Acknowledgements&rdquo;,
4423+and any sections Entitled &ldquo;Dedications&rdquo;. You must delete all
4424+sections Entitled &ldquo;Endorsements.&rdquo;
4425+</p>
4426+</li><li>
4427+COLLECTIONS OF DOCUMENTS
4428+
4429+<p>You may make a collection consisting of the Document and other documents
4430+released under this License, and replace the individual copies of this
4431+License in the various documents with a single copy that is included in
4432+the collection, provided that you follow the rules of this License for
4433+verbatim copying of each of the documents in all other respects.
4434+</p>
4435+<p>You may extract a single document from such a collection, and distribute
4436+it individually under this License, provided you insert a copy of this
4437+License into the extracted document, and follow this License in all
4438+other respects regarding verbatim copying of that document.
4439+</p>
4440+</li><li>
4441+AGGREGATION WITH INDEPENDENT WORKS
4442+
4443+<p>A compilation of the Document or its derivatives with other separate
4444+and independent documents or works, in or on a volume of a storage or
4445+distribution medium, is called an &ldquo;aggregate&rdquo; if the copyright
4446+resulting from the compilation is not used to limit the legal rights
4447+of the compilation&rsquo;s users beyond what the individual works permit.
4448+When the Document is included an aggregate, this License does not
4449+apply to the other works in the aggregate which are not themselves
4450+derivative works of the Document.
4451+</p>
4452+<p>If the Cover Text requirement of section 3 is applicable to these
4453+copies of the Document, then if the Document is less than one half of
4454+the entire aggregate, the Document&rsquo;s Cover Texts may be placed on
4455+covers that bracket the Document within the aggregate, or the
4456+electronic equivalent of covers if the Document is in electronic form.
4457+Otherwise they must appear on printed covers that bracket the whole
4458+aggregate.
4459+</p>
4460+</li><li>
4461+TRANSLATION
4462+
4463+<p>Translation is considered a kind of modification, so you may
4464+distribute translations of the Document under the terms of section 4.
4465+Replacing Invariant Sections with translations requires special
4466+permission from their copyright holders, but you may include
4467+translations of some or all Invariant Sections in addition to the
4468+original versions of these Invariant Sections. You may include a
4469+translation of this License, and all the license notices in the
4470+Document, and any Warrany Disclaimers, provided that you also include
4471+the original English version of this License and the original versions
4472+of those notices and disclaimers. In case of a disagreement between
4473+the translation and the original version of this License or a notice
4474+or disclaimer, the original version will prevail.
4475+</p>
4476+<p>If a section in the Document is Entitled &ldquo;Acknowledgements&rdquo;,
4477+&ldquo;Dedications&rdquo;, or &ldquo;History&rdquo;, the requirement (section 4) to Preserve
4478+its Title (section 1) will typically require changing the actual
4479+title.
4480+</p>
4481+</li><li>
4482+TERMINATION
4483+
4484+<p>You may not copy, modify, sublicense, or distribute the Document except
4485+as expressly provided for under this License. Any other attempt to
4486+copy, modify, sublicense or distribute the Document is void, and will
4487+automatically terminate your rights under this License. However,
4488+parties who have received copies, or rights, from you under this
4489+License will not have their licenses terminated so long as such
4490+parties remain in full compliance.
4491+</p>
4492+</li><li>
4493+FUTURE REVISIONS OF THIS LICENSE
4494+
4495+<p>The Free Software Foundation may publish new, revised versions
4496+of the GNU Free Documentation License from time to time. Such new
4497+versions will be similar in spirit to the present version, but may
4498+differ in detail to address new problems or concerns. See
4499+<a href="http://www.gnu.org/copyleft/">http://www.gnu.org/copyleft/</a>.
4500+</p>
4501+<p>Each version of the License is given a distinguishing version number.
4502+If the Document specifies that a particular numbered version of this
4503+License &ldquo;or any later version&rdquo; applies to it, you have the option of
4504+following the terms and conditions either of that specified version or
4505+of any later version that has been published (not as a draft) by the
4506+Free Software Foundation. If the Document does not specify a version
4507+number of this License, you may choose any version ever published (not
4508+as a draft) by the Free Software Foundation.
4509+</p></li></ol>
4510+
4511+
4512+
4513+
4514+
4515+
4516+<hr size="6">
4517+<a name="Index"></a>
4518+<table cellpadding="1" cellspacing="1" border="0">
4519+<tr><td valign="middle" align="left">[<a href="#GNU-Free-Documentation-License" title="Previous section in reading order"> &lt; </a>]</td>
4520+<td valign="middle" align="left">[ &gt; ]</td>
4521+<td valign="middle" align="left"> &nbsp; </td>
4522+<td valign="middle" align="left">[<a href="#Copying-This-Manual" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
4523+<td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
4524+<td valign="middle" align="left">[ &gt;&gt; ]</td>
4525+<td valign="middle" align="left"> &nbsp; </td>
4526+<td valign="middle" align="left"> &nbsp; </td>
4527+<td valign="middle" align="left"> &nbsp; </td>
4528+<td valign="middle" align="left"> &nbsp; </td>
4529+<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
4530+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
4531+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
4532+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
4533+</tr></table>
4534+<a name="Index-1"></a>
4535+<h1 class="chapter">B. Index</h1>
4536+<table><tr><th valign="top">Jump to: &nbsp; </th><td><a href="#Index-1_cp_letter-B" class="summary-letter"><b>B</b></a>
4537+ &nbsp;
4538+<a href="#Index-1_cp_letter-C" class="summary-letter"><b>C</b></a>
4539+ &nbsp;
4540+<a href="#Index-1_cp_letter-D" class="summary-letter"><b>D</b></a>
4541+ &nbsp;
4542+<a href="#Index-1_cp_letter-E" class="summary-letter"><b>E</b></a>
4543+ &nbsp;
4544+<a href="#Index-1_cp_letter-F" class="summary-letter"><b>F</b></a>
4545+ &nbsp;
4546+<a href="#Index-1_cp_letter-G" class="summary-letter"><b>G</b></a>
4547+ &nbsp;
4548+<a href="#Index-1_cp_letter-H" class="summary-letter"><b>H</b></a>
4549+ &nbsp;
4550+<a href="#Index-1_cp_letter-I" class="summary-letter"><b>I</b></a>
4551+ &nbsp;
4552+<a href="#Index-1_cp_letter-K" class="summary-letter"><b>K</b></a>
4553+ &nbsp;
4554+<a href="#Index-1_cp_letter-L" class="summary-letter"><b>L</b></a>
4555+ &nbsp;
4556+<a href="#Index-1_cp_letter-M" class="summary-letter"><b>M</b></a>
4557+ &nbsp;
4558+<a href="#Index-1_cp_letter-P" class="summary-letter"><b>P</b></a>
4559+ &nbsp;
4560+<a href="#Index-1_cp_letter-Q" class="summary-letter"><b>Q</b></a>
4561+ &nbsp;
4562+<a href="#Index-1_cp_letter-R" class="summary-letter"><b>R</b></a>
4563+ &nbsp;
4564+<a href="#Index-1_cp_letter-S" class="summary-letter"><b>S</b></a>
4565+ &nbsp;
4566+<a href="#Index-1_cp_letter-U" class="summary-letter"><b>U</b></a>
4567+ &nbsp;
4568+<a href="#Index-1_cp_letter-W" class="summary-letter"><b>W</b></a>
4569+ &nbsp;
4570+<a href="#Index-1_cp_letter-X" class="summary-letter"><b>X</b></a>
4571+ &nbsp;
4572+</td></tr></table>
4573+<table border="0" class="index-cp">
4574+<tr><td></td><th align="left">Index Entry</th><th align="left"> Section</th></tr>
4575+<tr><td colspan="3"> <hr></td></tr>
4576+<tr><th><a name="Index-1_cp_letter-B">B</a></th><td></td><td></td></tr>
4577+<tr><td></td><td valign="top"><a href="#index-background">background</a></td><td valign="top"><a href="#Background">1.3 Background</a></td></tr>
4578+<tr><td></td><td valign="top"><a href="#index-Build-VNC-to-be-used-with-Xnee">Build VNC to be used with Xnee</a></td><td valign="top"><a href="#FAQ">10. FAQ</a></td></tr>
4579+<tr><td colspan="3"> <hr></td></tr>
4580+<tr><th><a name="Index-1_cp_letter-C">C</a></th><td></td><td></td></tr>
4581+<tr><td></td><td valign="top"><a href="#index-can-Xnee-record-more-than-one-display">can Xnee record more than one display</a></td><td valign="top"><a href="#FAQ">10. FAQ</a></td></tr>
4582+<tr><td></td><td valign="top"><a href="#index-command-line-syntax">command line syntax</a></td><td valign="top"><a href="#Command-line-syntax">3.8.1 Command line syntax</a></td></tr>
4583+<tr><td></td><td valign="top"><a href="#index-Comment-directives">Comment directives</a></td><td valign="top"><a href="#Comment">7.4.1 Comment</a></td></tr>
4584+<tr><td></td><td valign="top"><a href="#index-Create-a-project-file">Create a project file</a></td><td valign="top"><a href="#Create-a-project-file">7.1.1 Create a project file</a></td></tr>
4585+<tr><td colspan="3"> <hr></td></tr>
4586+<tr><th><a name="Index-1_cp_letter-D">D</a></th><td></td><td></td></tr>
4587+<tr><td></td><td valign="top"><a href="#index-Define-a-simple-macro">Define a simple macro</a></td><td valign="top"><a href="#Define-a-simple-macro">5.6.1 Define a simple macro</a></td></tr>
4588+<tr><td></td><td valign="top"><a href="#index-Define-another-simple-macro">Define another simple macro</a></td><td valign="top"><a href="#Define-another-simple-macro">5.6.2 Define another simple macro</a></td></tr>
4589+<tr><td></td><td valign="top"><a href="#index-development-requirements">development requirements</a></td><td valign="top"><a href="#Development-requirements">9.2 Development requirements</a></td></tr>
4590+<tr><td></td><td valign="top"><a href="#index-Distribute-the-replaying-of-mouse-motions">Distribute the replaying of mouse motions</a></td><td valign="top"><a href="#Distribute-the-replaying-of-mouse-motions">5.4.2 Distribute the replaying of mouse motions</a></td></tr>
4591+<tr><td></td><td valign="top"><a href="#index-Distribute-the-retyping-of-a-file">Distribute the retyping of a file</a></td><td valign="top"><a href="#Distribute-the-retyping-of-a-file">5.4.3 Distribute the retyping of a file</a></td></tr>
4592+<tr><td></td><td valign="top"><a href="#index-Distribute-your-mouse-motions">Distribute your mouse motions</a></td><td valign="top"><a href="#Distribute-your-mouse-motions">5.4.1 Distribute your mouse motions</a></td></tr>
4593+<tr><td></td><td valign="top"><a href="#index-distributing">distributing</a></td><td valign="top"><a href="#Distribution">3.2.4 Distribution</a></td></tr>
4594+<tr><td colspan="3"> <hr></td></tr>
4595+<tr><th><a name="Index-1_cp_letter-E">E</a></th><td></td><td></td></tr>
4596+<tr><td></td><td valign="top"><a href="#index-Example-Xnee-Session-files">Example Xnee Session files</a></td><td valign="top"><a href="#Example-Xnee-Session-files">2.1.7 Example Xnee Session files</a></td></tr>
4597+<tr><td></td><td valign="top"><a href="#index-Exec-directive">Exec directive</a></td><td valign="top"><a href="#Exec">7.4.6 Exec</a></td></tr>
4598+<tr><td colspan="3"> <hr></td></tr>
4599+<tr><th><a name="Index-1_cp_letter-F">F</a></th><td></td><td></td></tr>
4600+<tr><td></td><td valign="top"><a href="#index-FDL_002c-GNU-Free-Documentation-License">FDL, GNU Free Documentation License</a></td><td valign="top"><a href="#GNU-Free-Documentation-License">A.1 GNU Free Documentation License</a></td></tr>
4601+<tr><td></td><td valign="top"><a href="#index-features">features</a></td><td valign="top"><a href="#Xnee-features">1.2 Xnee features</a></td></tr>
4602+<tr><td></td><td valign="top"><a href="#index-Functional-overview">Functional overview</a></td><td valign="top"><a href="#Functional-overview-1">3.1 Functional overview</a></td></tr>
4603+<tr><td colspan="3"> <hr></td></tr>
4604+<tr><th><a name="Index-1_cp_letter-G">G</a></th><td></td><td></td></tr>
4605+<tr><td></td><td valign="top"><a href="#index-Getting-started">Getting started</a></td><td valign="top"><a href="#Getting-started-1">2.1 Getting started</a></td></tr>
4606+<tr><td></td><td valign="top"><a href="#index-GUI-frontend-for-Xnee">GUI frontend for Xnee</a></td><td valign="top"><a href="#FAQ">10. FAQ</a></td></tr>
4607+<tr><td colspan="3"> <hr></td></tr>
4608+<tr><th><a name="Index-1_cp_letter-H">H</a></th><td></td><td></td></tr>
4609+<tr><td></td><td valign="top"><a href="#index-how-to-synchronise">how to synchronise</a></td><td valign="top"><a href="#How-to-synchronise">8.1.2 How to synchronise</a></td></tr>
4610+<tr><td colspan="3"> <hr></td></tr>
4611+<tr><th><a name="Index-1_cp_letter-I">I</a></th><td></td><td></td></tr>
4612+<tr><td></td><td valign="top"><a href="#index-Insert-marks-Xnee-with-key-combination">Insert marks Xnee with key combination</a></td><td valign="top"><a href="#Insert-marks-Xnee-with-key-combination">3.9.7 Insert marks Xnee with key combination</a></td></tr>
4613+<tr><td></td><td valign="top"><a href="#index-Interupting-xnee">Interupting xnee</a></td><td valign="top"><a href="#Interupting-Xnee">3.9 Interupting Xnee</a></td></tr>
4614+<tr><td colspan="3"> <hr></td></tr>
4615+<tr><th><a name="Index-1_cp_letter-K">K</a></th><td></td><td></td></tr>
4616+<tr><td></td><td valign="top"><a href="#index-key">key</a></td><td valign="top"><a href="#modifier-and-key">3.9.1 modifier and key</a></td></tr>
4617+<tr><td colspan="3"> <hr></td></tr>
4618+<tr><th><a name="Index-1_cp_letter-L">L</a></th><td></td><td></td></tr>
4619+<tr><td></td><td valign="top"><a href="#index-license">license</a></td><td valign="top"><a href="#FAQ">10. FAQ</a></td></tr>
4620+<tr><td></td><td valign="top"><a href="#index-limit-the-data">limit the data</a></td><td valign="top"><a href="#Limit-the-data-to-record">3.9.10 Limit the data to record</a></td></tr>
4621+<tr><td></td><td valign="top"><a href="#index-limit-the-events">limit the events</a></td><td valign="top"><a href="#Limit-the-events-to-record">3.9.9 Limit the events to record</a></td></tr>
4622+<tr><td></td><td valign="top"><a href="#index-limit-the-events-1">limit the events</a></td><td valign="top"><a href="#Limit-the-time-to-record">3.9.11 Limit the time to record</a></td></tr>
4623+<tr><td colspan="3"> <hr></td></tr>
4624+<tr><th><a name="Index-1_cp_letter-M">M</a></th><td></td><td></td></tr>
4625+<tr><td></td><td valign="top"><a href="#index-Mark-directive">Mark directive</a></td><td valign="top"><a href="#Mark">7.4.5 Mark</a></td></tr>
4626+<tr><td></td><td valign="top"><a href="#index-missing-RECORD-extension">missing RECORD extension</a></td><td valign="top"><a href="#FAQ">10. FAQ</a></td></tr>
4627+<tr><td></td><td valign="top"><a href="#index-missing-RECORD-extension-1">missing RECORD extension</a></td><td valign="top"><a href="#FAQ">10. FAQ</a></td></tr>
4628+<tr><td></td><td valign="top"><a href="#index-modes">modes</a></td><td valign="top"><a href="#Modes">3.2 Modes</a></td></tr>
4629+<tr><td></td><td valign="top"><a href="#index-modifier">modifier</a></td><td valign="top"><a href="#modifier-and-key">3.9.1 modifier and key</a></td></tr>
4630+<tr><td colspan="3"> <hr></td></tr>
4631+<tr><th><a name="Index-1_cp_letter-P">P</a></th><td></td><td></td></tr>
4632+<tr><td></td><td valign="top"><a href="#index-Pause-Xnee-with-key-combination">Pause Xnee with key combination</a></td><td valign="top"><a href="#Pause-Xnee-with-key-combination">3.9.5 Pause Xnee with key combination</a></td></tr>
4633+<tr><td></td><td valign="top"><a href="#index-Pause-Xnee-with-key-combination-1">Pause Xnee with key combination</a></td><td valign="top"><a href="#Pause-Xnee-with-key-combination-1">3.9.6 Pause Xnee with key combination</a></td></tr>
4634+<tr><td></td><td valign="top"><a href="#index-Pausing-and-resuming-Xnee-with-key">Pausing and resuming Xnee with key</a></td><td valign="top"><a href="#Pausing-and-resuming-Xnee-with-key">5.5.2 Pausing and resuming Xnee with key</a></td></tr>
4635+<tr><td></td><td valign="top"><a href="#index-plugins">plugins</a></td><td valign="top"><a href="#Xnee-plugins">3.10 Xnee plugins</a></td></tr>
4636+<tr><td></td><td valign="top"><a href="#index-Project-file">Project file</a></td><td valign="top"><a href="#Project-file">7.1 Project file</a></td></tr>
4637+<tr><td></td><td valign="top"><a href="#index-Project-information-directive">Project information directive</a></td><td valign="top"><a href="#Project-information">7.4.7 Project information</a></td></tr>
4638+<tr><td colspan="3"> <hr></td></tr>
4639+<tr><th><a name="Index-1_cp_letter-Q">Q</a></th><td></td><td></td></tr>
4640+<tr><td></td><td valign="top"><a href="#index-questions-is-sent-where_003f">questions is sent where?</a></td><td valign="top"><a href="#FAQ">10. FAQ</a></td></tr>
4641+<tr><td colspan="3"> <hr></td></tr>
4642+<tr><th><a name="Index-1_cp_letter-R">R</a></th><td></td><td></td></tr>
4643+<tr><td></td><td valign="top"><a href="#index-ranges">ranges</a></td><td valign="top"><a href="#Ranges">3.3 Ranges</a></td></tr>
4644+<tr><td></td><td valign="top"><a href="#index-Record-a-gnumeric-session">Record a gnumeric session</a></td><td valign="top"><a href="#Record-a-gnumeric-session">5.1.4 Record a gnumeric session</a></td></tr>
4645+<tr><td></td><td valign="top"><a href="#index-Record-a-gnumeric-session-with-synchronisation-data">Record a gnumeric session with synchronisation data</a></td><td valign="top"><a href="#Record-a-gnumeric-session-with-synchronisation-data">5.1.5 Record a gnumeric session with synchronisation data</a></td></tr>
4646+<tr><td></td><td valign="top"><a href="#index-Record-another-display-than-the-default">Record another display than the default</a></td><td valign="top"><a href="#Record-another-display-than-the-default">5.7.7 Record another display than the default</a></td></tr>
4647+<tr><td></td><td valign="top"><a href="#index-Record-keyboard">Record keyboard</a></td><td valign="top"><a href="#Record-keyboard">5.1.2 Record keyboard</a></td></tr>
4648+<tr><td></td><td valign="top"><a href="#index-Record-keyboard-and-mouse">Record keyboard and mouse</a></td><td valign="top"><a href="#Record-keyboard-and-mouse">5.1.3 Record keyboard and mouse</a></td></tr>
4649+<tr><td></td><td valign="top"><a href="#index-Record-mouse-motions">Record mouse motions</a></td><td valign="top"><a href="#Record-mouse-motions">5.1.1 Record mouse motions</a></td></tr>
4650+<tr><td></td><td valign="top"><a href="#index-recording">recording</a></td><td valign="top"><a href="#Record">3.2.1 Record</a></td></tr>
4651+<tr><td></td><td valign="top"><a href="#index-Replay-a-gnumeric-session">Replay a gnumeric session</a></td><td valign="top"><a href="#Replay-a-gnumeric-session">5.2.6 Replay a gnumeric session</a></td></tr>
4652+<tr><td></td><td valign="top"><a href="#index-Replay-a-gnumeric-session-with-synchronisation-data">Replay a gnumeric session with synchronisation data</a></td><td valign="top"><a href="#Replay-a-gnumeric-session-with-synchronisation-data">5.2.7 Replay a gnumeric session with synchronisation data</a></td></tr>
4653+<tr><td></td><td valign="top"><a href="#index-Replay-a-gnumeric-session-with-synchronisation-data-setting-threshold">Replay a gnumeric session with synchronisation data setting threshold</a></td><td valign="top"><a href="#Replay-a-gnumeric-session-with-synchronisation-data-setting-threshold">5.2.8 Replay a gnumeric session with synchronisation data setting threshold</a></td></tr>
4654+<tr><td></td><td valign="top"><a href="#index-Replay-directive">Replay directive</a></td><td valign="top"><a href="#Replay-1">7.4.3 Replay</a></td></tr>
4655+<tr><td></td><td valign="top"><a href="#index-Replay-keyboard-actions">Replay keyboard actions</a></td><td valign="top"><a href="#Replay-keyboard-actions">5.2.4 Replay keyboard actions</a></td></tr>
4656+<tr><td></td><td valign="top"><a href="#index-Replay-keyboard-and-mouse">Replay keyboard and mouse</a></td><td valign="top"><a href="#Replay-keyboard-and-mouse">5.2.5 Replay keyboard and mouse</a></td></tr>
4657+<tr><td></td><td valign="top"><a href="#index-replay-mouse-motions">replay mouse motions</a></td><td valign="top"><a href="#Replay-mouse-motions">5.2.1 Replay mouse motions</a></td></tr>
4658+<tr><td></td><td valign="top"><a href="#index-Replay-to-another-display-than-the-default">Replay to another display than the default</a></td><td valign="top"><a href="#Replay-to-another-display-than-the-default">5.7.8 Replay to another display than the default</a></td></tr>
4659+<tr><td></td><td valign="top"><a href="#index-replay-to-another-display-the-characters-are-not-correct">replay to another display the characters are not correct</a></td><td valign="top"><a href="#FAQ">10. FAQ</a></td></tr>
4660+<tr><td></td><td valign="top"><a href="#index-replay-using-double-speed">replay using double speed</a></td><td valign="top"><a href="#Replay-mouse-motions-using-with-double-speed">5.2.3 Replay mouse motions using with double speed</a></td></tr>
4661+<tr><td></td><td valign="top"><a href="#index-replay-using-half-speed">replay using half speed</a></td><td valign="top"><a href="#Replay-mouse-motions-using-with-half-speed">5.2.2 Replay mouse motions using with half speed</a></td></tr>
4662+<tr><td></td><td valign="top"><a href="#index-replaying">replaying</a></td><td valign="top"><a href="#Replay">3.2.2 Replay</a></td></tr>
4663+<tr><td></td><td valign="top"><a href="#index-Report-bugs_003f">Report bugs?</a></td><td valign="top"><a href="#FAQ">10. FAQ</a></td></tr>
4664+<tr><td></td><td valign="top"><a href="#index-Reporting-pnee-bugs">Reporting pnee bugs</a></td><td valign="top"><a href="#Reporting-pnee-bugs">6.3.1 Reporting pnee bugs</a></td></tr>
4665+<tr><td></td><td valign="top"><a href="#index-requirements">requirements</a></td><td valign="top"><a href="#Requirements">9. Xnee Requirements</a></td></tr>
4666+<tr><td></td><td valign="top"><a href="#index-retype">retype</a></td><td valign="top"><a href="#Retype">3.2.3 Retype</a></td></tr>
4667+<tr><td></td><td valign="top"><a href="#index-Retype-a-file">Retype a file</a></td><td valign="top"><a href="#Retype-a-file">5.3.2 Retype a file</a></td></tr>
4668+<tr><td></td><td valign="top"><a href="#index-Retype-the-help-printout">Retype the help printout</a></td><td valign="top"><a href="#Retype-the-help-printout">5.3.1 Retype the help printout</a></td></tr>
4669+<tr><td></td><td valign="top"><a href="#index-runtime-requirements">runtime requirements</a></td><td valign="top"><a href="#Runtime-requirements">9.1 Runtime requirements</a></td></tr>
4670+<tr><td colspan="3"> <hr></td></tr>
4671+<tr><th><a name="Index-1_cp_letter-S">S</a></th><td></td><td></td></tr>
4672+<tr><td></td><td valign="top"><a href="#index-Script-replay-data">Script replay data</a></td><td valign="top"><a href="#Script-replay-data">7.4.4 Script replay data</a></td></tr>
4673+<tr><td></td><td valign="top"><a href="#index-Session-file">Session file</a></td><td valign="top"><a href="#Xnee-Session-file">7.2 Xnee Session file</a></td></tr>
4674+<tr><td></td><td valign="top"><a href="#index-Settings">Settings</a></td><td valign="top"><a href="#Settings">7.4.2 Settings</a></td></tr>
4675+<tr><td></td><td valign="top"><a href="#index-Shell-scripts-using-Xnee">Shell scripts using Xnee</a></td><td valign="top"><a href="#Shell-scripts-using-Xnee">5.8 Shell scripts using Xnee</a></td></tr>
4676+<tr><td></td><td valign="top"><a href="#index-SIGTERM">SIGTERM</a></td><td valign="top"><a href="#sending-a-SIGTERM-signal">3.9.3 sending a SIGTERM signal</a></td></tr>
4677+<tr><td></td><td valign="top"><a href="#index-SIGTERM-1">SIGTERM</a></td><td valign="top"><a href="#Send-SIGTERM-to-Xnee">3.9.12 Send SIGTERM to Xnee</a></td></tr>
4678+<tr><td></td><td valign="top"><a href="#index-Stop-Xnee-with-key">Stop Xnee with key</a></td><td valign="top"><a href="#Stop-Xnee-with-key">5.5.1 Stop Xnee with key</a></td></tr>
4679+<tr><td></td><td valign="top"><a href="#index-Stop-Xnee-with-key-combination">Stop Xnee with key combination</a></td><td valign="top"><a href="#Stop-Xnee-with-key-combination">3.9.4 Stop Xnee with key combination</a></td></tr>
4680+<tr><td></td><td valign="top"><a href="#index-Synchronisation">Synchronisation</a></td><td valign="top"><a href="#Synchronisation">8.1 Synchronisation</a></td></tr>
4681+<tr><td colspan="3"> <hr></td></tr>
4682+<tr><th><a name="Index-1_cp_letter-U">U</a></th><td></td><td></td></tr>
4683+<tr><td></td><td valign="top"><a href="#index-Using-a-differet-screen-resolution">Using a differet screen resolution</a></td><td valign="top"><a href="#Using-a-differet-screen-resolution">5.7.3 Using a differet screen resolution</a></td></tr>
4684+<tr><td></td><td valign="top"><a href="#index-Using-a-offset-when-replaying">Using a offset when replaying</a></td><td valign="top"><a href="#Using-a-offset-when-replaying">5.7.4 Using a offset when replaying</a></td></tr>
4685+<tr><td></td><td valign="top"><a href="#index-Using-a-window-position-recall">Using a window position recall</a></td><td valign="top"><a href="#Using-a-window-position-recall">5.7.5 Using a window position recall</a></td></tr>
4686+<tr><td></td><td valign="top"><a href="#index-Using-human-readable-printouts">Using human readable printouts</a></td><td valign="top"><a href="#Using-human-readable-printouts">5.7.2 Using human readable printouts</a></td></tr>
4687+<tr><td></td><td valign="top"><a href="#index-Using-no-resolution-translation">Using no resolution translation</a></td><td valign="top"><a href="#Using-no-resolution-translation">5.7.6 Using no resolution translation</a></td></tr>
4688+<tr><td></td><td valign="top"><a href="#index-Using-verbose-mode">Using verbose mode</a></td><td valign="top"><a href="#Using-verbose-mode">5.7.1 Using verbose mode</a></td></tr>
4689+<tr><td colspan="3"> <hr></td></tr>
4690+<tr><th><a name="Index-1_cp_letter-W">W</a></th><td></td><td></td></tr>
4691+<tr><td></td><td valign="top"><a href="#index-What-does-the-name-cnee-mean_003f">What does the name cnee mean?</a></td><td valign="top"><a href="#FAQ">10. FAQ</a></td></tr>
4692+<tr><td></td><td valign="top"><a href="#index-What-does-the-name-gnee-mean_003f">What does the name gnee mean?</a></td><td valign="top"><a href="#FAQ">10. FAQ</a></td></tr>
4693+<tr><td></td><td valign="top"><a href="#index-What-does-the-name-gnee-mean_003f-1">What does the name gnee mean?</a></td><td valign="top"><a href="#FAQ">10. FAQ</a></td></tr>
4694+<tr><td></td><td valign="top"><a href="#index-What-does-the-name-gnee-mean_003f-2">What does the name gnee mean?</a></td><td valign="top"><a href="#FAQ">10. FAQ</a></td></tr>
4695+<tr><td></td><td valign="top"><a href="#index-what-numbers-belong-to-X11-data_003f">what numbers belong to X11 data?</a></td><td valign="top"><a href="#FAQ">10. FAQ</a></td></tr>
4696+<tr><td></td><td valign="top"><a href="#index-why-name-it-Xnee">why name it Xnee</a></td><td valign="top"><a href="#FAQ">10. FAQ</a></td></tr>
4697+<tr><td></td><td valign="top"><a href="#index-why-synchronise">why synchronise</a></td><td valign="top"><a href="#Why-synchronise">8.1.1 Why synchronise</a></td></tr>
4698+<tr><td colspan="3"> <hr></td></tr>
4699+<tr><th><a name="Index-1_cp_letter-X">X</a></th><td></td><td></td></tr>
4700+<tr><td></td><td valign="top"><a href="#index-Xnee-Internals">Xnee Internals</a></td><td valign="top"><a href="#Internals">8. Xnee Internals</a></td></tr>
4701+<tr><td></td><td valign="top"><a href="#index-Xnee-Settings-Arguments">Xnee Settings Arguments</a></td><td valign="top"><a href="#Settings">7.4.2 Settings</a></td></tr>
4702+<tr><td colspan="3"> <hr></td></tr>
4703+</table>
4704+<table><tr><th valign="top">Jump to: &nbsp; </th><td><a href="#Index-1_cp_letter-B" class="summary-letter"><b>B</b></a>
4705+ &nbsp;
4706+<a href="#Index-1_cp_letter-C" class="summary-letter"><b>C</b></a>
4707+ &nbsp;
4708+<a href="#Index-1_cp_letter-D" class="summary-letter"><b>D</b></a>
4709+ &nbsp;
4710+<a href="#Index-1_cp_letter-E" class="summary-letter"><b>E</b></a>
4711+ &nbsp;
4712+<a href="#Index-1_cp_letter-F" class="summary-letter"><b>F</b></a>
4713+ &nbsp;
4714+<a href="#Index-1_cp_letter-G" class="summary-letter"><b>G</b></a>
4715+ &nbsp;
4716+<a href="#Index-1_cp_letter-H" class="summary-letter"><b>H</b></a>
4717+ &nbsp;
4718+<a href="#Index-1_cp_letter-I" class="summary-letter"><b>I</b></a>
4719+ &nbsp;
4720+<a href="#Index-1_cp_letter-K" class="summary-letter"><b>K</b></a>
4721+ &nbsp;
4722+<a href="#Index-1_cp_letter-L" class="summary-letter"><b>L</b></a>
4723+ &nbsp;
4724+<a href="#Index-1_cp_letter-M" class="summary-letter"><b>M</b></a>
4725+ &nbsp;
4726+<a href="#Index-1_cp_letter-P" class="summary-letter"><b>P</b></a>
4727+ &nbsp;
4728+<a href="#Index-1_cp_letter-Q" class="summary-letter"><b>Q</b></a>
4729+ &nbsp;
4730+<a href="#Index-1_cp_letter-R" class="summary-letter"><b>R</b></a>
4731+ &nbsp;
4732+<a href="#Index-1_cp_letter-S" class="summary-letter"><b>S</b></a>
4733+ &nbsp;
4734+<a href="#Index-1_cp_letter-U" class="summary-letter"><b>U</b></a>
4735+ &nbsp;
4736+<a href="#Index-1_cp_letter-W" class="summary-letter"><b>W</b></a>
4737+ &nbsp;
4738+<a href="#Index-1_cp_letter-X" class="summary-letter"><b>X</b></a>
4739+ &nbsp;
4740+</td></tr></table>
4741+
4742+
4743+<hr size="6">
4744+<a name="SEC_Contents"></a>
4745+<table cellpadding="1" cellspacing="1" border="0">
4746+<tr><td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
4747+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
4748+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
4749+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
4750+</tr></table>
4751+<h1>Table of Contents</h1>
4752+<div class="contents">
4753+
4754+<ul class="toc">
4755+ <li><a name="toc-Summary-2" href="#Summary">1. Summary</a>
4756+ <ul class="toc">
4757+ <li><a name="toc-Summary-1" href="#Summary-1">1.1 Summary</a></li>
4758+ <li><a name="toc-Xnee-features" href="#Xnee-features">1.2 Xnee features</a></li>
4759+ <li><a name="toc-Background" href="#Background">1.3 Background</a></li>
4760+ </ul></li>
4761+ <li><a name="toc-Getting-started-2" href="#Getting-started">2. Getting started</a>
4762+ <ul class="toc">
4763+ <li><a name="toc-Getting-started-1" href="#Getting-started-1">2.1 Getting started</a>
4764+ <ul class="toc">
4765+ <li><a name="toc-Simple-replay" href="#Simple-replay">2.1.1 Simple replay</a></li>
4766+ <li><a name="toc-Simple-recording-of-Key-presses" href="#Simple-recording-of-Key-presses">2.1.2 Simple recording of Key presses</a></li>
4767+ <li><a name="toc-Simple-replaying-of-your-recorded-file-1" href="#Simple-replaying-of-your-recorded-file-1">2.1.3 Simple replaying of your recorded file</a></li>
4768+ <li><a name="toc-Simple-recording-of-mouse-motions" href="#Simple-recording-of-mouse-motions">2.1.4 Simple recording of mouse motions</a></li>
4769+ <li><a name="toc-Simple-replaying-of-your-recorded-file" href="#Simple-replaying-of-your-recorded-file">2.1.5 Simple replaying of your recorded file</a></li>
4770+ <li><a name="toc-Simple-retyping-of-a-text-file" href="#Simple-retyping-of-a-text-file">2.1.6 Simple retyping of a text file</a></li>
4771+ <li><a name="toc-Example-Xnee-Session-files" href="#Example-Xnee-Session-files">2.1.7 Example Xnee Session files</a></li>
4772+ </ul>
4773+</li>
4774+ </ul></li>
4775+ <li><a name="toc-Functional-overview-2" href="#Functional-overview">3. Functional overview</a>
4776+ <ul class="toc">
4777+ <li><a name="toc-Functional-overview-1" href="#Functional-overview-1">3.1 Functional overview</a></li>
4778+ <li><a name="toc-Modes" href="#Modes">3.2 Modes</a>
4779+ <ul class="toc">
4780+ <li><a name="toc-Record" href="#Record">3.2.1 Record</a></li>
4781+ <li><a name="toc-Replay" href="#Replay">3.2.2 Replay</a></li>
4782+ <li><a name="toc-Retype" href="#Retype">3.2.3 Retype</a></li>
4783+ <li><a name="toc-Distribution" href="#Distribution">3.2.4 Distribution</a></li>
4784+ </ul></li>
4785+ <li><a name="toc-Ranges" href="#Ranges">3.3 Ranges</a></li>
4786+ <li><a name="toc-First-and-last-motion-event" href="#First-and-last-motion-event">3.4 First and last motion event</a></li>
4787+ <li><a name="toc-Delay" href="#Delay">3.5 Delay</a></li>
4788+ <li><a name="toc-Verbose" href="#Verbose">3.6 Verbose</a></li>
4789+ <li><a name="toc-Human-printouts" href="#Human-printouts">3.7 Human printouts</a></li>
4790+ <li><a name="toc-Invoking-Xnee" href="#Invoking-Xnee">3.8 Invoking Xnee</a>
4791+ <ul class="toc">
4792+ <li><a name="toc-Command-line-syntax" href="#Command-line-syntax">3.8.1 Command line syntax</a></li>
4793+ <li><a name="toc-Project-file-1" href="#Project-file-1">3.8.2 Project file</a></li>
4794+ <li><a name="toc-Session-file" href="#Session-file">3.8.3 Session file</a></li>
4795+ </ul></li>
4796+ <li><a name="toc-Interupting-Xnee" href="#Interupting-Xnee">3.9 Interupting Xnee</a>
4797+ <ul class="toc">
4798+ <li><a name="toc-modifier-and-key" href="#modifier-and-key">3.9.1 modifier and key</a></li>
4799+ <li><a name="toc-limit-the-number-of-data-to-record" href="#limit-the-number-of-data-to-record">3.9.2 limit the number of data to record</a></li>
4800+ <li><a name="toc-sending-a-SIGTERM-signal" href="#sending-a-SIGTERM-signal">3.9.3 sending a SIGTERM signal</a></li>
4801+ <li><a name="toc-Stop-Xnee-with-key-combination" href="#Stop-Xnee-with-key-combination">3.9.4 Stop Xnee with key combination</a></li>
4802+ <li><a name="toc-Pause-Xnee-with-key-combination" href="#Pause-Xnee-with-key-combination">3.9.5 Pause Xnee with key combination</a></li>
4803+ <li><a name="toc-Pause-Xnee-with-key-combination-1" href="#Pause-Xnee-with-key-combination-1">3.9.6 Pause Xnee with key combination</a></li>
4804+ <li><a name="toc-Insert-marks-Xnee-with-key-combination" href="#Insert-marks-Xnee-with-key-combination">3.9.7 Insert marks Xnee with key combination</a></li>
4805+ <li><a name="toc-Limit-number-of-data-to-record" href="#Limit-number-of-data-to-record">3.9.8 Limit number of data to record</a></li>
4806+ <li><a name="toc-Limit-the-events-to-record" href="#Limit-the-events-to-record">3.9.9 Limit the events to record</a></li>
4807+ <li><a name="toc-Limit-the-data-to-record" href="#Limit-the-data-to-record">3.9.10 Limit the data to record</a></li>
4808+ <li><a name="toc-Limit-the-time-to-record" href="#Limit-the-time-to-record">3.9.11 Limit the time to record</a></li>
4809+ <li><a name="toc-Send-SIGTERM-to-Xnee" href="#Send-SIGTERM-to-Xnee">3.9.12 Send SIGTERM to Xnee</a></li>
4810+ </ul></li>
4811+ <li><a name="toc-Xnee-plugins" href="#Xnee-plugins">3.10 Xnee plugins</a></li>
4812+ </ul></li>
4813+ <li><a name="toc-Installation-1" href="#Installation">4. Installation</a>
4814+ <ul class="toc">
4815+ <li><a name="toc-Installation-from-source-with-the-configure-script" href="#Installation-from-source-with-the-configure-script">4.1 Installation from source with the configure script</a></li>
4816+ <li><a name="toc-Installation-from-source-with-default-Makefile" href="#Installation-from-source-with-default-Makefile">4.2 Installation from source with default Makefile</a></li>
4817+ <li><a name="toc-Installation-from-CVS" href="#Installation-from-CVS">4.3 Installation from CVS</a></li>
4818+ </ul></li>
4819+ <li><a name="toc-Examples-1" href="#Examples">5. Examples</a>
4820+ <ul class="toc">
4821+ <li><a name="toc-Recorder" href="#Recorder">5.1 Recorder</a>
4822+ <ul class="toc">
4823+ <li><a name="toc-Record-mouse-motions" href="#Record-mouse-motions">5.1.1 Record mouse motions</a></li>
4824+ <li><a name="toc-Record-keyboard" href="#Record-keyboard">5.1.2 Record keyboard</a></li>
4825+ <li><a name="toc-Record-keyboard-and-mouse" href="#Record-keyboard-and-mouse">5.1.3 Record keyboard and mouse</a></li>
4826+ <li><a name="toc-Record-a-gnumeric-session" href="#Record-a-gnumeric-session">5.1.4 Record a gnumeric session</a></li>
4827+ <li><a name="toc-Record-a-gnumeric-session-with-synchronisation-data" href="#Record-a-gnumeric-session-with-synchronisation-data">5.1.5 Record a gnumeric session with synchronisation data</a></li>
4828+ </ul></li>
4829+ <li><a name="toc-Replayer" href="#Replayer">5.2 Replayer</a>
4830+ <ul class="toc">
4831+ <li><a name="toc-Replay-mouse-motions" href="#Replay-mouse-motions">5.2.1 Replay mouse motions</a></li>
4832+ <li><a name="toc-Replay-mouse-motions-using-with-half-speed" href="#Replay-mouse-motions-using-with-half-speed">5.2.2 Replay mouse motions using with half speed</a></li>
4833+ <li><a name="toc-Replay-mouse-motions-using-with-double-speed" href="#Replay-mouse-motions-using-with-double-speed">5.2.3 Replay mouse motions using with double speed</a></li>
4834+ <li><a name="toc-Replay-keyboard-actions" href="#Replay-keyboard-actions">5.2.4 Replay keyboard actions</a></li>
4835+ <li><a name="toc-Replay-keyboard-and-mouse" href="#Replay-keyboard-and-mouse">5.2.5 Replay keyboard and mouse</a></li>
4836+ <li><a name="toc-Replay-a-gnumeric-session" href="#Replay-a-gnumeric-session">5.2.6 Replay a gnumeric session</a></li>
4837+ <li><a name="toc-Replay-a-gnumeric-session-with-synchronisation-data" href="#Replay-a-gnumeric-session-with-synchronisation-data">5.2.7 Replay a gnumeric session with synchronisation data</a></li>
4838+ <li><a name="toc-Replay-a-gnumeric-session-with-synchronisation-data-setting-threshold" href="#Replay-a-gnumeric-session-with-synchronisation-data-setting-threshold">5.2.8 Replay a gnumeric session with synchronisation data setting threshold</a></li>
4839+ </ul></li>
4840+ <li><a name="toc-Retyper" href="#Retyper">5.3 Retyper</a>
4841+ <ul class="toc">
4842+ <li><a name="toc-Retype-the-help-printout" href="#Retype-the-help-printout">5.3.1 Retype the help printout</a></li>
4843+ <li><a name="toc-Retype-a-file" href="#Retype-a-file">5.3.2 Retype a file</a></li>
4844+ </ul></li>
4845+ <li><a name="toc-Distributor" href="#Distributor">5.4 Distributor</a>
4846+ <ul class="toc">
4847+ <li><a name="toc-Distribute-your-mouse-motions" href="#Distribute-your-mouse-motions">5.4.1 Distribute your mouse motions</a></li>
4848+ <li><a name="toc-Distribute-the-replaying-of-mouse-motions" href="#Distribute-the-replaying-of-mouse-motions">5.4.2 Distribute the replaying of mouse motions</a></li>
4849+ <li><a name="toc-Distribute-the-retyping-of-a-file" href="#Distribute-the-retyping-of-a-file">5.4.3 Distribute the retyping of a file</a></li>
4850+ </ul></li>
4851+ <li><a name="toc-Key" href="#Key">5.5 Key</a>
4852+ <ul class="toc">
4853+ <li><a name="toc-Stop-Xnee-with-key" href="#Stop-Xnee-with-key">5.5.1 Stop Xnee with key</a></li>
4854+ <li><a name="toc-Pausing-and-resuming-Xnee-with-key" href="#Pausing-and-resuming-Xnee-with-key">5.5.2 Pausing and resuming Xnee with key</a></li>
4855+ </ul></li>
4856+ <li><a name="toc-Using-macro" href="#Using-macro">5.6 Using macro</a>
4857+ <ul class="toc">
4858+ <li><a name="toc-Define-a-simple-macro" href="#Define-a-simple-macro">5.6.1 Define a simple macro</a></li>
4859+ <li><a name="toc-Define-another-simple-macro" href="#Define-another-simple-macro">5.6.2 Define another simple macro</a></li>
4860+ </ul></li>
4861+ <li><a name="toc-Various-options" href="#Various-options">5.7 Various options</a>
4862+ <ul class="toc">
4863+ <li><a name="toc-Using-verbose-mode" href="#Using-verbose-mode">5.7.1 Using verbose mode</a></li>
4864+ <li><a name="toc-Using-human-readable-printouts" href="#Using-human-readable-printouts">5.7.2 Using human readable printouts</a></li>
4865+ <li><a name="toc-Using-a-differet-screen-resolution" href="#Using-a-differet-screen-resolution">5.7.3 Using a differet screen resolution</a></li>
4866+ <li><a name="toc-Using-a-offset-when-replaying" href="#Using-a-offset-when-replaying">5.7.4 Using a offset when replaying</a></li>
4867+ <li><a name="toc-Using-a-window-position-recall" href="#Using-a-window-position-recall">5.7.5 Using a window position recall</a></li>
4868+ <li><a name="toc-Using-no-resolution-translation" href="#Using-no-resolution-translation">5.7.6 Using no resolution translation</a></li>
4869+ <li><a name="toc-Record-another-display-than-the-default" href="#Record-another-display-than-the-default">5.7.7 Record another display than the default</a></li>
4870+ <li><a name="toc-Replay-to-another-display-than-the-default" href="#Replay-to-another-display-than-the-default">5.7.8 Replay to another display than the default</a></li>
4871+ </ul></li>
4872+ <li><a name="toc-Shell-scripts-using-Xnee" href="#Shell-scripts-using-Xnee">5.8 Shell scripts using Xnee</a></li>
4873+ </ul></li>
4874+ <li><a name="toc-Xnee-Programs" href="#Programs">6. Xnee Programs</a>
4875+ <ul class="toc">
4876+ <li><a name="toc-cnee-_002d-cnee_0027s-not-an-event-emulator" href="#cnee-_002d-cnee_0027s-not-an-event-emulator">6.1 cnee - cnee&rsquo;s not an event emulator</a></li>
4877+ <li><a name="toc-gnee-_002d-gnee_0027s-not-an-emulator-either" href="#gnee-_002d-gnee_0027s-not-an-emulator-either">6.2 gnee - gnee&rsquo;s not an emulator either</a></li>
4878+ <li><a name="toc-pnee-_002d-pnee_0027s-not-even-emulating" href="#pnee-_002d-pnee_0027s-not-even-emulating">6.3 pnee - pnee&rsquo;s not even emulating</a>
4879+ <ul class="toc">
4880+ <li><a name="toc-Reporting-pnee-bugs" href="#Reporting-pnee-bugs">6.3.1 Reporting pnee bugs</a></li>
4881+ </ul>
4882+</li>
4883+ </ul></li>
4884+ <li><a name="toc-File-types-and-format" href="#File-format">7. File types and format</a>
4885+ <ul class="toc">
4886+ <li><a name="toc-Project-file" href="#Project-file">7.1 Project file</a>
4887+ <ul class="toc">
4888+ <li><a name="toc-Create-a-project-file" href="#Create-a-project-file">7.1.1 Create a project file</a></li>
4889+ </ul></li>
4890+ <li><a name="toc-Xnee-Session-file" href="#Xnee-Session-file">7.2 Xnee Session file</a></li>
4891+ <li><a name="toc-Xnee-file-format" href="#Xnee-file-format">7.3 Xnee file format</a></li>
4892+ <li><a name="toc-Xnee-directives" href="#Xnee-directives">7.4 Xnee directives</a>
4893+ <ul class="toc">
4894+ <li><a name="toc-Comment" href="#Comment">7.4.1 Comment</a></li>
4895+ <li><a name="toc-Settings" href="#Settings">7.4.2 Settings</a></li>
4896+ <li><a name="toc-Replay-1" href="#Replay-1">7.4.3 Replay</a></li>
4897+ <li><a name="toc-Script-replay-data" href="#Script-replay-data">7.4.4 Script replay data</a></li>
4898+ <li><a name="toc-Mark" href="#Mark">7.4.5 Mark</a></li>
4899+ <li><a name="toc-Exec" href="#Exec">7.4.6 Exec</a></li>
4900+ <li><a name="toc-Project-information" href="#Project-information">7.4.7 Project information</a></li>
4901+ </ul>
4902+</li>
4903+ </ul></li>
4904+ <li><a name="toc-Xnee-Internals" href="#Internals">8. Xnee Internals</a>
4905+ <ul class="toc">
4906+ <li><a name="toc-Synchronisation" href="#Synchronisation">8.1 Synchronisation</a>
4907+ <ul class="toc">
4908+ <li><a name="toc-Why-synchronise" href="#Why-synchronise">8.1.1 Why synchronise</a></li>
4909+ <li><a name="toc-How-to-synchronise" href="#How-to-synchronise">8.1.2 How to synchronise</a></li>
4910+ <li><a name="toc-Synchronisation-is-needed" href="#Synchronisation-is-needed">8.1.3 Synchronisation is needed</a></li>
4911+ <li><a name="toc-Different-data-for-different-kind-of-sessions" href="#Different-data-for-different-kind-of-sessions">8.1.4 Different data for different kind of sessions</a></li>
4912+ <li><a name="toc-Slow-replay-session-due-to-too-many-synchronise-data" href="#Slow-replay-session-due-to-too-many-synchronise-data">8.1.5 Slow replay session due to too many synchronise data</a></li>
4913+ <li><a name="toc-X-protocol-is-rich-and-asynchronous" href="#X-protocol-is-rich-and-asynchronous">8.1.6 X protocol is rich and asynchronous</a></li>
4914+ <li><a name="toc-Different-data-sent" href="#Different-data-sent">8.1.7 Different data sent</a></li>
4915+ <li><a name="toc-Buffers-and-timeouts" href="#Buffers-and-timeouts">8.1.8 Buffers and timeouts</a></li>
4916+ </ul>
4917+</li>
4918+ </ul></li>
4919+ <li><a name="toc-Xnee-Requirements" href="#Requirements">9. Xnee Requirements</a>
4920+ <ul class="toc">
4921+ <li><a name="toc-Runtime-requirements" href="#Runtime-requirements">9.1 Runtime requirements</a></li>
4922+ <li><a name="toc-Development-requirements" href="#Development-requirements">9.2 Development requirements</a></li>
4923+ </ul></li>
4924+ <li><a name="toc-FAQ-1" href="#FAQ">10. FAQ</a></li>
4925+ <li><a name="toc-Copying-This-Manual-1" href="#Copying-This-Manual">A. Copying This Manual</a>
4926+ <ul class="toc">
4927+ <li><a name="toc-GNU-Free-Documentation-License" href="#GNU-Free-Documentation-License">A.1 GNU Free Documentation License</a></li>
4928+ </ul></li>
4929+ <li><a name="toc-Index-1" href="#Index">B. Index</a></li>
4930+</ul>
4931+</div>
4932+<hr size="1">
4933+<a name="SEC_Overview"></a>
4934+<table cellpadding="1" cellspacing="1" border="0">
4935+<tr><td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
4936+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
4937+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
4938+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
4939+</tr></table>
4940+<h1>Short Table of Contents</h1>
4941+<div class="shortcontents">
4942+<ul class="toc">
4943+<li><a name="stoc-Summary-2" href="#Summary">1. Summary</a></li>
4944+<li><a name="stoc-Getting-started-2" href="#Getting-started">2. Getting started</a></li>
4945+<li><a name="stoc-Functional-overview-2" href="#Functional-overview">3. Functional overview</a></li>
4946+<li><a name="stoc-Installation-1" href="#Installation">4. Installation</a></li>
4947+<li><a name="stoc-Examples-1" href="#Examples">5. Examples</a></li>
4948+<li><a name="stoc-Xnee-Programs" href="#Programs">6. Xnee Programs</a></li>
4949+<li><a name="stoc-File-types-and-format" href="#File-format">7. File types and format</a></li>
4950+<li><a name="stoc-Xnee-Internals" href="#Internals">8. Xnee Internals</a></li>
4951+<li><a name="stoc-Xnee-Requirements" href="#Requirements">9. Xnee Requirements</a></li>
4952+<li><a name="stoc-FAQ-1" href="#FAQ">10. FAQ</a></li>
4953+<li><a name="stoc-Copying-This-Manual-1" href="#Copying-This-Manual">A. Copying This Manual</a></li>
4954+<li><a name="stoc-Index-1" href="#Index">B. Index</a></li>
4955+</ul>
4956+</div>
4957+<hr size="1">
4958+<a name="SEC_About"></a>
4959+<table cellpadding="1" cellspacing="1" border="0">
4960+<tr><td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
4961+<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
4962+<td valign="middle" align="left">[<a href="#Index" title="Index">Index</a>]</td>
4963+<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
4964+</tr></table>
4965+<h1>About This Document</h1>
4966+<p>
4967+ This document was generated by <em>Henrik Sandklef</em> on <em>December 24, 2009</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.
4968+</p>
4969+<p>
4970+ The buttons in the navigation panels have the following meaning:
4971+</p>
4972+<table border="1">
4973+ <tr>
4974+ <th> Button </th>
4975+ <th> Name </th>
4976+ <th> Go to </th>
4977+ <th> From 1.2.3 go to</th>
4978+ </tr>
4979+ <tr>
4980+ <td align="center"> [ &lt; ] </td>
4981+ <td align="center">Back</td>
4982+ <td>Previous section in reading order</td>
4983+ <td>1.2.2</td>
4984+ </tr>
4985+ <tr>
4986+ <td align="center"> [ &gt; ] </td>
4987+ <td align="center">Forward</td>
4988+ <td>Next section in reading order</td>
4989+ <td>1.2.4</td>
4990+ </tr>
4991+ <tr>
4992+ <td align="center"> [ &lt;&lt; ] </td>
4993+ <td align="center">FastBack</td>
4994+ <td>Beginning of this chapter or previous chapter</td>
4995+ <td>1</td>
4996+ </tr>
4997+ <tr>
4998+ <td align="center"> [ Up ] </td>
4999+ <td align="center">Up</td>
5000+ <td>Up section</td>
5001+ <td>1.2</td>
5002+ </tr>
5003+ <tr>
5004+ <td align="center"> [ &gt;&gt; ] </td>
5005+ <td align="center">FastForward</td>
5006+ <td>Next chapter</td>
5007+ <td>2</td>
5008+ </tr>
5009+ <tr>
5010+ <td align="center"> [Top] </td>
5011+ <td align="center">Top</td>
5012+ <td>Cover (top) of document</td>
5013+ <td> &nbsp; </td>
5014+ </tr>
5015+ <tr>
5016+ <td align="center"> [Contents] </td>
5017+ <td align="center">Contents</td>
5018+ <td>Table of contents</td>
5019+ <td> &nbsp; </td>
5020+ </tr>
5021+ <tr>
5022+ <td align="center"> [Index] </td>
5023+ <td align="center">Index</td>
5024+ <td>Index</td>
5025+ <td> &nbsp; </td>
5026+ </tr>
5027+ <tr>
5028+ <td align="center"> [ ? ] </td>
5029+ <td align="center">About</td>
5030+ <td>About (help)</td>
5031+ <td> &nbsp; </td>
5032+ </tr>
5033+</table>
5034+
5035+<p>
5036+ where the <strong> Example </strong> assumes that the current position is at <strong> Subsubsection One-Two-Three </strong> of a document of the following structure:
5037+</p>
5038+
5039+<ul>
5040+ <li> 1. Section One
5041+ <ul>
5042+ <li>1.1 Subsection One-One
5043+ <ul>
5044+ <li>...</li>
5045+ </ul>
5046+ </li>
5047+ <li>1.2 Subsection One-Two
5048+ <ul>
5049+ <li>1.2.1 Subsubsection One-Two-One</li>
5050+ <li>1.2.2 Subsubsection One-Two-Two</li>
5051+ <li>1.2.3 Subsubsection One-Two-Three &nbsp; &nbsp;
5052+ <strong>&lt;== Current Position </strong></li>
5053+ <li>1.2.4 Subsubsection One-Two-Four</li>
5054+ </ul>
5055+ </li>
5056+ <li>1.3 Subsection One-Three
5057+ <ul>
5058+ <li>...</li>
5059+ </ul>
5060+ </li>
5061+ <li>1.4 Subsection One-Four</li>
5062+ </ul>
5063+ </li>
5064+</ul>
5065+
5066+<hr size="1">
5067+<p>
5068+ <font size="-1">
5069+ This document was generated by <em>Henrik Sandklef</em> on <em>December 24, 2009</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.
5070+ </font>
5071+ <br>
5072+
5073+</p>
5074+</body>
5075+</html>
--- /dev/null
+++ b/original/xnee.info
@@ -0,0 +1,2311 @@
1+This is xnee.info, produced by makeinfo version 4.13 from xnee.texi.
2+
3+INFO-DIR-SECTION Miscellaneous
4+START-INFO-DIR-ENTRY
5+ * : (Xnee). Xnee's Not Event Emulator.
6+END-INFO-DIR-ENTRY
7+
8+
9+File: xnee.info, Node: Top, Next: Summary, Prev: (dir), Up: (dir)
10+
11+Xnee Manual
12+***********
13+
14+* Menu:
15+
16+* Summary:: Summary.
17+* Getting started:: Getting started
18+* Functional overview:: Functional overview
19+* Installation:: Installation
20+* Examples:: examples
21+* File format:: File format
22+* Programs:: Programs
23+* Internals:: Internals
24+* Requirements:: Requirements
25+* FAQ:: FAQ
26+* Copying This Manual:: Copying This Manual
27+* Index:: Index
28+
29+
30+File: xnee.info, Node: Summary, Next: Getting started, Prev: Top, Up: Top
31+
32+1 Summary
33+*********
34+
35+1.1 Summary
36+===========
37+
38+Xnee is a suite of programs that can record, replay and distribute
39+user actions under the X11 environment. Think of it as a robot that
40+can imitate the job you just did.
41+
42+ Xnee consists of one library and two applications
43+
44+ cnee - command line program
45+
46+ gnee - graphical user interface program
47+
48+ pnee - a Gnome Panel Applet
49+
50+ libxnee - library used by xnee and gnee
51+
52+1.2 Xnee features
53+=================
54+
55+Xnee can be used for multiple purposes, allthough it was initially
56+designed as a test tool. The most used features are the foloowing:
57+
58+ Test tool - Instead of performing test cases for a GUI (or
59+CLI program) over and over again, the test cases can be
60+automated. Simply record a user session and replay it later.
61+
62+ Performance test tool - If you want to simulate lots of
63+simultaneous users in a network (or a local machine) you can use
64+Xnee. Simply record a user session and start multiple instances of
65+Xnee.
66+
67+ Demonstration tool - You can use Xnee to demonstrate the
68+features of your program. Simply record a user session and
69+replay it later.
70+
71+ Distribution tool - If you want to send over your mouse/keyboard
72+actions to another display you can use the built-in distribution
73+mechanism in Xnee.
74+
75+ Macro recorder/replayer - By binding a key and modifier
76+combination (e.g using xrebind) to replay a recorded session you will
77+have a Window Manager and application independent macro.
78+
79+ File retyper - Xnee can retype the contents of a file. This can
80+be useful during tests or if you want xnee to answer some command
81+session without having to record the session.
82+
83+ X11 protocol sniffer - Xnee can be used a sniffer for the X11
84+protocol.
85+
86+1.3 Background
87+==============
88+
89+In order to verify that a program does the job it's supposed to do,
90+certain tests have to be made. These tests are, IMHO, perhaps the most
91+boring things a programmer can do. Xnee is designed to reduce the
92+programmer from this burden.
93+Xnee started out as a commad line program. During the development phase
94+the main functionality was broken out to a library, called libxnee. The
95+command line program was renamed cnee. The thought behind making the
96+library was to enable the writing of other clients than just the
97+command line. Today there is a GUI program, gnee, and a Gnome panel
98+applet, pnee, that uses the library.
99+By using xnee your testcase(s) can be recorded and later on replayed.
100+Xnee comes with other features For more information about these, read
101+the Introduction.
102+
103+ This manual mainly focuses on the command line program, cnee. There
104+are however a seperate chapters for the other programs.
105+
106+
107+File: xnee.info, Node: Getting started, Next: Functional overview, Prev: Summary, Up: Top
108+
109+2 Getting started
110+*****************
111+
112+2.1 Getting started
113+===================
114+
115+To get the first feel of Xnee some simple examples are presented.
116+
117+2.1.1 Simple replay
118+-------------------
119+
120+Start a terminal emulator (e.g xterm) and then start Xnee,
121+ `cnee --replay --file example1.xnr &'
122+ ....dont forget '&'. The file example1.xnr contains keyboard events
123+recorded during development of this manual. When replayed you'll see
124+what was typed and of course more important you'll get i first glimpse
125+of Xnee and its capabilities. For information on where to find the
126+example files, see below.
127+
128+2.1.2 Simple recording of Key presses
129+-------------------------------------
130+
131+We move on to a (very) simple recording session. Start a terminal
132+emulator (e.g xterm) and your favorite editor. Move the pointer to one
133+of the terminal windows and start Xnee.
134+ `cnee --record -o example2.xnr --device-event-range 2-3 \'
135+ `--time 5 --events-to-record 20'
136+ Move the pointer to the editor and get focus (e.g click the window
137+frame). After 5 seconds you can type whatever you want to record (20
138+press- and relase events of the keyboard are recorded). We are done and
139+you have recorded your first session! Leave the desktop as it is and go
140+forward to the next example.
141+
142+2.1.3 Simple replaying of your recorded file
143+--------------------------------------------
144+
145+Start one terminal emulator (e.g xterm). Let Xnee repeat the stuff you
146+did in the example above. Undo all changes in the editor that was made
147+in the previous example. Move the pointer to one of the terminal
148+windows and start Xnee.
149+ `cnee --replay -f example2.xnr --time 5'
150+ Move the pointer to the editor and get focus (e.g click the window
151+frame). After 5 seconds you will see your typings in the example above
152+being repeated.
153+
154+2.1.4 Simple recording of mouse motions
155+---------------------------------------
156+
157+We move on to another simple recording session. Start a terminal
158+emulator (e.g xterm). Move the pointer to the terminal window and
159+start Xnee.
160+ `cnee --record -o example3.xnr --device-event-range 5-6 \'
161+ `--time 5 --events-to-record 20'
162+ After 5 seconds you can move the pointer around (20 motion events
163+are recorded).
164+
165+2.1.5 Simple replaying of your recorded file
166+--------------------------------------------
167+
168+Let Xnee repeat the stuff you did in the example above.. Move the
169+pointer to the terminal window and start Xnee.
170+ `cnee --replay -f example3.xnr --time 5'
171+ After 5 seconds you will see your mouse motions in the example above
172+being repplayed.
173+
174+2.1.6 Simple retyping of a text file
175+------------------------------------
176+
177+Let Xnee retype (type again) the text in a text file. Move the pointer
178+to the terminal window and create a text file containing the command
179+`ls -l'.
180+ `echo "ls -l" > ./mytext.txt'
181+ And after that you start Xnee.
182+ `cnee --retype-file ./mytext.txt --time 5'
183+ After 5 seconds you will see Xnee type `ls -l', which probably will
184+list the files in the current directory.
185+
186+2.1.7 Example Xnee Session files
187+--------------------------------
188+
189+The example file above (example1.xnr) is a session file that has been
190+delivered with the sources (allthough not installed), rpm and with the
191+Xnee Documentation Package. The file(s) can be found:
192+ Distribution Location
193+ RPM /usr/lib/xnee/session
194+ Source ./sessions/
195+ Document Package ./sessions/
196+
197+
198+File: xnee.info, Node: Functional overview, Next: Installation, Prev: Getting started, Up: Top
199+
200+3 Functional overview
201+*********************
202+
203+3.1 Functional overview
204+=======================
205+
206+The Xnee applications (gnee and xnee) receives X11 protocol data (e.g.
207+events) from an X server (using libxnee) and print them to a file,
208+called Xnee Session File. Theses events are later read from the session
209+file and replayed. Gnee and xnee can read its settings from a file,
210+called Xnee Project File, or from command line (cnee) or via the GUI
211+(gnee).
212+
213+Events directly generated by the user (e.g KeyPress) can be replayed or
214+faked. Requests, replies, errors and events not directly generated by
215+the user (e.g MapNotify) can be recorded as well. By using these data
216+Xnee can replay with synchronisation.
217+
218+ In this section you will be given information about key concepts in
219+X11 and Xnee. It is vital that you read through this chapter.
220+
221+3.2 Modes
222+=========
223+
224+Xnee has four modes:
225+ * record
226+
227+ * replay
228+
229+ * retype
230+
231+ * distribute
232+ The distribution mechanism can be used together with the other
233+three.
234+
235+3.2.1 Record
236+------------
237+
238+When record mode is used Xnee receives a copy of the data sent to and
239+from the X server. The copy is printed to a file. Xnee can record
240+the whole X11 protocol, not just mouse and keyboard events.
241+
242+
243+3.2.2 Replay
244+------------
245+
246+When replay mode is used Xnee reads data from a file or stdin. These
247+data is either sent to the server (if it is a keyboard or a mouse
248+event) or used to synchronise with (if any of the other data).
249+
250+
251+3.2.3 Retype
252+------------
253+
254+Xnee can retype the contents of a text file. This is useful when
255+combining replaying of different recorded session. You can change
256+the text written in for example an editor (e.g emacs) without having
257+to re-record the complete sessions.
258+
259+3.2.4 Distribution
260+------------------
261+
262+Xnee can fake mouse and keyboard events on multiple displays. This
263+distribution mechanism can be used when recording, replaying or
264+retyping.
265+
266+3.3 Ranges
267+==========
268+
269+What data to record is specified using ranges. Ranges has a start value
270+and a stop value. The following data can be recorded:
271+ Xnee name X Protocol Name
272+ core-requests Request
273+ device-event Event
274+ delivered-event Event
275+ error Error
276+ reply Reply
277+ ext-requests.ext-major Extension Request
278+ ext-requests.ext-minor Extension Request
279+ ext-replies.ext-major Extension Reply
280+ ext-replies.ext-minor Extension Reply
281+ When specifying the ranges when using xnee you can either type the
282+integer value of the data or the name of the data. To find out what
283+number belongs to what data name, you can use the
284+`--print-data-name' option. For an explanation of the X protocol
285+data, please read the "X Record Extension Library" or the "Record
286+Extension Protocol Specification".
287+
288+3.4 First and last motion event
289+===============================
290+
291+Xnee has the ability to skip recording of succesive motion events with
292+no other data in between. This option is intended to reduce the
293+number of data recorded by leaving out unnecessary data. This
294+feature can be invoked with the `--first-last' flag.
295+
296+3.5 Delay
297+=========
298+
299+Sometimes when Xnee starts recording data, the keyrelease (caused by
300+pressing and releasing RETURN to execute the Xnee command line) is
301+recorded. This single keyrelease (with no corresponding keypress)
302+might confuse the X server. With the `--time <secs>' option Xnee can
303+be paused for a number of seconds before
304+recording/replaying/retyping starts.
305+
306+3.6 Verbose
307+===========
308+
309+When enabling verbose mode (`--verbose') Xnee prints a lot of
310+information about it's state. This option is only intended for
311+runtime debugging.
312+
313+3.7 Human printouts
314+===================
315+
316+Sometimes it's hard to decide what data to use when synchronising. To
317+do this you have to analyse what data is sent from the server when
318+recording. Instead of reading the data number, s tring
319+representation of the data is printed out. To enable this option,
320+use the `--human-printouts'.
321+
322+3.8 Invoking Xnee
323+=================
324+
325+
326+
327+3.8.1 Command line syntax
328+-------------------------
329+
330+To get information about how to use Xnee's command line options please
331+use the man page(s).
332+
333+3.8.2 Project file
334+------------------
335+
336+To use a Project file use the `--project' option, e.g `cnee --project
337+xnee/projects/netscape.xns'
338+
339+3.8.3 Session file
340+------------------
341+
342+To use a session file use the `--file' option, e.g `cnee --file
343+user1_session.xns'
344+
345+3.9 Interupting Xnee
346+====================
347+
348+Interupting Xnee when recording or replaying can be done as follows
349+ * user specified modifier and key
350+
351+ * limit the number of data to record
352+
353+ * sending a SIGTERM signal (e.g pressing Control-c in a terminal
354+ window)
355+ The prefered way to interrupt xnee is to use the modifier+key.
356+
357+3.9.1 modifier and key
358+----------------------
359+
360+It is possible to specify a modifier (e.g Control button) and a key
361+(e.g 'a') that will stop the Xnee session. When using this option
362+make sure that the modifier/key is not used in any way by the
363+applications you are recording. You can specify a key+modifier to
364+stop, pause and resume xnee. You can also insert a mark in the
365+recorded session file.
366+
367+3.9.2 limit the number of data to record
368+----------------------------------------
369+
370+By specifying the number of data to record (`--loops') xnee stops when
371+this number of data is received from the server. When replaying the
372+same amount of data is replayed.
373+
374+3.9.3 sending a SIGTERM signal
375+------------------------------
376+
377+The easiest way to send a signal to a process is by launching Xnee
378+from a terminal window (e.g xterm) and then press Control-c which will
379+send the SIGTERM signal to Xnee. When replaying it can sometimes be
380+hard to move the pointer into the terminal window (e.g if a lot of
381+motion events were recorded that will let you compete with Xnee on
382+where the mouse pointer shall be located. Beleive me, you'll end up
383+lossing that battle). When using Control-c to stop Xnee you must
384+be aware of that the pressing of the Control key gets recorded. When
385+replaying a recorded session ending with pressing of Control your apps
386+may think you are pressing the Control key. A simple solution for this
387+is to press and release the Control.
388+
389+3.9.4 Stop Xnee with key combination
390+------------------------------------
391+
392+Xnee stops its current action when the user presses the key
393+combination as specified during setup. Xnee will be shut gracefully.
394+
395+
396+3.9.5 Pause Xnee with key combination
397+-------------------------------------
398+
399+Xnee pause its current action when the user presses the key
400+combination as specified during setup. Xnee will be in paused mode
401+until the user stops or resumes Xnee.
402+
403+3.9.6 Pause Xnee with key combination
404+-------------------------------------
405+
406+Xnee resumes its current paused action when the user presses the key
407+combination as specified during setup. Xnee will continue where it was
408+paused.
409+
410+3.9.7 Insert marks Xnee with key combination
411+--------------------------------------------
412+
413+When the user presses the key combination as specified during setup
414+Xnee will print a mark in the session file containing a time stamp.
415+This feature is intended be used when you want to mark an
416+interresting time/event during recording. After recording has
417+finished you can add Xnee scripting calls to Xnee which will be
418+interpreted and executed as if they were recorded.
419+
420+3.9.8 Limit number of data to record
421+------------------------------------
422+
423+There a a few ways to limit the number of data Xnee records.
424+ * limit the events to recored
425+
426+ * limit the data to recored
427+
428+ * limit the time to recored
429+
430+ * send a signal to xnee (SIGTERM)
431+
432+ * use a selfmade record callback function
433+
434+
435+3.9.9 Limit the events to record
436+--------------------------------
437+
438+When having received the specified amount of events from the server,
439+Xnee stops the recording. For more information on how to use this
440+option, read the man page for cnee or the user manual for gnee.
441+
442+3.9.10 Limit the data to record
443+-------------------------------
444+
445+When having received the specified amount of data from the server, Xnee
446+ stops the recording. For more information on how to use this option,
447+read the man page for cnee or the user manual for gnee.
448+
449+3.9.11 Limit the time to record
450+-------------------------------
451+
452+When having recorded for the specified amount of time from the server,
453+Xnee stops the recording. For more information on how to use this
454+option, read the man page for cnee or the user manual for gnee.
455+
456+3.9.12 Send SIGTERM to Xnee
457+---------------------------
458+
459+The easiest way to send a signal to a process is by launching Xnee from
460+a terminal window (e.g xterm). By pressing Control-c xterm sends the
461+ SIGTERM signal to Xnee. When replaying it can sometimes be hard to
462+move the pointer into the terminal window (e.g if a lot of motion
463+events were recorded that will let you compete with Xnee on where
464+the mouse pointer shall be located. Beleive me, you'll end up lossing
465+that battle).
466+
467+3.10 Xnee plugins
468+=================
469+
470+Xnee supports plugins since version 1.07. For information about how to
471+write plugins, download the source code and look at the plugin
472+example which is delivered with Xnee.
473+
474+
475+File: xnee.info, Node: Installation, Next: Examples, Prev: Functional overview, Up: Top
476+
477+4 Installation
478+**************
479+
480+4.1 Installation from source with the configure script
481+======================================================
482+
483+To build and install Xnee do the following: Download the following
484+source files into a directory (version numbers given here are just
485+examples)
486+ * xnee-3.02.tar.gz
487+
488+Unzip the source file
489+ `gunzip xnee-3.02.tar.gz'
490+
491+Untar the source file
492+ `tar xvf xnee-3.02.tar'
493+
494+Enter the Xnee directory
495+ `cd xnee-3.02'
496+
497+Generate the makefiles
498+ `./configure'
499+
500+or if you want to specify which directory to install xnee to
501+ `./configure --prefix=<PATH TO INSTALLATION DIR>'
502+
503+Build Xnee
504+ `make clean all'
505+
506+Install (as root) if you want libxnee to be installed. If not, skip the
507+following command. Installation of libxnee is not needed to build cnee
508+and gnee.
509+ `make install'
510+
511+4.2 Installation from source with default Makefile
512+==================================================
513+
514+To unpack, build and install Xnee from the sourcefiles do the following:
515+Download the source files into a directory
516+
517+ Unzip the source file
518+ `gunzip xnee-3.02.tar.gz'
519+
520+ Untar the source file
521+ `tar xvf xnee-3.02.tar'
522+
523+ Enter the Xnee directory
524+ `cd xnee-3.02'
525+
526+ Build Xnee
527+ `make -f Makefile.xnee clean all'
528+
529+ Copy the Xnee binary (xnee/src/xnee) to a directory
530+ `cp xnee/src/xnee /usr/local/bin'
531+
532+4.3 Installation from CVS
533+=========================
534+
535+Download the xnee source code from the CVS repository at
536+`http://savannah.gnu.org'. Instructions on how to do this can be found
537+there as well.
538+
539+Build Xnee
540+ `cd xnee'
541+ `make -f Makefile.cvs'
542+ `./configure --enable-doc'
543+ `make'
544+ `make install' (optional)
545+
546+ Build Xnee Documentation
547+ `cd doc'
548+ `make manual'
549+ `make install' (as root)
550+ `cd ..'
551+
552+
553+File: xnee.info, Node: Examples, Next: Programs, Prev: Installation, Up: Top
554+
555+5 Examples
556+**********
557+
558+5.1 Recorder
559+============
560+
561+5.1.1 Record mouse motions
562+--------------------------
563+
564+Record mouse motions only and save the session to mouse-rec.xnl.
565+ `cnee --record --mouse --out-file mouse-rec.xnl'
566+ After having typed this you can move your mouse round for a while.
567+After Xnee has exited you will be able to replay your motions. Xnee
568+will stop after having record 100 events (this is the default
569+behaviour).
570+
571+5.1.2 Record keyboard
572+---------------------
573+
574+Record keyboard events only and save log to kbd-rec.xnl.
575+ `cnee --record --keyboard --out-file kbd-rec.xnl'
576+ After having typed this Xnee records all your keyboard actions.
577+After Xnee has exited you will be able to replay your keyboard actions.
578+Xnee will stop after having record 100 events (this is the default
579+behaviour).
580+
581+5.1.3 Record keyboard and mouse
582+-------------------------------
583+
584+Record keyboard and mouse and save log to km-rec.xnl.
585+ `cnee --record --keyboard --mouse --out-file kbd-rec.xnl'
586+ After having typed this Xnee records all your keyboard and mouse
587+actions. So now move your pointer and write some stuff with your
588+keyboard. After Xnee has exited you will be able to replay your
589+keyboard and mouse actions. Xnee will stop after having record 100
590+events (this is the default behaviour).
591+
592+5.1.4 Record a gnumeric session
593+-------------------------------
594+
595+Record a gnumeric session. Record 400 events. Save output in file
596+gnumeric.xnl Start a terminal emulator (e.g xterm)
597+ `xterm&'
598+
599+ Start Xnee
600+ `cnee --record --keyboard --mouse --events-to-record 400 \'
601+ ` --out-file gnumeric.xnl&'
602+
603+ Start gnumeric
604+ `gnumeric&'
605+ Start using gnumeric. Browse the menus above, reset the fonts etc.
606+
607+5.1.5 Record a gnumeric session with synchronisation data
608+---------------------------------------------------------
609+
610+Record a gnumeric session. Record 400 events. Save output in file
611+gnumeric2.xnl
612+
613+Start a terminal emulator (e.g xterm) `xterm&'
614+
615+ Start Xnee
616+ `cnee --record --keyboard --mouse --events-to-record 400 \'
617+ ` --out-file gnumeric2.xnl\'
618+ `--delivered-event-range Expose,MapRequest,LeaveNotify,EnterNotify &'
619+
620+Start gnumeric `gnumeric&' Start using gnumeric. Browse the menus
621+above, reset the fonts etc.
622+
623+5.2 Replayer
624+============
625+
626+5.2.1 Replay mouse motions
627+--------------------------
628+
629+Replay mouse motions as found in the file mouse-rec.xnl.
630+ `cnee --replay --file mouse-rec.xnl'
631+ Xnee will now imitate exactly what you did when you recorded this
632+file.
633+
634+5.2.2 Replay mouse motions using with half speed
635+------------------------------------------------
636+
637+Replay mouse motions as found in the file mouse-rec.xnl but with the
638+speed set to 50% of the recorded.
639+ `cnee --replay --file mouse-rec.xnl --speed-percent 50'
640+ Xnee will now imitate exactly what you did when you recorded this
641+file, allthough it will be done in 50% of the recorded time.
642+
643+5.2.3 Replay mouse motions using with double speed
644+--------------------------------------------------
645+
646+Replay mouse motions as found in the file mouse-rec.xnl but with the
647+speed set to 200% of the recorded.
648+ `cnee --replay --file mouse-rec.xnl --speed-percent 200'
649+ Xnee will now imitate exactly what you did when you recorded this
650+file, allthough it will be done twice as fast as when recorded.
651+
652+5.2.4 Replay keyboard actions
653+-----------------------------
654+
655+Replay keyboard events from file kbd-rec.xnl.
656+ `cnee --replay --file kbd-rec.xnl'
657+ After having typed this Xnee replays all your keyboard actions.
658+After Xnee has exited you will be able to replay your keyboard actions.
659+
660+5.2.5 Replay keyboard and mouse
661+-------------------------------
662+
663+Replay keyboard and mouse from the file km-rec.xnl.
664+ `cnee --replay --keyboard --mouse --file kbd-rec.xnl'
665+ After having typed this Xnee replays all your keyboard and mouse
666+actions. Xnee moves your pointer and writes the the same stuff as you
667+did when recording.
668+
669+5.2.6 Replay a gnumeric session
670+-------------------------------
671+
672+Replay the gnumeric session above
673+Start a terminal emulator (e.g xterm) `xterm&' Start a new fresh
674+gnumeric spreadsheet `gnumeric&'
675+
676+ Start Xnee
677+ `cnee --replay --file gnumeric.xnl'
678+ Xnee will now do the same stuff you did when recording. It may happen
679+that some user actions are replayed to early. This is so because Xnee
680+has no way of knowing if it is in sync with the recorded session.
681+
682+5.2.7 Replay a gnumeric session with synchronisation data
683+---------------------------------------------------------
684+
685+Replay the second gnumeric session above.
686+Start a terminal emulator (e.g xterm) `xterm&' Start a new fresh
687+gnumeric spreadsheet `gnumeric&'
688+
689+ Start Xnee
690+ `cnee --replay --file gnumeric2.xnl'
691+ Xnee will now do the same stuff you did when recording. It may happen
692+that the replaying slows down. This is because Xnee is currently out of
693+sync. When being out of sync Xnee slows down a bit and checks the
694+thresholds if it is allowed to continue. Xnee will most probably find
695+itself in sync after a short while. All recorded user actions should
696+have occured the same way as when recording.
697+
698+5.2.8 Replay a gnumeric session with synchronisation data setting threshold
699+---------------------------------------------------------------------------
700+
701+Replay the second gnumeric session above.
702+Start a terminal emulator (e.g xterm) `xterm&' Start a new fresh
703+gnumeric spreadsheet `gnumeric&'
704+
705+5.3 Retyper
706+===========
707+
708+5.3.1 Retype the help printout
709+------------------------------
710+
711+If you want Xnee to fake a user typing the help printout from xnee you
712+can use the `--type-help' option.
713+Start a terminal emulator (e.g xterm) and an editor (e.g emacs).
714+ `xterm &'
715+
716+ `emacs &'
717+ Retype the help printout by starting xnee with a 10 seconds delay
718+delay.
719+ `cnee --time 10 --type-help'
720+ Move your mouse to the editor and make the editor have focus. Wait
721+a few seconds and xnee will type the help. You will now also have a
722+copy of help text.
723+
724+5.3.2 Retype a file
725+-------------------
726+
727+If you want Xnee to fake a user typing the letters as found in a text
728+file you can use the retype mode. Note that it isn't possible to retype
729+all characters yet. This will be implemented as soon as possible. We'll
730+give an example on how to use this mode.
731+Start a terminal emulator (e.g xterm)
732+ `xterm &'
733+ Create a text file
734+ `echo "Hi Xnee" > testfile.txt'
735+
736+ Retype the contents of this file to another file by starting xnee
737+with a 10 seconds delay delay.
738+ `cnee --time 10 --retype-file testfile.txt'
739+ Start the fabulous editor `cat'
740+ `cat > copiedfile.txt'
741+ Wait a few seconds and xnee will retype the letters in the file
742+`testfile.txt'. You will now also have a copy of that file. The copy
743+is called copiedfile.txt. This is a realy a stupid way to copy a file
744+but this option opens up a few possibilities.
745+
746+5.4 Distributor
747+===============
748+
749+With the distribution mode Xnee can send your device events to multiple
750+displays.
751+
752+5.4.1 Distribute your mouse motions
753+-----------------------------------
754+
755+You can distribute your mouse motions to the displays frodo:0.0 and
756+sam:0.0
757+Start a terminal emulator (e.g xterm)
758+ `xterm &'
759+ Start xnee
760+ `cnee --distribute frodo:0,sam:0.0'
761+ ` --record --mouse'
762+
763+ If you have setup authority correct on frodo and sam you will see
764+all you mouse motions being done on those displays as well.
765+
766+5.4.2 Distribute the replaying of mouse motions
767+-----------------------------------------------
768+
769+Replay and distribute mouse motions as found in the file
770+`mouse-rec.xnl'.
771+ `cnee --replay --file mouse-rec.xnl'
772+ ` --distribute frodo:0,sam:0.0'
773+ Xnee will now imitate exactly what you did when you recorded this
774+file on your host as well on frodo and sam.
775+
776+5.4.3 Distribute the retyping of a file
777+---------------------------------------
778+
779+If you want Xnee to to distribute the fakeing of a user typing the
780+letters as found in a text file you can use the retype mode together
781+with the distribution mode.
782+Start a terminal emulator (e.g xterm) on each of the hosts
783+ `xterm &'
784+ Create a text file.
785+ `echo "Hi again Xnee" > distfile.txt'
786+
787+ Retype the contents of this file to another file by starting xnee
788+with a 10 seconds delay delay.
789+ `cnee --time 10 --retype-file distfile.txt'
790+ ` --distribute frodo:0,sam:0.0 '
791+ Start the fabulous editor `cat' on the terminal emulators on each the
792+terminals.
793+ `cat > copiedfile.txt'
794+
795+If you have setup authority correct on frodo and sam you will, after a
796+few seconds, see xnee retype the letters in the file `distfile.txt'.
797+You will now also have three copies of that file. On copy on each
798+host. The copy is called copiedfile.txt. This might seem like a stupid
799+way to copy a file to three locations but this is just an example.
800+
801+5.5 Key
802+=======
803+
804+5.5.1 Stop Xnee with key
805+------------------------
806+
807+You can stop xnee by specifying a key. Make sure that this key isn't
808+grabbed by another X client (e.g by the Window Manager). Let's say that
809+you want Xnee to stop recording if you press Control and h.
810+ `cnee --record --mouse --events-to-record -1 --stop-key h'
811+ This will make xnee record mouse events until you press h. All
812+printouts are done to stdout so you can see that Xnee stops when you
813+press the key.
814+Move your mouse for a while and you'll see xnee print out lots of lines.
815+Press h.
816+Xnee will now have stopped recording.
817+
818+5.5.2 Pausing and resuming Xnee with key
819+----------------------------------------
820+
821+You can pause and resum xnee by specifying a key. Make sure that this
822+key isn't grabbed by another X client (e.g by the Window Manager).
823+Let's say that you want Xnee to pause recording if you press p and to
824+resume when pressing Comntrol and r.
825+ `cnee --record --mouse --events-to-record -1 --pause-key p \'
826+ `--resume-key r'
827+ This will make xnee record mouse events until you press p. All
828+printouts are done to stdout so you can see that Xnee stops when you
829+press the key.
830+Move your mouse for a while and you'll see xnee print out lots of lines.
831+Press p.
832+Xnee will now have paused recording. Move your mouse for a while and
833+note that nothing is printed.
834+Press r.
835+Xnee will now have resumed recording. Move your mouse for a while and
836+note that xnee begins its printouts.
837+
838+5.6 Using macro
839+===============
840+
841+Macors can be used in various applications allthough many applicaions
842+have a macro functionality built in (e.g emacs).
843+
844+5.6.1 Define a simple macro
845+---------------------------
846+
847+There are plenty of tools that bind a key combination to different
848+actions. For various reasons the author of this manual is familliar
849+with xrebind so we will use xrebind in this example.
850+The first thing to do is to decide which key combination to tie to the
851+wanted action. Let's say we want to use one of the funtion keys, F1.
852+We then have to find out which keycode belongs to that key. The action
853+we will bind to this key combination will be the replaying of a recorded
854+session from the previous examples.
855+We use Xnee to find the keycode for F1. Start xnee.
856+ `cnee --record --keyboard --events-to-record 20'
857+ Press the F1 key and see what number was printed out. It will look
858+something like this:
859+ `0,2,0,0,0,67,0,90300078'
860+ `0,3,0,0,0,67,0,90300156'
861+ The interesting part here is the 6th column. In our example we find
862+67, which is the keycode for F1.
863+Now we move on to setup xrebind to grab F1 and bind that to replay the
864+mouse motions from the file `mouse-rec.xnl'. Open or create a new file
865+in your home directory called `.xrbrc' and add the lines.
866+ `XrebindGrab'
867+ `{'
868+ ` Action = Execute'
869+ ` GrabKeycode = 67'
870+ ` Modifier = AnyModifier'
871+ ` Command = xnee --replay --file mouse-rec.xnl'
872+ ` Comment = Starting xnee replay'
873+ ` AutoRepeat = false'
874+ ` Fork = true'
875+ `}'
876+ Let's try it. Start xrebind with verbose printouts.
877+ `xrebind --verbose'
878+ Press F1 and the recorded session from the previous example shall be
879+replayed. You can also see in the verbose printouts that xrebind
880+executes xnee.
881+
882+5.6.2 Define another simple macro
883+---------------------------------
884+
885+Let's say we want to bind Control and e to execute the session as in the
886+example above. This time setting up xrebind is a bit easier.
887+Setup xrebind to grab F1 and bind that to replay the mouse motions from
888+the file `mouse-rec.xnl' by opening or create a new file in your home
889+directory called `.xrbrc' and add the lines.
890+ `XrebindGrab'
891+ `{'
892+ ` Action = Execute'
893+ ` GrabKey = e'
894+ ` Modifier = Control'
895+ ` Command = xnee --replay --file mouse-rec.xnl'
896+ ` Comment = Starting xnee replay'
897+ ` AutoRepeat = false'
898+ ` Fork = true'
899+ `}'
900+ `e, Control, Exec, xnee, --replay --file mouse-rec.xnl, \'
901+ `Fork, NoAutoRepeat'
902+ Let's try it. Start xrebind with verbose printouts.
903+ `xrebind --verbose'
904+ Press Control and e and the recorded session from the previous
905+example shall be replayed.
906+
907+5.7 Various options
908+===================
909+
910+5.7.1 Using verbose mode
911+------------------------
912+
913+To enable verbose mode, start xnee like this
914+ `cnee --verbose --record --mouse'
915+ Move the mouse for a while and you'll lots of verbose printouts that
916+usualy isn't there.
917+
918+5.7.2 Using human readable printouts
919+------------------------------------
920+
921+To enable human printout mode, start xnee like this
922+ `cnee --human-printout --record --mouse'
923+ Move the mouse for a while and you'll see the data printed out in an
924+almost human friendly format.
925+
926+5.7.3 Using a differet screen resolution
927+----------------------------------------
928+
929+If a session was recorded on a screen with another resolution than on
930+the one where we replay the session xnee will translate all coordinates
931+automagically. However, you can force xnee to use a specific resolution
932+when replaying. To do this, start xnee like this
933+ `cnee --replay --file mouse-rec.xnl \ '
934+ `--replay-resolution 800x600'
935+ Xnee will now replay the events recorded in the sessions file
936+`mouse-rec.xnl' as if the screen has a resolution of 800x600.
937+
938+5.7.4 Using a offset when replaying
939+-----------------------------------
940+
941+If a session was recording a centered window with a window manager and
942+is to bo replayed without a window manager (still centered) you can use
943+the offset switch to make Xnee replay the events in order to get the
944+coordinates right.
945+ `cnee --replay --file mouse-rec.xnl \ '
946+ `--replay-offset 12,-7'
947+ Xnee will now replay the events recorded in the sessions file
948+`mouse-rec.xnl' and adding 12 to the x coordinate and subtract 7 from
949+the y coordinate.
950+
951+5.7.5 Using a window position recall
952+------------------------------------
953+
954+For some reason a replayed window may pop up at a different position as
955+when recorded. Xnee can try to solve this by adding the
956+`recall-window-position' option during replay.
957+ `cnee --replay --file mouse-rec.xnl \ '
958+ `--recall-window-position'
959+ If a window pops up at a different position when replaying (as whe
960+recorded) Xnee moves the new window to the same position as when
961+recorded.
962+
963+5.7.6 Using no resolution translation
964+-------------------------------------
965+
966+If a session was recorded on a screen with another resolution than the
967+on the one where we replay the session xnee will translate all
968+coordinates automagically. However, you can force xnee not to use
969+translation. To do this, start xnee like this
970+ `cnee --replay --file mouse-rec.xnl \ '
971+ `--no-resolution-adjustment'
972+ Xnee will now replay the events recorded in the sessions file
973+`mouse-rec.xnl' as if the screen had the same resolution the recorded
974+one.
975+
976+5.7.7 Record another display than the default
977+---------------------------------------------
978+
979+If you want to record another display than the default, as set in the
980+DISPLAY variable, you use the `--display' option.
981+ `cnee --record --mouse --display frodo:0.0 '
982+ Xnee will now record the mouse events on the display frodo:0.0.
983+
984+5.7.8 Replay to another display than the default
985+------------------------------------------------
986+
987+If you want to replay to another display than the default, as set in the
988+DISPLAY variable, you use the `--display' option.
989+ `cnee --replay --display frodo:0.0 --file mouse-rec.xnl '
990+ Xnee will now replay the mouse events on the display frodo:0.0.
991+
992+5.8 Shell scripts using Xnee
993+============================
994+
995+Insted of onvoking Xnee for every time you need to fake events you can
996+make use of the shell functions as delivered with Xnee. With these
997+functions you can start one instance of Xnee and fake device events
998+whenever you need.
999+
1000+ `#!/bin/bash '
1001+ ` '
1002+ `# Source in handy functions '
1003+ `. /usr/share/xnee/xnee.sh '
1004+ ` '
1005+ `# Loop and press buttons '
1006+ `TMP=0 '
1007+ `while [ $TMP -le 5]'
1008+ `do'
1009+ ` TMP=$(($TMP+1))'
1010+ ` xnee_fake_button $TMP '
1011+ `done'
1012+ ` '
1013+ `# Just a simple example ....don't bother to understand '
1014+ `tar cvf /tmp/crap.tar *'
1015+ `sleep 2'
1016+ ` '
1017+ `# Fake ls and Enter '
1018+ `xnee_fake_key l'
1019+ `xnee_fake_key s'
1020+ `xnee_fake_key XK_Return'
1021+ ` '
1022+ ` '
1023+ This example will fake press and release of the mouse button and do
1024+fake press and release of ls followed by a press and release of
1025+Enter.... and of course, you'll get a tar file in /tmp.
1026+
1027+ Make sure that the path to the `xnee.sh' is correct.
1028+
1029+
1030+File: xnee.info, Node: Programs, Next: File format, Prev: Examples, Up: Top
1031+
1032+6 Xnee Programs
1033+***************
1034+
1035+GNU Xnee consists of three different programs, cnee, gnee and pnee.
1036+
1037+6.1 cnee - cnee's not an event emulator
1038+=======================================
1039+
1040+This is the Xnee command line program. This programs contains most
1041+features and is the basis for this documentation.
1042+
1043+ For a user not used to X11 it is probably a good idea to start with
1044+gnee or pnee instead or start using cnee in demonstration mode: `cnee
1045+--demo'
1046+
1047+6.2 gnee - gnee's not an emulator either
1048+========================================
1049+
1050+This is a GUI (using GTK2/Gnome) with most of the features of cnee. The
1051+GUI has been designed for ease of use.
1052+
1053+ Currently there are no plans for making a separate manual for gnee.
1054+
1055+6.3 pnee - pnee's not even emulating
1056+====================================
1057+
1058+This is a Gnome panel applet with a minimal set of features. Ease of
1059+use is the motto for this program. It is intended for users not being
1060+experts on X11 but still wants to record and replay a session for what
1061+ever purpose. By default pnee have settings that need not be changed
1062+for most cases. You can, however, launch the preferences dialog and set
1063+your preferred values as in most other applets.
1064+
1065+ If you find pnee a bit limited we suggest you switch over to using
1066+cnee.
1067+
1068+ Note: If pnee hangs you can press the stop button twice to make a
1069+reset. Hopefully this will solve the problem.
1070+
1071+6.3.1 Reporting pnee bugs
1072+-------------------------
1073+
1074+By default pnee writes error, verbose printouts and warnings to stderr
1075+which will not be visible to you as a user, since pnee will be started
1076+automatically along with the other applets. If you start up the
1077+preferences dialog you can choose a file for pnee printouts. After that
1078+you should turn on verbose logging (also in the preferences dialog) and
1079+then reproduce the bug and send over the file to <xnee-bug@gnu.org>.
1080+
1081+
1082+File: xnee.info, Node: File format, Next: Internals, Prev: Programs, Up: Top
1083+
1084+7 File types and format
1085+***********************
1086+
1087+ The files used by Xnee are
1088+ * Xnee Project File
1089+
1090+ * Xnee Session File
1091+ These files must follow the Xnee File Format.
1092+
1093+7.1 Project file
1094+================
1095+
1096+Xnee can be set either using command line options (when using xnee) or
1097+by clicking the correct buttons etc in the GUI (using gnee). Instead
1098+of setting the same settings over and over again, you can use the
1099+Xnee Project File.
1100+
1101+7.1.1 Create a project file
1102+---------------------------
1103+
1104+You can create a project by yourself. This can be done using the
1105+`write-settings' option in cnee or the "save settings to file" when
1106+using gnee or you can use the Xnee GUI (gnee) to write one. You can
1107+also write one by yourself in your favorite editor. Just make sure you
1108+ follow the Xnee format. For information and specification on this
1109+format read the Xnee format chapter. The authors of Xnee
1110+suggests you start of with a generated project file. To get one such
1111+file, type the following `cnee --mouse --keyboard --write-settings
1112+new_proj.xnp'. You will now have a file `new_proj.xnp' with some
1113+useful values, which you can edit as you wish. To use this
1114+file to record, simply type `cnee --record --project new_proj.xnp'
1115+
1116+
1117+7.2 Xnee Session file
1118+=====================
1119+
1120+The Xnee session files are the printouts from a recorded session
1121+following the Xnee File Format. For information and specification on
1122+this format read the Xnee File Format chapter.
1123+
1124+7.3 Xnee file format
1125+====================
1126+
1127+The Xnee Format is divided into different directives. The format is
1128+line based, meaning that
1129+ * there is one directive per line
1130+
1131+ * one line contains one (and only one) directive
1132+ These directives are definied as follows.
1133+
1134+7.4 Xnee directives
1135+===================
1136+
1137+The following directives are used in Xnee:
1138+ Directives Description
1139+ Comment This is used to comment the various files
1140+ Project These contains information about the session- or
1141+ project file
1142+ Settings Data used when recording and replaying
1143+ Replay data Recorded replayable data (used when replaying)
1144+ Script replay data Scriptable primitives
1145+ Mark Lines inserted in the seesion file when a
1146+ modifier+key was pressed
1147+ Execution Lines that trigger the execution of an external
1148+ program
1149+ Project information Project
1150+
1151+
1152+7.4.1 Comment
1153+-------------
1154+
1155+
1156+ First token Interpretation
1157+ # The whole line is ignored.
1158+ As long as the first token is `#' the whole line is intrepreted as a
1159+comment, just as in bash.
1160+
1161+7.4.2 Settings
1162+--------------
1163+
1164+
1165+ Settings directive Argument Interpretation
1166+data-to-record integer Limits the number of data to record to to
1167+ the integer value
1168+events-to-record integer Limits the number of events to record to
1169+ to the integer value
1170+time-to-record integer Limits the number of seconds to record to
1171+ to the integer value
1172+display string Sets the display to record or replay to
1173+ the string
1174+distribute string Distribute all recorded or replayed
1175+ replayable events to the display given by
1176+ the string
1177+file string Read replay data from the file given by
1178+ the string
1179+out-file string Print recorded data to the file given by
1180+ the string
1181+plugin string Use the plugin given by the string
1182+first-last boolean Print only first and last of successive
1183+ MotionNotify events
1184+verbose boolean Use verbose debugging printout
1185+buffer-verbose boolean Use verbose buffer verbose printouts (not
1186+ built by default)
1187+time integer Delay the start of the Xnee action
1188+all-clients boolean Record all curret and future clients
1189+ (default)
1190+future-clients boolean Record only future clients
1191+human-printout boolean Prints the recorded data in a (quite) more
1192+ ser friendly format
1193+sync-mode boolean Sets recording mode
1194+speed-percent integer Sets the replaying speed percentage to the
1195+ integer value
1196+stop-key string Sets the stop key combination to the
1197+ string
1198+pause-key string Sets the pause key combination to the
1199+ string
1200+resume-key string Sets the resume key combination to the
1201+ string
1202+mark-key string Sets the mark key combination to the
1203+ string
1204+exec-key string Sets the execute key combination to
1205+ string
1206+replay-resolution string Sets the replay resolution to the string
1207+replay-resolution string Sets the replay resolution to the string
1208+recall-window-position Use window position recall during replay
1209+resolution-adjustment boolean Use resolution adjustment, even if the
1210+ recored resolution differs from the one to
1211+ replay to
1212+event-range range Sets the events to record
1213+error-range range Sets the errors to record to range*
1214+request-range range Sets the request to record to range*
1215+reply-range range Sets the replies to record to range*
1216+extension-request-major-range range Sets the extension requests (major) to
1217+ record to range*
1218+extension-request-minor-range range Sets the extension requests (minor) to
1219+ record to range*
1220+extension-reply-major-range range Sets the extension replies (major) to
1221+ record to range*
1222+extension-reply-minor-range range Sets the extension replies (minor) to
1223+ record to range*
1224+force-replay boolean Continue to replay even if Xnee is out of
1225+ sync
1226+max-threshold integer Sets the maximum synchronisation threshold
1227+min-threshold integer Sets the minimum synchronisation threshold
1228+total-threshold integer Sets the total maximum synchronisation
1229+ threshold
1230+events-to-record integer Sets the number of events to record
1231+data-to-record integer Sets the number of data to record
1232+time-to-record integer Sets the number of seconds to record
1233+store-mouse-position If set, Xnee records the initial mouse
1234+ position and makes sure that replaying
1235+ starts from there
1236+retype-press-delay integer Xnee delays processing after a faked key
1237+ press (during retype) with integer milli
1238+ seconds
1239+retype-release-delay integer Xnee delays processing after a faked key
1240+ press (during retype) with integer milli
1241+ seconds
1242+
1243+Settings argument Description Example
1244+`integer' is an integer value. 1
1245+`string' is a string. localhost
1246+`boolean' is a boolean value given by true, false, 0, 1
1247+ true/1 or false/0
1248+`subrange' Subrange is gives a range of 2-5 or MapNotify
1249+ data by specifying a start
1250+ and stop data. In
1251+ the case of one data the
1252+ stop data can be omitted.
1253+`range' Ranges are a comma separated 2-3,MotionNotify-MapNotify,GravityNotify,PropertyNotify,30
1254+ list of subranges.
1255+
1256+
1257+7.4.3 Replay
1258+------------
1259+
1260+Replay directive Interpretation
1261+0,0 not valid
1262+0,1 not valid
1263+0,2,keycode,time KeyPress on key with keycode, used to
1264+ replay
1265+0,3,keycode,time KeyRelease on key with keycode, used to
1266+ replay
1267+0,4,button nr,time ButtonPress on button nr, used to replay
1268+0,5,button nr,time ButtonRelease on button nr, used to
1269+ replay
1270+0,6,x,y,time MotionNotify on poistion (x,y), used to
1271+ replay
1272+0,7-XXX,time MotionNotify on poistion (x,y), used to
1273+ replay
1274+1,request number, request Recorded request, used during
1275+type, length, request id, synchronisation
1276+time
1277+2,reply number,time Recorded reply, used during
1278+ synchronisation
1279+3,error number,time Recorded error, used during
1280+ synchronisation
1281+time is the time on the server the data was to the recording Xnee
1282+client. This time is used to keep the speed intact during replay.
1283+
1284+7.4.4 Script replay data
1285+------------------------
1286+
1287+
1288+Primitive Interpretation
1289+fake-motion Fakes a mouse motion
1290+fake-button-press Fakes a button press
1291+fake-button-release Fakes a button release
1292+fake-button Fakes a button press and release
1293+fake-key-press Fakes a key press
1294+fake-key-release Fakes a key release
1295+fake-key Fakes a key press and release
1296+
1297+Primitive Primitive Interpretation
1298+variable values
1299+x=value integer Sets the x position used in fake-motion to
1300+ value
1301+x=value +integer Set the relative motion (x direction) used
1302+ in fake-motion to value
1303+x=value -integer Set the relative motion (x direction) used
1304+ in fake-motion to value
1305+y=value integer Sets the y position used in fake-motion to
1306+ value
1307+y=value +integer Set the relative motion (y direction) used
1308+ in fake-motion to value
1309+y=value -integer Set the relative motion (y direction) used
1310+ in fake-motion to value
1311+button=value integer set the button to fake with
1312+ fake-button-press, fake-button-release and
1313+ fake-button to value
1314+key=value integer set the key to fake with fake-key-press,
1315+ fake-key-release and fake-key to value
1316+
1317+
1318+7.4.5 Mark
1319+----------
1320+
1321+First tokens Arguments Interpretation
1322+Mark time string Ignored. This feature is intended to let
1323+ the user do whatever he/she wants
1324+ to. This will obviously lead to modifying
1325+ the source code etc.
1326+
1327+
1328+7.4.6 Exec
1329+----------
1330+
1331+First tokens Arguments Interpretation
1332+Exec command This is used during to replay to execute a
1333+ string given command. If no command
1334+ string is found Xnee will try to
1335+ read the command from the environment
1336+ variable `XNEE_EXEC_COMMAND'
1337+
1338+
1339+7.4.7 Project information
1340+-------------------------
1341+
1342+Project information directives Arguments
1343+ProjectName string s is the project name
1344+ProjectDescription string s is the project description
1345+ProjectCreationDate string s is the project creation date
1346+ProjectCreationProgram string s is the name of the program
1347+ that create the project file
1348+ProjectCreationProgVersion string s is the version of the program
1349+ that create the project file
1350+ProjectLastChangeDate string s is the date of the last change
1351+ of the project file
1352+ProjectLastChangeProgram string s is the name of the program
1353+ that last changed of the project file
1354+ProjectLastChangeVersion string s is the version of the program
1355+ that last changed of the project file
1356+ProjectCurrentChangeDate string s is the date of the current
1357+ change of the project file
1358+ProjectCurrentChangeProgram string s is the name of the program
1359+ that current changed of the project
1360+ file
1361+ProjectCurrentChangeVersion string s is the version of the program
1362+ that current changed of the project
1363+ file
1364+
1365+
1366+File: xnee.info, Node: Internals, Next: Requirements, Prev: File format, Up: Top
1367+
1368+8 Xnee Internals
1369+****************
1370+
1371+This chapter is intended to explain the internal design of libxnee.
1372+Hopefully this will lead to a better understanding of how to use Xnee
1373+and why some features exists and why some doesn't.
1374+
1375+8.1 Synchronisation
1376+===================
1377+
1378+We will try to go through the basics of how Xnee implememnts
1379+synchronisation and try to tell you, by using examples, why
1380+synhronisation is important.
1381+
1382+8.1.1 Why synchronise
1383+---------------------
1384+
1385+To understand why synchronisation during replay is needed an example is
1386+given.
1387+
1388+ In this example only mouse and keyboard events are recorded. Think
1389+of a session with a web browser.
1390+
1391+ During record the following is done:
1392+ * Start galeon (or another web browser) via the GNOME panel
1393+
1394+ * Press Ctrl-O which pops up a window
1395+
1396+ * Press the left button in the textfield of the popup window
1397+
1398+ * Enter the URL you want to enter (e.g `http://www.gnu.org')
1399+
1400+ * Click on the OK button
1401+
1402+ * Then click on another URL (e.g GNU Documentation)
1403+
1404+ * Then click on another URL (e.g On-Line Documentation)
1405+
1406+ When replaying this session it is often to synchronise the recorded
1407+session with what's happening "right now" on the display since
1408+sometimes (or rather always) there can be different response times from
1409+the same URL.
1410+
1411+ During replay the following is done:
1412+ * Galeon is started
1413+
1414+ * Ctrl-O is typed which pops up a window
1415+
1416+ * Press the left button in the textfield of the popup window
1417+
1418+ * Enter the URL you want to enter (e.g `http://www.gnu.org')
1419+
1420+ * Click on the OK button
1421+
1422+ * ... due to an enormous amount of visitors the GNU web server can't
1423+ respond as quick as it did when recording. So when the next thing
1424+ happens
1425+
1426+ * Then click on another URL (e.g GNU Documentation)
1427+
1428+ * ... the page hasn't been loaded and when the next event is replayed
1429+
1430+ * Then click on another URL (e.g On-Line Documentation)
1431+
1432+ * ... the link isn't there and we're really out of sync with the
1433+ recorded session
1434+
1435+8.1.2 How to synchronise
1436+------------------------
1437+
1438+Instead we could record some more data than just the mouse and keyboard
1439+events.
1440+
1441+ During record the following is done:
1442+ * Start galeon (or another web browser) via the GNOME panel
1443+
1444+ * Record some X data that tells us that a window have been created
1445+
1446+ * Press Ctrl-O which pops up a window
1447+
1448+ * Record some X data that tells us that a window have been created
1449+
1450+ * Press the left button in the textfield of the popup window
1451+
1452+ * Enter the URL you want to enter (e.g `http://www.gnu.org')
1453+
1454+ * Click on the OK button
1455+
1456+ * Record some X data that tells us that a window have been destroyed
1457+
1458+ * Then click on another URL (e.g GNU Documentation)
1459+
1460+ * Record some X data that tells us that a some text has been
1461+ displayed in a window
1462+
1463+ * Then click on another URL (e.g On-Line Documentation)
1464+
1465+ * Record some X data that tells us that a some text has been
1466+ displayed in a window
1467+ The non-mouse-or-keyboard events recorded (window created & text
1468+displayed) are record for synchronisation purposes.
1469+
1470+ During replay the following is done:
1471+ * Start galeon (or another web browser) via the GNOME panel
1472+
1473+ * wait for: the recorded X data to be sent again
1474+
1475+ * Press Ctrl-O which pops up a window
1476+
1477+ * wait for: the recorded X data to be sent again
1478+
1479+ * Press the left button in the textfield of the popup window
1480+
1481+ * Enter the URL you want to enter (e.g `http://www.gnu.org')
1482+
1483+ * Click on the OK button
1484+
1485+ * wait for: the recorded X data to be sent again
1486+
1487+ * Then click on another URL (e.g GNU Documentation)
1488+
1489+ * wait for: the recorded X data to be sent again
1490+
1491+ * Then click on another URL (e.g On-Line Documentation)
1492+
1493+ * wait for: the recorded X data to be sent again
1494+
1495+8.1.3 Synchronisation is needed
1496+-------------------------------
1497+
1498+So by recording more data than just the events to be replayed we can
1499+synchornise what was recorded with what is going on when replaying. But
1500+the data has to be choosen with respect to that the data:
1501+ * differs from different sessions (Gimp and Xterm are really
1502+ different)
1503+
1504+ * slows down the replay session if there are too many
1505+
1506+ * is hard to choose since the X protocol is rich
1507+
1508+ * differs (comparing record and replaying)
1509+
1510+ * can have different ordering (comparing record and replaying)
1511+
1512+8.1.4 Different data for different kind of sessions
1513+---------------------------------------------------
1514+
1515+If we record an xterm session with all data being recorded and compare
1516+that to a recorded GIMP session with all data being recordr we can see
1517+that the data to use as synchronisation data differs. AS an example
1518+there aren't so many windows created/destryed during an xterm session.
1519+
1520+ The solve to the the problem of finding out what data to use as
1521+synchronisation data one can:
1522+ * use the project files delivered with Xnee
1523+
1524+ * analyse the application (using Xnee's `--human-printouts' option)
1525+ and do some "trial and error"
1526+
1527+8.1.5 Slow replay session due to too many synchronise data
1528+----------------------------------------------------------
1529+
1530+The synchronisation itself doesn't take much time but there are
1531+timeouts that makes Xnee paues for a short while (see above). If there
1532+are many such timeouts it will lead to a slow or shaky replaying
1533+session.
1534+
1535+8.1.6 X protocol is rich and asynchronous
1536+-----------------------------------------
1537+
1538+For an end user (with no X expertise) it is hard to read the X protocol
1539+specification and make assumptions on what data to use.
1540+
1541+8.1.7 Different data sent
1542+-------------------------
1543+
1544+Even if one starts up a machine from scratch (reboot) when recording
1545+and from scratch when replaying there is no guarantee that the data is
1546+sent in the same order or that exactly the same amount of data is sent.
1547+
1548+8.1.8 Buffers and timeouts
1549+--------------------------
1550+
1551+To enable synchronisation Xnee buffers data:
1552+ * that was read in the session file but hasn't been sent during
1553+ replay
1554+
1555+ * that was sent during replay but hasn't been seen in the session
1556+ file being replayed
1557+ For every data read from session file (during replay) that isn't
1558+replayable (i e device event) Xnee stores the data in a buffer. Xnee
1559+also stores the data sent from the X server during playback. The data
1560+received from the server make the buffer entry for that specific data
1561+be decremented. If, on the other hand, the same data was read from file
1562+the buffer entry for that data is incremented. Before replaying any
1563+replayable event Xnee makes sure it is in sync. If Xnee is in sync the
1564+replaying continues. If Xnee is out of sync it will look for its
1565+thresholds and see if it is inside a user specified range. There are
1566+three thresholds:
1567+ * positive maximum nr data read from session file
1568+
1569+ * negative minimum nr of data sent from X server
1570+
1571+ * absolute total maximum sum of the absolute values above
1572+ If Xnee read one data from file (e.g the event MapNotify) Xnee
1573+checks if the buffer entry for the specific data is bigger than the
1574+positive maximum value (after having incremented the buffer value).
1575+
1576+ If Xnee receives one data from the X server (e.g the event
1577+MapNotify) it checks if the buffer entry for the specific data is
1578+bigger than the negative minimum value (after having decremented the
1579+buffer value).
1580+
1581+ Xnee also checks if the absolute sum of the differences for every
1582+entry in the buffer is higher the a total threshold.
1583+
1584+ If Xnee is getting out of sync it slows down the speed a bit and
1585+tries to continue. However after a while it may happen that Xnee
1586+considers that it no use to continue since we are too much out of sync.
1587+Xnee compensates for the delay during replay that is caused when being
1588+out of sync.
1589+It is possible to tweak the thresholds using the `--maximum-threshold',
1590+`--negative-threshold' and `--total-diff-threshold' options. Is is also
1591+possible to turn off synchronisation completely using the `--no-sync'
1592+option.
1593+
1594+
1595+File: xnee.info, Node: Requirements, Next: FAQ, Prev: Internals, Up: Top
1596+
1597+9 Xnee Requirements
1598+*******************
1599+
1600+9.1 Runtime requirements
1601+========================
1602+
1603+Xnee requirements:
1604+ * RECORD extension
1605+
1606+ * XTest extension
1607+ You can use Xnee in replaying mode without RECORD extension if
1608+synchronisation is turned off.
1609+
1610+9.2 Development requirements
1611+============================
1612+
1613+For development requirements, please look at the DEVELOPMENT file that
1614+is distributed with all packages and with CVS.
1615+
1616+
1617+File: xnee.info, Node: FAQ, Next: Copying This Manual, Prev: Requirements, Up: Top
1618+
1619+10 FAQ
1620+******
1621+
1622+`Where do I send questions?'
1623+ <xnee-devel@gnu.org>
1624+`Where and how do I report bugs?'
1625+ Turn on verbose mode `cnee --verbose' and save the printouts.
1626+ Include all printouts and log files in the mail which is sent to
1627+ <bug-xnee@gnu.org>
1628+`Can you add xxx functionality to Xnee'
1629+ Send an email to <xnee-devel@gnu.org> and we'll consider it.
1630+
1631+`Why the name Xnee?'
1632+ We wanted to use a recursive acronym, as GNU ("GNU's Not Unix').
1633+ After having read the Wine documentation, we thought that Xnee is
1634+ not an Event Emulator would work fine since Xnee is Not an Event
1635+ Emulator but rather a event recorder and faker.
1636+
1637+`What does the name cnee mean?'
1638+ cnee's not an event emulator
1639+
1640+`What does the name gnee mean?'
1641+ gnee's not an emulator either
1642+
1643+`What does the name pnee mean?'
1644+ pnee's not even emulating
1645+
1646+`What doesn't the name gnee mean?'
1647+ gnee's not an Event Emulator
1648+
1649+`What license is Xnee released under ?'
1650+ GPL version two or later. Which can be found at
1651+ `http://www.gnu.org/copyleft/gpl.html'. Xnee will switch to GPLv3
1652+ as soon as GPLv3 is released.
1653+
1654+`Where is the CVS repository?'
1655+ You can find a CVS tree at `http://savannah.gnu.org'. You are
1656+ more than welcome to join
1657+
1658+`Is there a GUI frontend for Xnee ?'
1659+ Yes! Gnee.
1660+
1661+`When setting ranges (integers), how do I know what numbers belong'
1662+ to X11 data? You can either type the data name directly (e.g
1663+ MotionNotify) or you can use the print-xxx-name options.
1664+ * `--print-data-name'
1665+
1666+ * `--print-event-name'
1667+
1668+ * `--print-error-name'
1669+
1670+ * `--print-reply-name'
1671+
1672+ * `--print-request-name'
1673+
1674+`When I replay to another display the characters are not correct?'
1675+ Make sure you use the same keyboard mapping.
1676+ A typical example:
1677+ Record local host using Xnee:
1678+ `cnee --record --out-file recorded_on_local.xnl '
1679+ Store remote keymap:
1680+ `xmodmap -pke -display remote:0 > remote.map '
1681+ Store local keymap:
1682+ `xmodmap -pke > local.map '
1683+ Copy local keymap to remote host:
1684+ `cat local.map | xmodmap -display remote:0 - '
1685+ Replay previously recorded session:
1686+ `cnee --replay --file recorded_on_local.xnl --display remote:0 '
1687+ Copy the original remote keymap to remote host:
1688+ `cat remote.map | xmodmap -display remote:0 - '
1689+`When starting Xnee I am informed that I am missing the RECORD extension'
1690+ Your X server doesn't have the RECORD extension either loaded or
1691+ compiled. To solve this you have to, depending on what Xserver you
1692+ have do the following:
1693+
1694+`Can Xnee record more than one display?'
1695+ No, we used to consider adding the functionality but have no plans
1696+ to implement it anymore.
1697+
1698+`When starting Xnee I am informed that I am missing the RECORD extension'
1699+ Your X server doesn't have the RECORD extension either loaded or
1700+ compiled. To solve this you have to, depending on what Xserver you
1701+ have do the following:
1702+
1703+ * XFree86 4.0 and higher Make sure that the RECORD extension is
1704+ loaded. This is done by letting the Module section in the X
1705+ config file (e.g /etc/X11/XF86Config-4) look something like:
1706+
1707+ `Section "Module"'
1708+ `Load "dbe" # Double-buffering'
1709+ `Load "GLcore" # OpenGL support'
1710+ `Load "dri" # Direct rendering infrastructure'
1711+ `Load "glx" # OpenGL X protocol interface'
1712+ `Load "extmod" # Misc. required extensions'
1713+ `Load "v4l" # Video4Linux'
1714+ `# Load "pex5" # PHIGS for X 3D environment (obsolete)'
1715+ `Load "record" # X event recorder'
1716+ `# Load "xie" # X Image Extension (obsolete)'
1717+ `# You only need the following two modules if you do not use
1718+ xfs.'
1719+ `# Load "freetype" # TrueType font handler'
1720+ `# Load "type1" # Adobe Type 1 font handler'
1721+ EndSection
1722+
1723+ The important load directive (in this case) is the following
1724+ line
1725+ `Load "record" # X event recorder'
1726+ * X.org, XFree86 (3.3 and lower) or any other Xserver
1727+ Recompile and reinstall the Xserver and make sure that RECORD
1728+ extension is built into the Xserver. Please look at the
1729+ documentation from your Xserver "vendor" on how to do that.
1730+
1731+`How do I build VNC so that I can use Xnee together with it?'
1732+ Download vnc source from:
1733+ `http://www.uk.research.att.com/vnc/xvnchistory.html'
1734+ In the file `Xvnc/config/cf/vnc.def' change NO on the following
1735+ items to YES as below:
1736+ `#define BuildRECORD YES'
1737+ `#define BuildRECORDlib YES'
1738+ Download the Xfree86 distribution from `http://www.xfree86.org'.
1739+ Specifically, the following dir, (currently in the file
1740+ `X430src-3.tgz file' ):
1741+ `tar zxvf \'
1742+ `X430src-3.tgz '
1743+ `xc/programs/Xserver/record/'
1744+ `xc/programs/Xserver/record/Imakefile'
1745+ `xc/programs/Xserver/record/record.c'
1746+ `xc/programs/Xserver/record/recordmod.c'
1747+ `xc/programs/Xserver/record/set.c'
1748+ `xc/programs/Xserver/record/set.h'
1749+ `xc/programs/Xserver/record/module/'
1750+ `xc/programs/Xserver/record/module/Imakefile'
1751+ `cp -rf \'
1752+ `xc/programs/Xserver/record \'
1753+ `vnc_unixsrc/Xvnc/programs/Xserver'
1754+ `cd libvncauth/' `xmkmf' `make all'
1755+ `cd Xvnc' `make World |& tee LOG'
1756+ Verify the build by running `xdpyinfo' in an xterm in the vncserver
1757+ and verify that RECORD and XTEST extensions are loaded.
1758+
1759+`How do I ensure that the mouse, during replay, is at the same position (x,y) as when recorded?'
1760+ Use the `--store-mouse-pos' option. This will cause Xnee to store
1761+ the mouse position before starting to record. This position will
1762+ be used to set the start position before replaying of recorded
1763+ data starts.
1764+
1765+`How do I ensure that the same window is focused as when recorded?'
1766+ It's simple, just make sure that you record the window getting
1767+ focus.
1768+
1769+`The window pops up at different positions when replaying, can Xnee handle that?'
1770+ Yes, use the `--recall-window-position' option when replaying
1771+ (with cnee). This makes cnee try yo reposition the window as it
1772+ was positioned when recording the session.
1773+
1774+`Xnee seems to mess up my entire session after replaying a sessions which was interupted by Control-C?'
1775+ Xnee records the KeyPress belonging to Control. After that the
1776+ system sends Xnee a signal which makes Xnee stop recording. So you
1777+ end up having a Control KeyPress recorded, with no coresponding
1778+ KeyRelease. To solve the screwed up session, press Control (which
1779+ generates a KeyPress and the wanted KeyRelease). If you want to
1780+ keep your recorded session and not want this to happen again,
1781+ remove the last line in the recorded file starting with `2,'.
1782+
1783+ A better way to interrupt Xnee is to use the stop key option, e.g
1784+ in cnee `--stop-key F1'. This prevents the above situation.
1785+
1786+`Autorepeat is turned off by Xnee, how do I turn it on again?'
1787+ `xset r on'
1788+
1789+
1790+
1791+File: xnee.info, Node: Copying This Manual, Next: Index, Prev: FAQ, Up: Top
1792+
1793+Appendix A Copying This Manual
1794+******************************
1795+
1796+A.1 GNU Free Documentation License
1797+==================================
1798+
1799+ Version 1.2, November 2002
1800+
1801+ Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
1802+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
1803+
1804+ Everyone is permitted to copy and distribute verbatim copies
1805+ of this license document, but changing it is not allowed.
1806+
1807+ 0. PREAMBLE
1808+
1809+ The purpose of this License is to make a manual, textbook, or other
1810+ functional and useful document "free" in the sense of freedom: to
1811+ assure everyone the effective freedom to copy and redistribute it,
1812+ with or without modifying it, either commercially or
1813+ noncommercially. Secondarily, this License preserves for the
1814+ author and publisher a way to get credit for their work, while not
1815+ being considered responsible for modifications made by others.
1816+
1817+ This License is a kind of "copyleft", which means that derivative
1818+ works of the document must themselves be free in the same sense.
1819+ It complements the GNU General Public License, which is a copyleft
1820+ license designed for free software.
1821+
1822+ We have designed this License in order to use it for manuals for
1823+ free software, because free software needs free documentation: a
1824+ free program should come with manuals providing the same freedoms
1825+ that the software does. But this License is not limited to
1826+ software manuals; it can be used for any textual work, regardless
1827+ of subject matter or whether it is published as a printed book.
1828+ We recommend this License principally for works whose purpose is
1829+ instruction or reference.
1830+
1831+ 1. APPLICABILITY AND DEFINITIONS
1832+
1833+ This License applies to any manual or other work, in any medium,
1834+ that contains a notice placed by the copyright holder saying it
1835+ can be distributed under the terms of this License. Such a notice
1836+ grants a world-wide, royalty-free license, unlimited in duration,
1837+ to use that work under the conditions stated herein. The
1838+ "Document", below, refers to any such manual or work. Any member
1839+ of the public is a licensee, and is addressed as "you". You
1840+ accept the license if you copy, modify or distribute the work in a
1841+ way requiring permission under copyright law.
1842+
1843+ A "Modified Version" of the Document means any work containing the
1844+ Document or a portion of it, either copied verbatim, or with
1845+ modifications and/or translated into another language.
1846+
1847+ A "Secondary Section" is a named appendix or a front-matter section
1848+ of the Document that deals exclusively with the relationship of the
1849+ publishers or authors of the Document to the Document's overall
1850+ subject (or to related matters) and contains nothing that could
1851+ fall directly within that overall subject. (Thus, if the Document
1852+ is in part a textbook of mathematics, a Secondary Section may not
1853+ explain any mathematics.) The relationship could be a matter of
1854+ historical connection with the subject or with related matters, or
1855+ of legal, commercial, philosophical, ethical or political position
1856+ regarding them.
1857+
1858+ The "Invariant Sections" are certain Secondary Sections whose
1859+ titles are designated, as being those of Invariant Sections, in
1860+ the notice that says that the Document is released under this
1861+ License. If a section does not fit the above definition of
1862+ Secondary then it is not allowed to be designated as Invariant.
1863+ The Document may contain zero Invariant Sections. If the Document
1864+ does not identify any Invariant Sections then there are none.
1865+
1866+ The "Cover Texts" are certain short passages of text that are
1867+ listed, as Front-Cover Texts or Back-Cover Texts, in the notice
1868+ that says that the Document is released under this License. A
1869+ Front-Cover Text may be at most 5 words, and a Back-Cover Text may
1870+ be at most 25 words.
1871+
1872+ A "Transparent" copy of the Document means a machine-readable copy,
1873+ represented in a format whose specification is available to the
1874+ general public, that is suitable for revising the document
1875+ straightforwardly with generic text editors or (for images
1876+ composed of pixels) generic paint programs or (for drawings) some
1877+ widely available drawing editor, and that is suitable for input to
1878+ text formatters or for automatic translation to a variety of
1879+ formats suitable for input to text formatters. A copy made in an
1880+ otherwise Transparent file format whose markup, or absence of
1881+ markup, has been arranged to thwart or discourage subsequent
1882+ modification by readers is not Transparent. An image format is
1883+ not Transparent if used for any substantial amount of text. A
1884+ copy that is not "Transparent" is called "Opaque".
1885+
1886+ Examples of suitable formats for Transparent copies include plain
1887+ ASCII without markup, Texinfo input format, LaTeX input format,
1888+ SGML or XML using a publicly available DTD, and
1889+ standard-conforming simple HTML, PostScript or PDF designed for
1890+ human modification. Examples of transparent image formats include
1891+ PNG, XCF and JPG. Opaque formats include proprietary formats that
1892+ can be read and edited only by proprietary word processors, SGML or
1893+ XML for which the DTD and/or processing tools are not generally
1894+ available, and the machine-generated HTML, PostScript or PDF
1895+ produced by some word processors for output purposes only.
1896+
1897+ The "Title Page" means, for a printed book, the title page itself,
1898+ plus such following pages as are needed to hold, legibly, the
1899+ material this License requires to appear in the title page. For
1900+ works in formats which do not have any title page as such, "Title
1901+ Page" means the text near the most prominent appearance of the
1902+ work's title, preceding the beginning of the body of the text.
1903+
1904+ A section "Entitled XYZ" means a named subunit of the Document
1905+ whose title either is precisely XYZ or contains XYZ in parentheses
1906+ following text that translates XYZ in another language. (Here XYZ
1907+ stands for a specific section name mentioned below, such as
1908+ "Acknowledgements", "Dedications", "Endorsements", or "History".)
1909+ To "Preserve the Title" of such a section when you modify the
1910+ Document means that it remains a section "Entitled XYZ" according
1911+ to this definition.
1912+
1913+ The Document may include Warranty Disclaimers next to the notice
1914+ which states that this License applies to the Document. These
1915+ Warranty Disclaimers are considered to be included by reference in
1916+ this License, but only as regards disclaiming warranties: any other
1917+ implication that these Warranty Disclaimers may have is void and
1918+ has no effect on the meaning of this License.
1919+
1920+ 2. VERBATIM COPYING
1921+
1922+ You may copy and distribute the Document in any medium, either
1923+ commercially or noncommercially, provided that this License, the
1924+ copyright notices, and the license notice saying this License
1925+ applies to the Document are reproduced in all copies, and that you
1926+ add no other conditions whatsoever to those of this License. You
1927+ may not use technical measures to obstruct or control the reading
1928+ or further copying of the copies you make or distribute. However,
1929+ you may accept compensation in exchange for copies. If you
1930+ distribute a large enough number of copies you must also follow
1931+ the conditions in section 3.
1932+
1933+ You may also lend copies, under the same conditions stated above,
1934+ and you may publicly display copies.
1935+
1936+ 3. COPYING IN QUANTITY
1937+
1938+ If you publish printed copies (or copies in media that commonly
1939+ have printed covers) of the Document, numbering more than 100, and
1940+ the Document's license notice requires Cover Texts, you must
1941+ enclose the copies in covers that carry, clearly and legibly, all
1942+ these Cover Texts: Front-Cover Texts on the front cover, and
1943+ Back-Cover Texts on the back cover. Both covers must also clearly
1944+ and legibly identify you as the publisher of these copies. The
1945+ front cover must present the full title with all words of the
1946+ title equally prominent and visible. You may add other material
1947+ on the covers in addition. Copying with changes limited to the
1948+ covers, as long as they preserve the title of the Document and
1949+ satisfy these conditions, can be treated as verbatim copying in
1950+ other respects.
1951+
1952+ If the required texts for either cover are too voluminous to fit
1953+ legibly, you should put the first ones listed (as many as fit
1954+ reasonably) on the actual cover, and continue the rest onto
1955+ adjacent pages.
1956+
1957+ If you publish or distribute Opaque copies of the Document
1958+ numbering more than 100, you must either include a
1959+ machine-readable Transparent copy along with each Opaque copy, or
1960+ state in or with each Opaque copy a computer-network location from
1961+ which the general network-using public has access to download
1962+ using public-standard network protocols a complete Transparent
1963+ copy of the Document, free of added material. If you use the
1964+ latter option, you must take reasonably prudent steps, when you
1965+ begin distribution of Opaque copies in quantity, to ensure that
1966+ this Transparent copy will remain thus accessible at the stated
1967+ location until at least one year after the last time you
1968+ distribute an Opaque copy (directly or through your agents or
1969+ retailers) of that edition to the public.
1970+
1971+ It is requested, but not required, that you contact the authors of
1972+ the Document well before redistributing any large number of
1973+ copies, to give them a chance to provide you with an updated
1974+ version of the Document.
1975+
1976+ 4. MODIFICATIONS
1977+
1978+ You may copy and distribute a Modified Version of the Document
1979+ under the conditions of sections 2 and 3 above, provided that you
1980+ release the Modified Version under precisely this License, with
1981+ the Modified Version filling the role of the Document, thus
1982+ licensing distribution and modification of the Modified Version to
1983+ whoever possesses a copy of it. In addition, you must do these
1984+ things in the Modified Version:
1985+
1986+ A. Use in the Title Page (and on the covers, if any) a title
1987+ distinct from that of the Document, and from those of
1988+ previous versions (which should, if there were any, be listed
1989+ in the History section of the Document). You may use the
1990+ same title as a previous version if the original publisher of
1991+ that version gives permission.
1992+
1993+ B. List on the Title Page, as authors, one or more persons or
1994+ entities responsible for authorship of the modifications in
1995+ the Modified Version, together with at least five of the
1996+ principal authors of the Document (all of its principal
1997+ authors, if it has fewer than five), unless they release you
1998+ from this requirement.
1999+
2000+ C. State on the Title page the name of the publisher of the
2001+ Modified Version, as the publisher.
2002+
2003+ D. Preserve all the copyright notices of the Document.
2004+
2005+ E. Add an appropriate copyright notice for your modifications
2006+ adjacent to the other copyright notices.
2007+
2008+ F. Include, immediately after the copyright notices, a license
2009+ notice giving the public permission to use the Modified
2010+ Version under the terms of this License, in the form shown in
2011+ the Addendum below.
2012+
2013+ G. Preserve in that license notice the full lists of Invariant
2014+ Sections and required Cover Texts given in the Document's
2015+ license notice.
2016+
2017+ H. Include an unaltered copy of this License.
2018+
2019+ I. Preserve the section Entitled "History", Preserve its Title,
2020+ and add to it an item stating at least the title, year, new
2021+ authors, and publisher of the Modified Version as given on
2022+ the Title Page. If there is no section Entitled "History" in
2023+ the Document, create one stating the title, year, authors,
2024+ and publisher of the Document as given on its Title Page,
2025+ then add an item describing the Modified Version as stated in
2026+ the previous sentence.
2027+
2028+ J. Preserve the network location, if any, given in the Document
2029+ for public access to a Transparent copy of the Document, and
2030+ likewise the network locations given in the Document for
2031+ previous versions it was based on. These may be placed in
2032+ the "History" section. You may omit a network location for a
2033+ work that was published at least four years before the
2034+ Document itself, or if the original publisher of the version
2035+ it refers to gives permission.
2036+
2037+ K. For any section Entitled "Acknowledgements" or "Dedications",
2038+ Preserve the Title of the section, and preserve in the
2039+ section all the substance and tone of each of the contributor
2040+ acknowledgements and/or dedications given therein.
2041+
2042+ L. Preserve all the Invariant Sections of the Document,
2043+ unaltered in their text and in their titles. Section numbers
2044+ or the equivalent are not considered part of the section
2045+ titles.
2046+
2047+ M. Delete any section Entitled "Endorsements". Such a section
2048+ may not be included in the Modified Version.
2049+
2050+ N. Do not retitle any existing section to be Entitled
2051+ "Endorsements" or to conflict in title with any Invariant
2052+ Section.
2053+
2054+ O. Preserve any Warranty Disclaimers.
2055+
2056+ If the Modified Version includes new front-matter sections or
2057+ appendices that qualify as Secondary Sections and contain no
2058+ material copied from the Document, you may at your option
2059+ designate some or all of these sections as invariant. To do this,
2060+ add their titles to the list of Invariant Sections in the Modified
2061+ Version's license notice. These titles must be distinct from any
2062+ other section titles.
2063+
2064+ You may add a section Entitled "Endorsements", provided it contains
2065+ nothing but endorsements of your Modified Version by various
2066+ parties--for example, statements of peer review or that the text
2067+ has been approved by an organization as the authoritative
2068+ definition of a standard.
2069+
2070+ You may add a passage of up to five words as a Front-Cover Text,
2071+ and a passage of up to 25 words as a Back-Cover Text, to the end
2072+ of the list of Cover Texts in the Modified Version. Only one
2073+ passage of Front-Cover Text and one of Back-Cover Text may be
2074+ added by (or through arrangements made by) any one entity. If the
2075+ Document already includes a cover text for the same cover,
2076+ previously added by you or by arrangement made by the same entity
2077+ you are acting on behalf of, you may not add another; but you may
2078+ replace the old one, on explicit permission from the previous
2079+ publisher that added the old one.
2080+
2081+ The author(s) and publisher(s) of the Document do not by this
2082+ License give permission to use their names for publicity for or to
2083+ assert or imply endorsement of any Modified Version.
2084+
2085+ 5. COMBINING DOCUMENTS
2086+
2087+ You may combine the Document with other documents released under
2088+ this License, under the terms defined in section 4 above for
2089+ modified versions, provided that you include in the combination
2090+ all of the Invariant Sections of all of the original documents,
2091+ unmodified, and list them all as Invariant Sections of your
2092+ combined work in its license notice, and that you preserve all
2093+ their Warranty Disclaimers.
2094+
2095+ The combined work need only contain one copy of this License, and
2096+ multiple identical Invariant Sections may be replaced with a single
2097+ copy. If there are multiple Invariant Sections with the same name
2098+ but different contents, make the title of each such section unique
2099+ by adding at the end of it, in parentheses, the name of the
2100+ original author or publisher of that section if known, or else a
2101+ unique number. Make the same adjustment to the section titles in
2102+ the list of Invariant Sections in the license notice of the
2103+ combined work.
2104+
2105+ In the combination, you must combine any sections Entitled
2106+ "History" in the various original documents, forming one section
2107+ Entitled "History"; likewise combine any sections Entitled
2108+ "Acknowledgements", and any sections Entitled "Dedications". You
2109+ must delete all sections Entitled "Endorsements."
2110+
2111+ 6. COLLECTIONS OF DOCUMENTS
2112+
2113+ You may make a collection consisting of the Document and other
2114+ documents released under this License, and replace the individual
2115+ copies of this License in the various documents with a single copy
2116+ that is included in the collection, provided that you follow the
2117+ rules of this License for verbatim copying of each of the
2118+ documents in all other respects.
2119+
2120+ You may extract a single document from such a collection, and
2121+ distribute it individually under this License, provided you insert
2122+ a copy of this License into the extracted document, and follow
2123+ this License in all other respects regarding verbatim copying of
2124+ that document.
2125+
2126+ 7. AGGREGATION WITH INDEPENDENT WORKS
2127+
2128+ A compilation of the Document or its derivatives with other
2129+ separate and independent documents or works, in or on a volume of
2130+ a storage or distribution medium, is called an "aggregate" if the
2131+ copyright resulting from the compilation is not used to limit the
2132+ legal rights of the compilation's users beyond what the individual
2133+ works permit. When the Document is included an aggregate, this
2134+ License does not apply to the other works in the aggregate which
2135+ are not themselves derivative works of the Document.
2136+
2137+ If the Cover Text requirement of section 3 is applicable to these
2138+ copies of the Document, then if the Document is less than one half
2139+ of the entire aggregate, the Document's Cover Texts may be placed
2140+ on covers that bracket the Document within the aggregate, or the
2141+ electronic equivalent of covers if the Document is in electronic
2142+ form. Otherwise they must appear on printed covers that bracket
2143+ the whole aggregate.
2144+
2145+ 8. TRANSLATION
2146+
2147+ Translation is considered a kind of modification, so you may
2148+ distribute translations of the Document under the terms of section
2149+ 4. Replacing Invariant Sections with translations requires special
2150+ permission from their copyright holders, but you may include
2151+ translations of some or all Invariant Sections in addition to the
2152+ original versions of these Invariant Sections. You may include a
2153+ translation of this License, and all the license notices in the
2154+ Document, and any Warrany Disclaimers, provided that you also
2155+ include the original English version of this License and the
2156+ original versions of those notices and disclaimers. In case of a
2157+ disagreement between the translation and the original version of
2158+ this License or a notice or disclaimer, the original version will
2159+ prevail.
2160+
2161+ If a section in the Document is Entitled "Acknowledgements",
2162+ "Dedications", or "History", the requirement (section 4) to
2163+ Preserve its Title (section 1) will typically require changing the
2164+ actual title.
2165+
2166+ 9. TERMINATION
2167+
2168+ You may not copy, modify, sublicense, or distribute the Document
2169+ except as expressly provided for under this License. Any other
2170+ attempt to copy, modify, sublicense or distribute the Document is
2171+ void, and will automatically terminate your rights under this
2172+ License. However, parties who have received copies, or rights,
2173+ from you under this License will not have their licenses
2174+ terminated so long as such parties remain in full compliance.
2175+
2176+ 10. FUTURE REVISIONS OF THIS LICENSE
2177+
2178+ The Free Software Foundation may publish new, revised versions of
2179+ the GNU Free Documentation License from time to time. Such new
2180+ versions will be similar in spirit to the present version, but may
2181+ differ in detail to address new problems or concerns. See
2182+ `http://www.gnu.org/copyleft/'

Part of diff was cut off due to size limit. Use your local client to view the full diff.