| Revision | 364df43e42395cfbb3b8a1b88d71fd0d3bb67b55 (tree) |
|---|---|
| Time | 2011-03-06 15:44:35 |
| Author | nobody <nobody@exam...> |
| Commiter | nobody |
オリジナルファイルも管理下に置く。
| @@ -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 |
| @@ -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. |
| @@ -0,0 +1,4 @@ | ||
| 1 | +2004-01-16 Henrik Sandklef <hesa@laphroaig> | |
| 2 | + | |
| 3 | + * pics/dia_gen.sh: added convertion to jpg | |
| 4 | + |
| @@ -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 | + |
| @@ -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: |
| @@ -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 | + |
| @@ -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' |
| @@ -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 | + |
| @@ -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 |
| @@ -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 |
| @@ -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 = |
| @@ -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> </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> </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> </td><td align="left" valign="top"></td></tr> | |
| 58 | +<tr><td align="left" valign="top"><a href="#Installation">4. Installation</a></td><td> </td><td align="left" valign="top"></td></tr> | |
| 59 | +<tr><td align="left" valign="top"><a href="#Examples">5. Examples</a></td><td> </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> </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> </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> </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> </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> </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> </td><td align="left" valign="top"></td></tr> | |
| 71 | +<tr><td align="left" valign="top"><a href="#Index">B. Index</a></td><td> </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"> < </a>]</td> | |
| 80 | +<td valign="middle" align="left">[<a href="#Summary-1" title="Next section in reading order"> > </a>]</td> | |
| 81 | +<td valign="middle" align="left"> </td> | |
| 82 | +<td valign="middle" align="left">[ << ]</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"> >> </a>]</td> | |
| 85 | +<td valign="middle" align="left"> </td> | |
| 86 | +<td valign="middle" align="left"> </td> | |
| 87 | +<td valign="middle" align="left"> </td> | |
| 88 | +<td valign="middle" align="left"> </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"> < </a>]</td> | |
| 101 | +<td valign="middle" align="left">[<a href="#Xnee-features" title="Next section in reading order"> > </a>]</td> | |
| 102 | +<td valign="middle" align="left"> </td> | |
| 103 | +<td valign="middle" align="left">[<a href="#Summary" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 106 | +<td valign="middle" align="left"> </td> | |
| 107 | +<td valign="middle" align="left"> </td> | |
| 108 | +<td valign="middle" align="left"> </td> | |
| 109 | +<td valign="middle" align="left"> </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"> < </a>]</td> | |
| 137 | +<td valign="middle" align="left">[<a href="#Background" title="Next section in reading order"> > </a>]</td> | |
| 138 | +<td valign="middle" align="left"> </td> | |
| 139 | +<td valign="middle" align="left">[<a href="#Summary" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 142 | +<td valign="middle" align="left"> </td> | |
| 143 | +<td valign="middle" align="left"> </td> | |
| 144 | +<td valign="middle" align="left"> </td> | |
| 145 | +<td valign="middle" align="left"> </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"> < </a>]</td> | |
| 192 | +<td valign="middle" align="left">[<a href="#Getting-started" title="Next section in reading order"> > </a>]</td> | |
| 193 | +<td valign="middle" align="left"> </td> | |
| 194 | +<td valign="middle" align="left">[<a href="#Summary" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 197 | +<td valign="middle" align="left"> </td> | |
| 198 | +<td valign="middle" align="left"> </td> | |
| 199 | +<td valign="middle" align="left"> </td> | |
| 200 | +<td valign="middle" align="left"> </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’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"> < </a>]</td> | |
| 237 | +<td valign="middle" align="left">[<a href="#Getting-started-1" title="Next section in reading order"> > </a>]</td> | |
| 238 | +<td valign="middle" align="left"> </td> | |
| 239 | +<td valign="middle" align="left">[<a href="#Summary" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 242 | +<td valign="middle" align="left"> </td> | |
| 243 | +<td valign="middle" align="left"> </td> | |
| 244 | +<td valign="middle" align="left"> </td> | |
| 245 | +<td valign="middle" align="left"> </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"> < </a>]</td> | |
| 258 | +<td valign="middle" align="left">[<a href="#Simple-replay" title="Next section in reading order"> > </a>]</td> | |
| 259 | +<td valign="middle" align="left"> </td> | |
| 260 | +<td valign="middle" align="left">[<a href="#Getting-started" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 263 | +<td valign="middle" align="left"> </td> | |
| 264 | +<td valign="middle" align="left"> </td> | |
| 265 | +<td valign="middle" align="left"> </td> | |
| 266 | +<td valign="middle" align="left"> </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"> < </a>]</td> | |
| 280 | +<td valign="middle" align="left">[<a href="#Simple-recording-of-Key-presses" title="Next section in reading order"> > </a>]</td> | |
| 281 | +<td valign="middle" align="left"> </td> | |
| 282 | +<td valign="middle" align="left">[<a href="#Getting-started" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 285 | +<td valign="middle" align="left"> </td> | |
| 286 | +<td valign="middle" align="left"> </td> | |
| 287 | +<td valign="middle" align="left"> </td> | |
| 288 | +<td valign="middle" align="left"> </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> </td><td><pre class="example"> <code>cnee --replay --file example1.xnr &</code> | |
| 297 | +</pre></td></tr></table> | |
| 298 | +<p>....dont forget ’&’. | |
| 299 | +The file example1.xnr contains keyboard events recorded during | |
| 300 | +development of this manual. When replayed you’ll see what was typed and of | |
| 301 | +course more important you’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"> < </a>]</td> | |
| 308 | +<td valign="middle" align="left">[<a href="#Simple-replaying-of-your-recorded-file-1" title="Next section in reading order"> > </a>]</td> | |
| 309 | +<td valign="middle" align="left"> </td> | |
| 310 | +<td valign="middle" align="left">[<a href="#Getting-started" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 313 | +<td valign="middle" align="left"> </td> | |
| 314 | +<td valign="middle" align="left"> </td> | |
| 315 | +<td valign="middle" align="left"> </td> | |
| 316 | +<td valign="middle" align="left"> </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> </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"> < </a>]</td> | |
| 341 | +<td valign="middle" align="left">[<a href="#Simple-recording-of-mouse-motions" title="Next section in reading order"> > </a>]</td> | |
| 342 | +<td valign="middle" align="left"> </td> | |
| 343 | +<td valign="middle" align="left">[<a href="#Getting-started" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 346 | +<td valign="middle" align="left"> </td> | |
| 347 | +<td valign="middle" align="left"> </td> | |
| 348 | +<td valign="middle" align="left"> </td> | |
| 349 | +<td valign="middle" align="left"> </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> </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"> < </a>]</td> | |
| 370 | +<td valign="middle" align="left">[<a href="#Simple-replaying-of-your-recorded-file" title="Next section in reading order"> > </a>]</td> | |
| 371 | +<td valign="middle" align="left"> </td> | |
| 372 | +<td valign="middle" align="left">[<a href="#Getting-started" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 375 | +<td valign="middle" align="left"> </td> | |
| 376 | +<td valign="middle" align="left"> </td> | |
| 377 | +<td valign="middle" align="left"> </td> | |
| 378 | +<td valign="middle" align="left"> </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> </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"> < </a>]</td> | |
| 397 | +<td valign="middle" align="left">[<a href="#Simple-retyping-of-a-text-file" title="Next section in reading order"> > </a>]</td> | |
| 398 | +<td valign="middle" align="left"> </td> | |
| 399 | +<td valign="middle" align="left">[<a href="#Getting-started" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 402 | +<td valign="middle" align="left"> </td> | |
| 403 | +<td valign="middle" align="left"> </td> | |
| 404 | +<td valign="middle" align="left"> </td> | |
| 405 | +<td valign="middle" align="left"> </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> </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"> < </a>]</td> | |
| 423 | +<td valign="middle" align="left">[<a href="#Example-Xnee-Session-files" title="Next section in reading order"> > </a>]</td> | |
| 424 | +<td valign="middle" align="left"> </td> | |
| 425 | +<td valign="middle" align="left">[<a href="#Getting-started" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 428 | +<td valign="middle" align="left"> </td> | |
| 429 | +<td valign="middle" align="left"> </td> | |
| 430 | +<td valign="middle" align="left"> </td> | |
| 431 | +<td valign="middle" align="left"> </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> </td><td><pre class="example"> <code>echo "ls -l" > ./mytext.txt</code> | |
| 442 | +</pre></td></tr></table> | |
| 443 | +<p>And after that you start Xnee. | |
| 444 | +</p><table><tr><td> </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"> < </a>]</td> | |
| 453 | +<td valign="middle" align="left">[<a href="#Functional-overview" title="Next section in reading order"> > </a>]</td> | |
| 454 | +<td valign="middle" align="left"> </td> | |
| 455 | +<td valign="middle" align="left">[<a href="#Getting-started" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 458 | +<td valign="middle" align="left"> </td> | |
| 459 | +<td valign="middle" align="left"> </td> | |
| 460 | +<td valign="middle" align="left"> </td> | |
| 461 | +<td valign="middle" align="left"> </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"> < </a>]</td> | |
| 505 | +<td valign="middle" align="left">[<a href="#Functional-overview-1" title="Next section in reading order"> > </a>]</td> | |
| 506 | +<td valign="middle" align="left"> </td> | |
| 507 | +<td valign="middle" align="left">[<a href="#Getting-started" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 510 | +<td valign="middle" align="left"> </td> | |
| 511 | +<td valign="middle" align="left"> </td> | |
| 512 | +<td valign="middle" align="left"> </td> | |
| 513 | +<td valign="middle" align="left"> </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"> < </a>]</td> | |
| 526 | +<td valign="middle" align="left">[<a href="#Modes" title="Next section in reading order"> > </a>]</td> | |
| 527 | +<td valign="middle" align="left"> </td> | |
| 528 | +<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 531 | +<td valign="middle" align="left"> </td> | |
| 532 | +<td valign="middle" align="left"> </td> | |
| 533 | +<td valign="middle" align="left"> </td> | |
| 534 | +<td valign="middle" align="left"> </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"> < </a>]</td> | |
| 565 | +<td valign="middle" align="left">[<a href="#Record" title="Next section in reading order"> > </a>]</td> | |
| 566 | +<td valign="middle" align="left"> </td> | |
| 567 | +<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 570 | +<td valign="middle" align="left"> </td> | |
| 571 | +<td valign="middle" align="left"> </td> | |
| 572 | +<td valign="middle" align="left"> </td> | |
| 573 | +<td valign="middle" align="left"> </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"> < </a>]</td> | |
| 595 | +<td valign="middle" align="left">[<a href="#Replay" title="Next section in reading order"> > </a>]</td> | |
| 596 | +<td valign="middle" align="left"> </td> | |
| 597 | +<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 600 | +<td valign="middle" align="left"> </td> | |
| 601 | +<td valign="middle" align="left"> </td> | |
| 602 | +<td valign="middle" align="left"> </td> | |
| 603 | +<td valign="middle" align="left"> </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"> < </a>]</td> | |
| 624 | +<td valign="middle" align="left">[<a href="#Retype" title="Next section in reading order"> > </a>]</td> | |
| 625 | +<td valign="middle" align="left"> </td> | |
| 626 | +<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 629 | +<td valign="middle" align="left"> </td> | |
| 630 | +<td valign="middle" align="left"> </td> | |
| 631 | +<td valign="middle" align="left"> </td> | |
| 632 | +<td valign="middle" align="left"> </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"> < </a>]</td> | |
| 653 | +<td valign="middle" align="left">[<a href="#Distribution" title="Next section in reading order"> > </a>]</td> | |
| 654 | +<td valign="middle" align="left"> </td> | |
| 655 | +<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 658 | +<td valign="middle" align="left"> </td> | |
| 659 | +<td valign="middle" align="left"> </td> | |
| 660 | +<td valign="middle" align="left"> </td> | |
| 661 | +<td valign="middle" align="left"> </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"> < </a>]</td> | |
| 678 | +<td valign="middle" align="left">[<a href="#Ranges" title="Next section in reading order"> > </a>]</td> | |
| 679 | +<td valign="middle" align="left"> </td> | |
| 680 | +<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 683 | +<td valign="middle" align="left"> </td> | |
| 684 | +<td valign="middle" align="left"> </td> | |
| 685 | +<td valign="middle" align="left"> </td> | |
| 686 | +<td valign="middle" align="left"> </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"> < </a>]</td> | |
| 702 | +<td valign="middle" align="left">[<a href="#First-and-last-motion-event" title="Next section in reading order"> > </a>]</td> | |
| 703 | +<td valign="middle" align="left"> </td> | |
| 704 | +<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 707 | +<td valign="middle" align="left"> </td> | |
| 708 | +<td valign="middle" align="left"> </td> | |
| 709 | +<td valign="middle" align="left"> </td> | |
| 710 | +<td valign="middle" align="left"> </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 "X Record Extension Library" or the | |
| 738 | +"Record Extension Protocol Specification". | |
| 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"> < </a>]</td> | |
| 745 | +<td valign="middle" align="left">[<a href="#Delay" title="Next section in reading order"> > </a>]</td> | |
| 746 | +<td valign="middle" align="left"> </td> | |
| 747 | +<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 750 | +<td valign="middle" align="left"> </td> | |
| 751 | +<td valign="middle" align="left"> </td> | |
| 752 | +<td valign="middle" align="left"> </td> | |
| 753 | +<td valign="middle" align="left"> </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"> < </a>]</td> | |
| 769 | +<td valign="middle" align="left">[<a href="#Verbose" title="Next section in reading order"> > </a>]</td> | |
| 770 | +<td valign="middle" align="left"> </td> | |
| 771 | +<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 774 | +<td valign="middle" align="left"> </td> | |
| 775 | +<td valign="middle" align="left"> </td> | |
| 776 | +<td valign="middle" align="left"> </td> | |
| 777 | +<td valign="middle" align="left"> </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 <secs></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"> < </a>]</td> | |
| 795 | +<td valign="middle" align="left">[<a href="#Human-printouts" title="Next section in reading order"> > </a>]</td> | |
| 796 | +<td valign="middle" align="left"> </td> | |
| 797 | +<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 800 | +<td valign="middle" align="left"> </td> | |
| 801 | +<td valign="middle" align="left"> </td> | |
| 802 | +<td valign="middle" align="left"> </td> | |
| 803 | +<td valign="middle" align="left"> </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’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"> < </a>]</td> | |
| 817 | +<td valign="middle" align="left">[<a href="#Invoking-Xnee" title="Next section in reading order"> > </a>]</td> | |
| 818 | +<td valign="middle" align="left"> </td> | |
| 819 | +<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 822 | +<td valign="middle" align="left"> </td> | |
| 823 | +<td valign="middle" align="left"> </td> | |
| 824 | +<td valign="middle" align="left"> </td> | |
| 825 | +<td valign="middle" align="left"> </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’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"> < </a>]</td> | |
| 843 | +<td valign="middle" align="left">[<a href="#Command-line-syntax" title="Next section in reading order"> > </a>]</td> | |
| 844 | +<td valign="middle" align="left"> </td> | |
| 845 | +<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 848 | +<td valign="middle" align="left"> </td> | |
| 849 | +<td valign="middle" align="left"> </td> | |
| 850 | +<td valign="middle" align="left"> </td> | |
| 851 | +<td valign="middle" align="left"> </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"> < </a>]</td> | |
| 863 | +<td valign="middle" align="left">[<a href="#Project-file-1" title="Next section in reading order"> > </a>]</td> | |
| 864 | +<td valign="middle" align="left"> </td> | |
| 865 | +<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 868 | +<td valign="middle" align="left"> </td> | |
| 869 | +<td valign="middle" align="left"> </td> | |
| 870 | +<td valign="middle" align="left"> </td> | |
| 871 | +<td valign="middle" align="left"> </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’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"> < </a>]</td> | |
| 885 | +<td valign="middle" align="left">[<a href="#Session-file" title="Next section in reading order"> > </a>]</td> | |
| 886 | +<td valign="middle" align="left"> </td> | |
| 887 | +<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 890 | +<td valign="middle" align="left"> </td> | |
| 891 | +<td valign="middle" align="left"> </td> | |
| 892 | +<td valign="middle" align="left"> </td> | |
| 893 | +<td valign="middle" align="left"> </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"> < </a>]</td> | |
| 906 | +<td valign="middle" align="left">[<a href="#Interupting-Xnee" title="Next section in reading order"> > </a>]</td> | |
| 907 | +<td valign="middle" align="left"> </td> | |
| 908 | +<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 911 | +<td valign="middle" align="left"> </td> | |
| 912 | +<td valign="middle" align="left"> </td> | |
| 913 | +<td valign="middle" align="left"> </td> | |
| 914 | +<td valign="middle" align="left"> </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"> < </a>]</td> | |
| 929 | +<td valign="middle" align="left">[<a href="#modifier-and-key" title="Next section in reading order"> > </a>]</td> | |
| 930 | +<td valign="middle" align="left"> </td> | |
| 931 | +<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 934 | +<td valign="middle" align="left"> </td> | |
| 935 | +<td valign="middle" align="left"> </td> | |
| 936 | +<td valign="middle" align="left"> </td> | |
| 937 | +<td valign="middle" align="left"> </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"> < </a>]</td> | |
| 958 | +<td valign="middle" align="left">[<a href="#limit-the-number-of-data-to-record" title="Next section in reading order"> > </a>]</td> | |
| 959 | +<td valign="middle" align="left"> </td> | |
| 960 | +<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 963 | +<td valign="middle" align="left"> </td> | |
| 964 | +<td valign="middle" align="left"> </td> | |
| 965 | +<td valign="middle" align="left"> </td> | |
| 966 | +<td valign="middle" align="left"> </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 ’a’) | |
| 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"> < </a>]</td> | |
| 985 | +<td valign="middle" align="left">[<a href="#sending-a-SIGTERM-signal" title="Next section in reading order"> > </a>]</td> | |
| 986 | +<td valign="middle" align="left"> </td> | |
| 987 | +<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 990 | +<td valign="middle" align="left"> </td> | |
| 991 | +<td valign="middle" align="left"> </td> | |
| 992 | +<td valign="middle" align="left"> </td> | |
| 993 | +<td valign="middle" align="left"> </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"> < </a>]</td> | |
| 1008 | +<td valign="middle" align="left">[<a href="#Stop-Xnee-with-key-combination" title="Next section in reading order"> > </a>]</td> | |
| 1009 | +<td valign="middle" align="left"> </td> | |
| 1010 | +<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 1013 | +<td valign="middle" align="left"> </td> | |
| 1014 | +<td valign="middle" align="left"> </td> | |
| 1015 | +<td valign="middle" align="left"> </td> | |
| 1016 | +<td valign="middle" align="left"> </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’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"> < </a>]</td> | |
| 1038 | +<td valign="middle" align="left">[<a href="#Pause-Xnee-with-key-combination" title="Next section in reading order"> > </a>]</td> | |
| 1039 | +<td valign="middle" align="left"> </td> | |
| 1040 | +<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 1043 | +<td valign="middle" align="left"> </td> | |
| 1044 | +<td valign="middle" align="left"> </td> | |
| 1045 | +<td valign="middle" align="left"> </td> | |
| 1046 | +<td valign="middle" align="left"> </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"> < </a>]</td> | |
| 1061 | +<td valign="middle" align="left">[<a href="#Pause-Xnee-with-key-combination-1" title="Next section in reading order"> > </a>]</td> | |
| 1062 | +<td valign="middle" align="left"> </td> | |
| 1063 | +<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 1066 | +<td valign="middle" align="left"> </td> | |
| 1067 | +<td valign="middle" align="left"> </td> | |
| 1068 | +<td valign="middle" align="left"> </td> | |
| 1069 | +<td valign="middle" align="left"> </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"> < </a>]</td> | |
| 1085 | +<td valign="middle" align="left">[<a href="#Insert-marks-Xnee-with-key-combination" title="Next section in reading order"> > </a>]</td> | |
| 1086 | +<td valign="middle" align="left"> </td> | |
| 1087 | +<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 1090 | +<td valign="middle" align="left"> </td> | |
| 1091 | +<td valign="middle" align="left"> </td> | |
| 1092 | +<td valign="middle" align="left"> </td> | |
| 1093 | +<td valign="middle" align="left"> </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"> < </a>]</td> | |
| 1109 | +<td valign="middle" align="left">[<a href="#Limit-number-of-data-to-record" title="Next section in reading order"> > </a>]</td> | |
| 1110 | +<td valign="middle" align="left"> </td> | |
| 1111 | +<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 1114 | +<td valign="middle" align="left"> </td> | |
| 1115 | +<td valign="middle" align="left"> </td> | |
| 1116 | +<td valign="middle" align="left"> </td> | |
| 1117 | +<td valign="middle" align="left"> </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"> < </a>]</td> | |
| 1136 | +<td valign="middle" align="left">[<a href="#Limit-the-events-to-record" title="Next section in reading order"> > </a>]</td> | |
| 1137 | +<td valign="middle" align="left"> </td> | |
| 1138 | +<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 1141 | +<td valign="middle" align="left"> </td> | |
| 1142 | +<td valign="middle" align="left"> </td> | |
| 1143 | +<td valign="middle" align="left"> </td> | |
| 1144 | +<td valign="middle" align="left"> </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"> < </a>]</td> | |
| 1165 | +<td valign="middle" align="left">[<a href="#Limit-the-data-to-record" title="Next section in reading order"> > </a>]</td> | |
| 1166 | +<td valign="middle" align="left"> </td> | |
| 1167 | +<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 1170 | +<td valign="middle" align="left"> </td> | |
| 1171 | +<td valign="middle" align="left"> </td> | |
| 1172 | +<td valign="middle" align="left"> </td> | |
| 1173 | +<td valign="middle" align="left"> </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"> < </a>]</td> | |
| 1189 | +<td valign="middle" align="left">[<a href="#Limit-the-time-to-record" title="Next section in reading order"> > </a>]</td> | |
| 1190 | +<td valign="middle" align="left"> </td> | |
| 1191 | +<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 1194 | +<td valign="middle" align="left"> </td> | |
| 1195 | +<td valign="middle" align="left"> </td> | |
| 1196 | +<td valign="middle" align="left"> </td> | |
| 1197 | +<td valign="middle" align="left"> </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"> < </a>]</td> | |
| 1213 | +<td valign="middle" align="left">[<a href="#Send-SIGTERM-to-Xnee" title="Next section in reading order"> > </a>]</td> | |
| 1214 | +<td valign="middle" align="left"> </td> | |
| 1215 | +<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 1218 | +<td valign="middle" align="left"> </td> | |
| 1219 | +<td valign="middle" align="left"> </td> | |
| 1220 | +<td valign="middle" align="left"> </td> | |
| 1221 | +<td valign="middle" align="left"> </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"> < </a>]</td> | |
| 1237 | +<td valign="middle" align="left">[<a href="#Xnee-plugins" title="Next section in reading order"> > </a>]</td> | |
| 1238 | +<td valign="middle" align="left"> </td> | |
| 1239 | +<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 1242 | +<td valign="middle" align="left"> </td> | |
| 1243 | +<td valign="middle" align="left"> </td> | |
| 1244 | +<td valign="middle" align="left"> </td> | |
| 1245 | +<td valign="middle" align="left"> </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’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"> < </a>]</td> | |
| 1266 | +<td valign="middle" align="left">[<a href="#Installation" title="Next section in reading order"> > </a>]</td> | |
| 1267 | +<td valign="middle" align="left"> </td> | |
| 1268 | +<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 1271 | +<td valign="middle" align="left"> </td> | |
| 1272 | +<td valign="middle" align="left"> </td> | |
| 1273 | +<td valign="middle" align="left"> </td> | |
| 1274 | +<td valign="middle" align="left"> </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"> < </a>]</td> | |
| 1293 | +<td valign="middle" align="left">[<a href="#Installation-from-source-with-the-configure-script" title="Next section in reading order"> > </a>]</td> | |
| 1294 | +<td valign="middle" align="left"> </td> | |
| 1295 | +<td valign="middle" align="left">[<a href="#Functional-overview" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 1298 | +<td valign="middle" align="left"> </td> | |
| 1299 | +<td valign="middle" align="left"> </td> | |
| 1300 | +<td valign="middle" align="left"> </td> | |
| 1301 | +<td valign="middle" align="left"> </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"> < </a>]</td> | |
| 1314 | +<td valign="middle" align="left">[<a href="#Installation-from-source-with-default-Makefile" title="Next section in reading order"> > </a>]</td> | |
| 1315 | +<td valign="middle" align="left"> </td> | |
| 1316 | +<td valign="middle" align="left">[<a href="#Installation" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 1319 | +<td valign="middle" align="left"> </td> | |
| 1320 | +<td valign="middle" align="left"> </td> | |
| 1321 | +<td valign="middle" align="left"> </td> | |
| 1322 | +<td valign="middle" align="left"> </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> </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> </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> </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> </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> </td><td><pre class="example"><code>./configure --prefix=<PATH TO INSTALLATION DIR></code> | |
| 1358 | +</pre></td></tr></table> | |
| 1359 | + | |
| 1360 | +<br> | |
| 1361 | +<p>Build Xnee | |
| 1362 | +</p><table><tr><td> </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> </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"> < </a>]</td> | |
| 1375 | +<td valign="middle" align="left">[<a href="#Installation-from-CVS" title="Next section in reading order"> > </a>]</td> | |
| 1376 | +<td valign="middle" align="left"> </td> | |
| 1377 | +<td valign="middle" align="left">[<a href="#Installation" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 1380 | +<td valign="middle" align="left"> </td> | |
| 1381 | +<td valign="middle" align="left"> </td> | |
| 1382 | +<td valign="middle" align="left"> </td> | |
| 1383 | +<td valign="middle" align="left"> </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> </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> </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> </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> </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> </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"> < </a>]</td> | |
| 1422 | +<td valign="middle" align="left">[<a href="#Examples" title="Next section in reading order"> > </a>]</td> | |
| 1423 | +<td valign="middle" align="left"> </td> | |
| 1424 | +<td valign="middle" align="left">[<a href="#Installation" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 1427 | +<td valign="middle" align="left"> </td> | |
| 1428 | +<td valign="middle" align="left"> </td> | |
| 1429 | +<td valign="middle" align="left"> </td> | |
| 1430 | +<td valign="middle" align="left"> </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> </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> </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"> < </a>]</td> | |
| 1467 | +<td valign="middle" align="left">[<a href="#Recorder" title="Next section in reading order"> > </a>]</td> | |
| 1468 | +<td valign="middle" align="left"> </td> | |
| 1469 | +<td valign="middle" align="left">[<a href="#Installation" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 1472 | +<td valign="middle" align="left"> </td> | |
| 1473 | +<td valign="middle" align="left"> </td> | |
| 1474 | +<td valign="middle" align="left"> </td> | |
| 1475 | +<td valign="middle" align="left"> </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"> < </a>]</td> | |
| 1488 | +<td valign="middle" align="left">[<a href="#Record-mouse-motions" title="Next section in reading order"> > </a>]</td> | |
| 1489 | +<td valign="middle" align="left"> </td> | |
| 1490 | +<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 1493 | +<td valign="middle" align="left"> </td> | |
| 1494 | +<td valign="middle" align="left"> </td> | |
| 1495 | +<td valign="middle" align="left"> </td> | |
| 1496 | +<td valign="middle" align="left"> </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"> < </a>]</td> | |
| 1509 | +<td valign="middle" align="left">[<a href="#Record-keyboard" title="Next section in reading order"> > </a>]</td> | |
| 1510 | +<td valign="middle" align="left"> </td> | |
| 1511 | +<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 1514 | +<td valign="middle" align="left"> </td> | |
| 1515 | +<td valign="middle" align="left"> </td> | |
| 1516 | +<td valign="middle" align="left"> </td> | |
| 1517 | +<td valign="middle" align="left"> </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> </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"> < </a>]</td> | |
| 1537 | +<td valign="middle" align="left">[<a href="#Record-keyboard-and-mouse" title="Next section in reading order"> > </a>]</td> | |
| 1538 | +<td valign="middle" align="left"> </td> | |
| 1539 | +<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 1542 | +<td valign="middle" align="left"> </td> | |
| 1543 | +<td valign="middle" align="left"> </td> | |
| 1544 | +<td valign="middle" align="left"> </td> | |
| 1545 | +<td valign="middle" align="left"> </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> </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"> < </a>]</td> | |
| 1565 | +<td valign="middle" align="left">[<a href="#Record-a-gnumeric-session" title="Next section in reading order"> > </a>]</td> | |
| 1566 | +<td valign="middle" align="left"> </td> | |
| 1567 | +<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 1570 | +<td valign="middle" align="left"> </td> | |
| 1571 | +<td valign="middle" align="left"> </td> | |
| 1572 | +<td valign="middle" align="left"> </td> | |
| 1573 | +<td valign="middle" align="left"> </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> </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"> < </a>]</td> | |
| 1595 | +<td valign="middle" align="left">[<a href="#Record-a-gnumeric-session-with-synchronisation-data" title="Next section in reading order"> > </a>]</td> | |
| 1596 | +<td valign="middle" align="left"> </td> | |
| 1597 | +<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 1600 | +<td valign="middle" align="left"> </td> | |
| 1601 | +<td valign="middle" align="left"> </td> | |
| 1602 | +<td valign="middle" align="left"> </td> | |
| 1603 | +<td valign="middle" align="left"> </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> </td><td><pre class="example"><code>xterm&</code> | |
| 1614 | +</pre></td></tr></table> | |
| 1615 | + | |
| 1616 | +<p>Start Xnee | |
| 1617 | +</p><table><tr><td> </td><td><pre class="example"> <code>cnee --record --keyboard --mouse --events-to-record 400 \</code> | |
| 1618 | + <code> --out-file gnumeric.xnl&</code> | |
| 1619 | +</pre></td></tr></table> | |
| 1620 | + | |
| 1621 | +<p>Start gnumeric | |
| 1622 | +</p><table><tr><td> </td><td><pre class="example"><code>gnumeric&</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"> < </a>]</td> | |
| 1633 | +<td valign="middle" align="left">[<a href="#Replayer" title="Next section in reading order"> > </a>]</td> | |
| 1634 | +<td valign="middle" align="left"> </td> | |
| 1635 | +<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 1638 | +<td valign="middle" align="left"> </td> | |
| 1639 | +<td valign="middle" align="left"> </td> | |
| 1640 | +<td valign="middle" align="left"> </td> | |
| 1641 | +<td valign="middle" align="left"> </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&</code> | |
| 1654 | +</p> | |
| 1655 | +<p>Start Xnee | |
| 1656 | +</p><table><tr><td> </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 &</code> | |
| 1659 | +</pre></td></tr></table> | |
| 1660 | + | |
| 1661 | +<br> | |
| 1662 | +<p>Start gnumeric | |
| 1663 | +<code>gnumeric&</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"> < </a>]</td> | |
| 1685 | +<td valign="middle" align="left">[<a href="#Replay-mouse-motions" title="Next section in reading order"> > </a>]</td> | |
| 1686 | +<td valign="middle" align="left"> </td> | |
| 1687 | +<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 1690 | +<td valign="middle" align="left"> </td> | |
| 1691 | +<td valign="middle" align="left"> </td> | |
| 1692 | +<td valign="middle" align="left"> </td> | |
| 1693 | +<td valign="middle" align="left"> </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"> < </a>]</td> | |
| 1705 | +<td valign="middle" align="left">[<a href="#Replay-mouse-motions-using-with-half-speed" title="Next section in reading order"> > </a>]</td> | |
| 1706 | +<td valign="middle" align="left"> </td> | |
| 1707 | +<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 1710 | +<td valign="middle" align="left"> </td> | |
| 1711 | +<td valign="middle" align="left"> </td> | |
| 1712 | +<td valign="middle" align="left"> </td> | |
| 1713 | +<td valign="middle" align="left"> </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> </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"> < </a>]</td> | |
| 1730 | +<td valign="middle" align="left">[<a href="#Replay-mouse-motions-using-with-double-speed" title="Next section in reading order"> > </a>]</td> | |
| 1731 | +<td valign="middle" align="left"> </td> | |
| 1732 | +<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 1735 | +<td valign="middle" align="left"> </td> | |
| 1736 | +<td valign="middle" align="left"> </td> | |
| 1737 | +<td valign="middle" align="left"> </td> | |
| 1738 | +<td valign="middle" align="left"> </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> </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"> < </a>]</td> | |
| 1757 | +<td valign="middle" align="left">[<a href="#Replay-keyboard-actions" title="Next section in reading order"> > </a>]</td> | |
| 1758 | +<td valign="middle" align="left"> </td> | |
| 1759 | +<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 1762 | +<td valign="middle" align="left"> </td> | |
| 1763 | +<td valign="middle" align="left"> </td> | |
| 1764 | +<td valign="middle" align="left"> </td> | |
| 1765 | +<td valign="middle" align="left"> </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> </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"> < </a>]</td> | |
| 1784 | +<td valign="middle" align="left">[<a href="#Replay-keyboard-and-mouse" title="Next section in reading order"> > </a>]</td> | |
| 1785 | +<td valign="middle" align="left"> </td> | |
| 1786 | +<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 1789 | +<td valign="middle" align="left"> </td> | |
| 1790 | +<td valign="middle" align="left"> </td> | |
| 1791 | +<td valign="middle" align="left"> </td> | |
| 1792 | +<td valign="middle" align="left"> </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> </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"> < </a>]</td> | |
| 1812 | +<td valign="middle" align="left">[<a href="#Replay-a-gnumeric-session" title="Next section in reading order"> > </a>]</td> | |
| 1813 | +<td valign="middle" align="left"> </td> | |
| 1814 | +<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 1817 | +<td valign="middle" align="left"> </td> | |
| 1818 | +<td valign="middle" align="left"> </td> | |
| 1819 | +<td valign="middle" align="left"> </td> | |
| 1820 | +<td valign="middle" align="left"> </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> </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"> < </a>]</td> | |
| 1841 | +<td valign="middle" align="left">[<a href="#Replay-a-gnumeric-session-with-synchronisation-data" title="Next section in reading order"> > </a>]</td> | |
| 1842 | +<td valign="middle" align="left"> </td> | |
| 1843 | +<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 1846 | +<td valign="middle" align="left"> </td> | |
| 1847 | +<td valign="middle" align="left"> </td> | |
| 1848 | +<td valign="middle" align="left"> </td> | |
| 1849 | +<td valign="middle" align="left"> </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&</code> | |
| 1861 | +Start a new fresh gnumeric spreadsheet | |
| 1862 | +<code>gnumeric&</code> | |
| 1863 | +</p> | |
| 1864 | +<p>Start Xnee | |
| 1865 | +</p><table><tr><td> </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"> < </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"> > </a>]</td> | |
| 1879 | +<td valign="middle" align="left"> </td> | |
| 1880 | +<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 1883 | +<td valign="middle" align="left"> </td> | |
| 1884 | +<td valign="middle" align="left"> </td> | |
| 1885 | +<td valign="middle" align="left"> </td> | |
| 1886 | +<td valign="middle" align="left"> </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&</code> | |
| 1898 | +Start a new fresh gnumeric spreadsheet | |
| 1899 | +<code>gnumeric&</code> | |
| 1900 | +</p> | |
| 1901 | + | |
| 1902 | +<p>Start Xnee | |
| 1903 | +</p><table><tr><td> </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"> < </a>]</td> | |
| 1917 | +<td valign="middle" align="left">[<a href="#Retyper" title="Next section in reading order"> > </a>]</td> | |
| 1918 | +<td valign="middle" align="left"> </td> | |
| 1919 | +<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 1922 | +<td valign="middle" align="left"> </td> | |
| 1923 | +<td valign="middle" align="left"> </td> | |
| 1924 | +<td valign="middle" align="left"> </td> | |
| 1925 | +<td valign="middle" align="left"> </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&</code> | |
| 1937 | +Start a new fresh gnumeric spreadsheet | |
| 1938 | +<code>gnumeric&</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"> < </a>]</td> | |
| 1945 | +<td valign="middle" align="left">[<a href="#Retype-the-help-printout" title="Next section in reading order"> > </a>]</td> | |
| 1946 | +<td valign="middle" align="left"> </td> | |
| 1947 | +<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 1950 | +<td valign="middle" align="left"> </td> | |
| 1951 | +<td valign="middle" align="left"> </td> | |
| 1952 | +<td valign="middle" align="left"> </td> | |
| 1953 | +<td valign="middle" align="left"> </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"> < </a>]</td> | |
| 1965 | +<td valign="middle" align="left">[<a href="#Retype-a-file" title="Next section in reading order"> > </a>]</td> | |
| 1966 | +<td valign="middle" align="left"> </td> | |
| 1967 | +<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 1970 | +<td valign="middle" align="left"> </td> | |
| 1971 | +<td valign="middle" align="left"> </td> | |
| 1972 | +<td valign="middle" align="left"> </td> | |
| 1973 | +<td valign="middle" align="left"> </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> </td><td><pre class="example"><code>xterm &</code> | |
| 1986 | +</pre></td></tr></table> | |
| 1987 | +<table><tr><td> </td><td><pre class="example"><code>emacs &</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> </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"> < </a>]</td> | |
| 2001 | +<td valign="middle" align="left">[<a href="#Distributor" title="Next section in reading order"> > </a>]</td> | |
| 2002 | +<td valign="middle" align="left"> </td> | |
| 2003 | +<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 2006 | +<td valign="middle" align="left"> </td> | |
| 2007 | +<td valign="middle" align="left"> </td> | |
| 2008 | +<td valign="middle" align="left"> </td> | |
| 2009 | +<td valign="middle" align="left"> </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’t possible to retype all | |
| 2019 | +characters yet. This will be implemented as soon as possible. We’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> </td><td><pre class="example"><code>xterm &</code> | |
| 2024 | +</pre></td></tr></table> | |
| 2025 | +<p>Create a text file | |
| 2026 | +</p><table><tr><td> </td><td><pre class="example"><code>echo "Hi Xnee" > 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> </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> </td><td><pre class="example"><code>cat > 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"> < </a>]</td> | |
| 2047 | +<td valign="middle" align="left">[<a href="#Distribute-your-mouse-motions" title="Next section in reading order"> > </a>]</td> | |
| 2048 | +<td valign="middle" align="left"> </td> | |
| 2049 | +<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 2052 | +<td valign="middle" align="left"> </td> | |
| 2053 | +<td valign="middle" align="left"> </td> | |
| 2054 | +<td valign="middle" align="left"> </td> | |
| 2055 | +<td valign="middle" align="left"> </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"> < </a>]</td> | |
| 2069 | +<td valign="middle" align="left">[<a href="#Distribute-the-replaying-of-mouse-motions" title="Next section in reading order"> > </a>]</td> | |
| 2070 | +<td valign="middle" align="left"> </td> | |
| 2071 | +<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 2074 | +<td valign="middle" align="left"> </td> | |
| 2075 | +<td valign="middle" align="left"> </td> | |
| 2076 | +<td valign="middle" align="left"> </td> | |
| 2077 | +<td valign="middle" align="left"> </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> </td><td><pre class="example"><code>xterm &</code> | |
| 2090 | +</pre></td></tr></table> | |
| 2091 | +<p>Start xnee | |
| 2092 | +</p><table><tr><td> </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"> < </a>]</td> | |
| 2104 | +<td valign="middle" align="left">[<a href="#Distribute-the-retyping-of-a-file" title="Next section in reading order"> > </a>]</td> | |
| 2105 | +<td valign="middle" align="left"> </td> | |
| 2106 | +<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 2109 | +<td valign="middle" align="left"> </td> | |
| 2110 | +<td valign="middle" align="left"> </td> | |
| 2111 | +<td valign="middle" align="left"> </td> | |
| 2112 | +<td valign="middle" align="left"> </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> </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"> < </a>]</td> | |
| 2134 | +<td valign="middle" align="left">[<a href="#Key" title="Next section in reading order"> > </a>]</td> | |
| 2135 | +<td valign="middle" align="left"> </td> | |
| 2136 | +<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 2139 | +<td valign="middle" align="left"> </td> | |
| 2140 | +<td valign="middle" align="left"> </td> | |
| 2141 | +<td valign="middle" align="left"> </td> | |
| 2142 | +<td valign="middle" align="left"> </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> </td><td><pre class="example"><code>xterm &</code> | |
| 2156 | +</pre></td></tr></table> | |
| 2157 | +<p>Create a text file. | |
| 2158 | +</p><table><tr><td> </td><td><pre class="example"><code>echo "Hi again Xnee" > 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> </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> </td><td><pre class="example"><code>cat > 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"> < </a>]</td> | |
| 2185 | +<td valign="middle" align="left">[<a href="#Stop-Xnee-with-key" title="Next section in reading order"> > </a>]</td> | |
| 2186 | +<td valign="middle" align="left"> </td> | |
| 2187 | +<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 2190 | +<td valign="middle" align="left"> </td> | |
| 2191 | +<td valign="middle" align="left"> </td> | |
| 2192 | +<td valign="middle" align="left"> </td> | |
| 2193 | +<td valign="middle" align="left"> </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"> < </a>]</td> | |
| 2205 | +<td valign="middle" align="left">[<a href="#Pausing-and-resuming-Xnee-with-key" title="Next section in reading order"> > </a>]</td> | |
| 2206 | +<td valign="middle" align="left"> </td> | |
| 2207 | +<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 2210 | +<td valign="middle" align="left"> </td> | |
| 2211 | +<td valign="middle" align="left"> </td> | |
| 2212 | +<td valign="middle" align="left"> </td> | |
| 2213 | +<td valign="middle" align="left"> </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’t grabbed by another X client (e.g by the | |
| 2223 | +Window Manager). Let’s say that you want Xnee to stop recording if you press | |
| 2224 | +Control and h. | |
| 2225 | +</p><table><tr><td> </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’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"> < </a>]</td> | |
| 2242 | +<td valign="middle" align="left">[<a href="#Using-macro" title="Next section in reading order"> > </a>]</td> | |
| 2243 | +<td valign="middle" align="left"> </td> | |
| 2244 | +<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 2247 | +<td valign="middle" align="left"> </td> | |
| 2248 | +<td valign="middle" align="left"> </td> | |
| 2249 | +<td valign="middle" align="left"> </td> | |
| 2250 | +<td valign="middle" align="left"> </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’t grabbed by another X client (e.g by | |
| 2260 | +the Window Manager). Let’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> </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’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"> < </a>]</td> | |
| 2286 | +<td valign="middle" align="left">[<a href="#Define-a-simple-macro" title="Next section in reading order"> > </a>]</td> | |
| 2287 | +<td valign="middle" align="left"> </td> | |
| 2288 | +<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 2291 | +<td valign="middle" align="left"> </td> | |
| 2292 | +<td valign="middle" align="left"> </td> | |
| 2293 | +<td valign="middle" align="left"> </td> | |
| 2294 | +<td valign="middle" align="left"> </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"> < </a>]</td> | |
| 2308 | +<td valign="middle" align="left">[<a href="#Define-another-simple-macro" title="Next section in reading order"> > </a>]</td> | |
| 2309 | +<td valign="middle" align="left"> </td> | |
| 2310 | +<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 2313 | +<td valign="middle" align="left"> </td> | |
| 2314 | +<td valign="middle" align="left"> </td> | |
| 2315 | +<td valign="middle" align="left"> </td> | |
| 2316 | +<td valign="middle" align="left"> </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’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> </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> </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> </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’s try it. Start xrebind with verbose printouts. | |
| 2360 | +</p><table><tr><td> </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"> < </a>]</td> | |
| 2370 | +<td valign="middle" align="left">[<a href="#Various-options" title="Next section in reading order"> > </a>]</td> | |
| 2371 | +<td valign="middle" align="left"> </td> | |
| 2372 | +<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 2375 | +<td valign="middle" align="left"> </td> | |
| 2376 | +<td valign="middle" align="left"> </td> | |
| 2377 | +<td valign="middle" align="left"> </td> | |
| 2378 | +<td valign="middle" align="left"> </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’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> </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’s try it. Start xrebind with verbose printouts. | |
| 2406 | +</p><table><tr><td> </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"> < </a>]</td> | |
| 2426 | +<td valign="middle" align="left">[<a href="#Using-verbose-mode" title="Next section in reading order"> > </a>]</td> | |
| 2427 | +<td valign="middle" align="left"> </td> | |
| 2428 | +<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 2431 | +<td valign="middle" align="left"> </td> | |
| 2432 | +<td valign="middle" align="left"> </td> | |
| 2433 | +<td valign="middle" align="left"> </td> | |
| 2434 | +<td valign="middle" align="left"> </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"> < </a>]</td> | |
| 2446 | +<td valign="middle" align="left">[<a href="#Using-human-readable-printouts" title="Next section in reading order"> > </a>]</td> | |
| 2447 | +<td valign="middle" align="left"> </td> | |
| 2448 | +<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 2451 | +<td valign="middle" align="left"> </td> | |
| 2452 | +<td valign="middle" align="left"> </td> | |
| 2453 | +<td valign="middle" align="left"> </td> | |
| 2454 | +<td valign="middle" align="left"> </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> </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’ll lots of verbose printouts that | |
| 2466 | +usualy isn’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"> < </a>]</td> | |
| 2473 | +<td valign="middle" align="left">[<a href="#Using-a-differet-screen-resolution" title="Next section in reading order"> > </a>]</td> | |
| 2474 | +<td valign="middle" align="left"> </td> | |
| 2475 | +<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 2478 | +<td valign="middle" align="left"> </td> | |
| 2479 | +<td valign="middle" align="left"> </td> | |
| 2480 | +<td valign="middle" align="left"> </td> | |
| 2481 | +<td valign="middle" align="left"> </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> </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’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"> < </a>]</td> | |
| 2501 | +<td valign="middle" align="left">[<a href="#Using-a-offset-when-replaying" title="Next section in reading order"> > </a>]</td> | |
| 2502 | +<td valign="middle" align="left"> </td> | |
| 2503 | +<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 2506 | +<td valign="middle" align="left"> </td> | |
| 2507 | +<td valign="middle" align="left"> </td> | |
| 2508 | +<td valign="middle" align="left"> </td> | |
| 2509 | +<td valign="middle" align="left"> </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> </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"> < </a>]</td> | |
| 2532 | +<td valign="middle" align="left">[<a href="#Using-a-window-position-recall" title="Next section in reading order"> > </a>]</td> | |
| 2533 | +<td valign="middle" align="left"> </td> | |
| 2534 | +<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 2537 | +<td valign="middle" align="left"> </td> | |
| 2538 | +<td valign="middle" align="left"> </td> | |
| 2539 | +<td valign="middle" align="left"> </td> | |
| 2540 | +<td valign="middle" align="left"> </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> </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"> < </a>]</td> | |
| 2564 | +<td valign="middle" align="left">[<a href="#Using-no-resolution-translation" title="Next section in reading order"> > </a>]</td> | |
| 2565 | +<td valign="middle" align="left"> </td> | |
| 2566 | +<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 2569 | +<td valign="middle" align="left"> </td> | |
| 2570 | +<td valign="middle" align="left"> </td> | |
| 2571 | +<td valign="middle" align="left"> </td> | |
| 2572 | +<td valign="middle" align="left"> </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> </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"> < </a>]</td> | |
| 2595 | +<td valign="middle" align="left">[<a href="#Record-another-display-than-the-default" title="Next section in reading order"> > </a>]</td> | |
| 2596 | +<td valign="middle" align="left"> </td> | |
| 2597 | +<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 2600 | +<td valign="middle" align="left"> </td> | |
| 2601 | +<td valign="middle" align="left"> </td> | |
| 2602 | +<td valign="middle" align="left"> </td> | |
| 2603 | +<td valign="middle" align="left"> </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> </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"> < </a>]</td> | |
| 2628 | +<td valign="middle" align="left">[<a href="#Replay-to-another-display-than-the-default" title="Next section in reading order"> > </a>]</td> | |
| 2629 | +<td valign="middle" align="left"> </td> | |
| 2630 | +<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 2633 | +<td valign="middle" align="left"> </td> | |
| 2634 | +<td valign="middle" align="left"> </td> | |
| 2635 | +<td valign="middle" align="left"> </td> | |
| 2636 | +<td valign="middle" align="left"> </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> </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"> < </a>]</td> | |
| 2655 | +<td valign="middle" align="left">[<a href="#Shell-scripts-using-Xnee" title="Next section in reading order"> > </a>]</td> | |
| 2656 | +<td valign="middle" align="left"> </td> | |
| 2657 | +<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 2660 | +<td valign="middle" align="left"> </td> | |
| 2661 | +<td valign="middle" align="left"> </td> | |
| 2662 | +<td valign="middle" align="left"> </td> | |
| 2663 | +<td valign="middle" align="left"> </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> </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"> < </a>]</td> | |
| 2681 | +<td valign="middle" align="left">[<a href="#Programs" title="Next section in reading order"> > </a>]</td> | |
| 2682 | +<td valign="middle" align="left"> </td> | |
| 2683 | +<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 2686 | +<td valign="middle" align="left"> </td> | |
| 2687 | +<td valign="middle" align="left"> </td> | |
| 2688 | +<td valign="middle" align="left"> </td> | |
| 2689 | +<td valign="middle" align="left"> </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> </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’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"> < </a>]</td> | |
| 2740 | +<td valign="middle" align="left">[<a href="#cnee-_002d-cnee_0027s-not-an-event-emulator" title="Next section in reading order"> > </a>]</td> | |
| 2741 | +<td valign="middle" align="left"> </td> | |
| 2742 | +<td valign="middle" align="left">[<a href="#Examples" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 2745 | +<td valign="middle" align="left"> </td> | |
| 2746 | +<td valign="middle" align="left"> </td> | |
| 2747 | +<td valign="middle" align="left"> </td> | |
| 2748 | +<td valign="middle" align="left"> </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"> < </a>]</td> | |
| 2765 | +<td valign="middle" align="left">[<a href="#gnee-_002d-gnee_0027s-not-an-emulator-either" title="Next section in reading order"> > </a>]</td> | |
| 2766 | +<td valign="middle" align="left"> </td> | |
| 2767 | +<td valign="middle" align="left">[<a href="#Programs" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 2770 | +<td valign="middle" align="left"> </td> | |
| 2771 | +<td valign="middle" align="left"> </td> | |
| 2772 | +<td valign="middle" align="left"> </td> | |
| 2773 | +<td valign="middle" align="left"> </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’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"> < </a>]</td> | |
| 2793 | +<td valign="middle" align="left">[<a href="#pnee-_002d-pnee_0027s-not-even-emulating" title="Next section in reading order"> > </a>]</td> | |
| 2794 | +<td valign="middle" align="left"> </td> | |
| 2795 | +<td valign="middle" align="left">[<a href="#Programs" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 2798 | +<td valign="middle" align="left"> </td> | |
| 2799 | +<td valign="middle" align="left"> </td> | |
| 2800 | +<td valign="middle" align="left"> </td> | |
| 2801 | +<td valign="middle" align="left"> </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’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"> < </a>]</td> | |
| 2818 | +<td valign="middle" align="left">[<a href="#Reporting-pnee-bugs" title="Next section in reading order"> > </a>]</td> | |
| 2819 | +<td valign="middle" align="left"> </td> | |
| 2820 | +<td valign="middle" align="left">[<a href="#Programs" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 2823 | +<td valign="middle" align="left"> </td> | |
| 2824 | +<td valign="middle" align="left"> </td> | |
| 2825 | +<td valign="middle" align="left"> </td> | |
| 2826 | +<td valign="middle" align="left"> </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’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"> < </a>]</td> | |
| 2851 | +<td valign="middle" align="left">[<a href="#File-format" title="Next section in reading order"> > </a>]</td> | |
| 2852 | +<td valign="middle" align="left"> </td> | |
| 2853 | +<td valign="middle" align="left">[<a href="#Programs" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 2856 | +<td valign="middle" align="left"> </td> | |
| 2857 | +<td valign="middle" align="left"> </td> | |
| 2858 | +<td valign="middle" align="left"> </td> | |
| 2859 | +<td valign="middle" align="left"> </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"> < </a>]</td> | |
| 2881 | +<td valign="middle" align="left">[<a href="#Project-file" title="Next section in reading order"> > </a>]</td> | |
| 2882 | +<td valign="middle" align="left"> </td> | |
| 2883 | +<td valign="middle" align="left">[<a href="#Programs" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 2886 | +<td valign="middle" align="left"> </td> | |
| 2887 | +<td valign="middle" align="left"> </td> | |
| 2888 | +<td valign="middle" align="left"> </td> | |
| 2889 | +<td valign="middle" align="left"> </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"> < </a>]</td> | |
| 2910 | +<td valign="middle" align="left">[<a href="#Create-a-project-file" title="Next section in reading order"> > </a>]</td> | |
| 2911 | +<td valign="middle" align="left"> </td> | |
| 2912 | +<td valign="middle" align="left">[<a href="#File-format" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 2915 | +<td valign="middle" align="left"> </td> | |
| 2916 | +<td valign="middle" align="left"> </td> | |
| 2917 | +<td valign="middle" align="left"> </td> | |
| 2918 | +<td valign="middle" align="left"> </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"> < </a>]</td> | |
| 2935 | +<td valign="middle" align="left">[<a href="#Xnee-Session-file" title="Next section in reading order"> > </a>]</td> | |
| 2936 | +<td valign="middle" align="left"> </td> | |
| 2937 | +<td valign="middle" align="left">[<a href="#File-format" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 2940 | +<td valign="middle" align="left"> </td> | |
| 2941 | +<td valign="middle" align="left"> </td> | |
| 2942 | +<td valign="middle" align="left"> </td> | |
| 2943 | +<td valign="middle" align="left"> </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 “save settings to file” | |
| 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 | + | |
| 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 | + | |
| 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"> < </a>]</td> | |
| 2973 | +<td valign="middle" align="left">[<a href="#Xnee-file-format" title="Next section in reading order"> > </a>]</td> | |
| 2974 | +<td valign="middle" align="left"> </td> | |
| 2975 | +<td valign="middle" align="left">[<a href="#File-format" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 2978 | +<td valign="middle" align="left"> </td> | |
| 2979 | +<td valign="middle" align="left"> </td> | |
| 2980 | +<td valign="middle" align="left"> </td> | |
| 2981 | +<td valign="middle" align="left"> </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"> < </a>]</td> | |
| 2999 | +<td valign="middle" align="left">[<a href="#Xnee-directives" title="Next section in reading order"> > </a>]</td> | |
| 3000 | +<td valign="middle" align="left"> </td> | |
| 3001 | +<td valign="middle" align="left">[<a href="#File-format" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 3004 | +<td valign="middle" align="left"> </td> | |
| 3005 | +<td valign="middle" align="left"> </td> | |
| 3006 | +<td valign="middle" align="left"> </td> | |
| 3007 | +<td valign="middle" align="left"> </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"> < </a>]</td> | |
| 3028 | +<td valign="middle" align="left">[<a href="#Comment" title="Next section in reading order"> > </a>]</td> | |
| 3029 | +<td valign="middle" align="left"> </td> | |
| 3030 | +<td valign="middle" align="left">[<a href="#File-format" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 3033 | +<td valign="middle" align="left"> </td> | |
| 3034 | +<td valign="middle" align="left"> </td> | |
| 3035 | +<td valign="middle" align="left"> </td> | |
| 3036 | +<td valign="middle" align="left"> </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"> < </a>]</td> | |
| 3063 | +<td valign="middle" align="left">[<a href="#Settings" title="Next section in reading order"> > </a>]</td> | |
| 3064 | +<td valign="middle" align="left"> </td> | |
| 3065 | +<td valign="middle" align="left">[<a href="#File-format" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 3068 | +<td valign="middle" align="left"> </td> | |
| 3069 | +<td valign="middle" align="left"> </td> | |
| 3070 | +<td valign="middle" align="left"> </td> | |
| 3071 | +<td valign="middle" align="left"> </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"> < </a>]</td> | |
| 3094 | +<td valign="middle" align="left">[<a href="#Replay-1" title="Next section in reading order"> > </a>]</td> | |
| 3095 | +<td valign="middle" align="left"> </td> | |
| 3096 | +<td valign="middle" align="left">[<a href="#File-format" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 3099 | +<td valign="middle" align="left"> </td> | |
| 3100 | +<td valign="middle" align="left"> </td> | |
| 3101 | +<td valign="middle" align="left"> </td> | |
| 3102 | +<td valign="middle" align="left"> </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"> < </a>]</td> | |
| 3181 | +<td valign="middle" align="left">[<a href="#Script-replay-data" title="Next section in reading order"> > </a>]</td> | |
| 3182 | +<td valign="middle" align="left"> </td> | |
| 3183 | +<td valign="middle" align="left">[<a href="#File-format" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 3186 | +<td valign="middle" align="left"> </td> | |
| 3187 | +<td valign="middle" align="left"> </td> | |
| 3188 | +<td valign="middle" align="left"> </td> | |
| 3189 | +<td valign="middle" align="left"> </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"> < </a>]</td> | |
| 3219 | +<td valign="middle" align="left">[<a href="#Mark" title="Next section in reading order"> > </a>]</td> | |
| 3220 | +<td valign="middle" align="left"> </td> | |
| 3221 | +<td valign="middle" align="left">[<a href="#File-format" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 3224 | +<td valign="middle" align="left"> </td> | |
| 3225 | +<td valign="middle" align="left"> </td> | |
| 3226 | +<td valign="middle" align="left"> </td> | |
| 3227 | +<td valign="middle" align="left"> </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"> < </a>]</td> | |
| 3266 | +<td valign="middle" align="left">[<a href="#Exec" title="Next section in reading order"> > </a>]</td> | |
| 3267 | +<td valign="middle" align="left"> </td> | |
| 3268 | +<td valign="middle" align="left">[<a href="#File-format" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 3271 | +<td valign="middle" align="left"> </td> | |
| 3272 | +<td valign="middle" align="left"> </td> | |
| 3273 | +<td valign="middle" align="left"> </td> | |
| 3274 | +<td valign="middle" align="left"> </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"> < </a>]</td> | |
| 3294 | +<td valign="middle" align="left">[<a href="#Project-information" title="Next section in reading order"> > </a>]</td> | |
| 3295 | +<td valign="middle" align="left"> </td> | |
| 3296 | +<td valign="middle" align="left">[<a href="#File-format" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 3299 | +<td valign="middle" align="left"> </td> | |
| 3300 | +<td valign="middle" align="left"> </td> | |
| 3301 | +<td valign="middle" align="left"> </td> | |
| 3302 | +<td valign="middle" align="left"> </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"> < </a>]</td> | |
| 3323 | +<td valign="middle" align="left">[<a href="#Internals" title="Next section in reading order"> > </a>]</td> | |
| 3324 | +<td valign="middle" align="left"> </td> | |
| 3325 | +<td valign="middle" align="left">[<a href="#File-format" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 3328 | +<td valign="middle" align="left"> </td> | |
| 3329 | +<td valign="middle" align="left"> </td> | |
| 3330 | +<td valign="middle" align="left"> </td> | |
| 3331 | +<td valign="middle" align="left"> </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"> < </a>]</td> | |
| 3360 | +<td valign="middle" align="left">[<a href="#Synchronisation" title="Next section in reading order"> > </a>]</td> | |
| 3361 | +<td valign="middle" align="left"> </td> | |
| 3362 | +<td valign="middle" align="left">[<a href="#File-format" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 3365 | +<td valign="middle" align="left"> </td> | |
| 3366 | +<td valign="middle" align="left"> </td> | |
| 3367 | +<td valign="middle" align="left"> </td> | |
| 3368 | +<td valign="middle" align="left"> </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’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"> < </a>]</td> | |
| 3392 | +<td valign="middle" align="left">[<a href="#Why-synchronise" title="Next section in reading order"> > </a>]</td> | |
| 3393 | +<td valign="middle" align="left"> </td> | |
| 3394 | +<td valign="middle" align="left">[<a href="#Internals" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 3397 | +<td valign="middle" align="left"> </td> | |
| 3398 | +<td valign="middle" align="left"> </td> | |
| 3399 | +<td valign="middle" align="left"> </td> | |
| 3400 | +<td valign="middle" align="left"> </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"> < </a>]</td> | |
| 3415 | +<td valign="middle" align="left">[<a href="#How-to-synchronise" title="Next section in reading order"> > </a>]</td> | |
| 3416 | +<td valign="middle" align="left"> </td> | |
| 3417 | +<td valign="middle" align="left">[<a href="#Internals" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 3420 | +<td valign="middle" align="left"> </td> | |
| 3421 | +<td valign="middle" align="left"> </td> | |
| 3422 | +<td valign="middle" align="left"> </td> | |
| 3423 | +<td valign="middle" align="left"> </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’s happening "right now" 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’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’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’t there and we’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"> < </a>]</td> | |
| 3468 | +<td valign="middle" align="left">[<a href="#Synchronisation-is-needed" title="Next section in reading order"> > </a>]</td> | |
| 3469 | +<td valign="middle" align="left"> </td> | |
| 3470 | +<td valign="middle" align="left">[<a href="#Internals" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 3473 | +<td valign="middle" align="left"> </td> | |
| 3474 | +<td valign="middle" align="left"> </td> | |
| 3475 | +<td valign="middle" align="left"> </td> | |
| 3476 | +<td valign="middle" align="left"> </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 & 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"> < </a>]</td> | |
| 3525 | +<td valign="middle" align="left">[<a href="#Different-data-for-different-kind-of-sessions" title="Next section in reading order"> > </a>]</td> | |
| 3526 | +<td valign="middle" align="left"> </td> | |
| 3527 | +<td valign="middle" align="left">[<a href="#Internals" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 3530 | +<td valign="middle" align="left"> </td> | |
| 3531 | +<td valign="middle" align="left"> </td> | |
| 3532 | +<td valign="middle" align="left"> </td> | |
| 3533 | +<td valign="middle" align="left"> </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"> < </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"> > </a>]</td> | |
| 3554 | +<td valign="middle" align="left"> </td> | |
| 3555 | +<td valign="middle" align="left">[<a href="#Internals" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 3558 | +<td valign="middle" align="left"> </td> | |
| 3559 | +<td valign="middle" align="left"> </td> | |
| 3560 | +<td valign="middle" align="left"> </td> | |
| 3561 | +<td valign="middle" align="left"> </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’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’s <code>--human-printouts</code> option) and do some "trial and error" | |
| 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"> < </a>]</td> | |
| 3581 | +<td valign="middle" align="left">[<a href="#X-protocol-is-rich-and-asynchronous" title="Next section in reading order"> > </a>]</td> | |
| 3582 | +<td valign="middle" align="left"> </td> | |
| 3583 | +<td valign="middle" align="left">[<a href="#Internals" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 3586 | +<td valign="middle" align="left"> </td> | |
| 3587 | +<td valign="middle" align="left"> </td> | |
| 3588 | +<td valign="middle" align="left"> </td> | |
| 3589 | +<td valign="middle" align="left"> </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’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"> < </a>]</td> | |
| 3602 | +<td valign="middle" align="left">[<a href="#Different-data-sent" title="Next section in reading order"> > </a>]</td> | |
| 3603 | +<td valign="middle" align="left"> </td> | |
| 3604 | +<td valign="middle" align="left">[<a href="#Internals" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 3607 | +<td valign="middle" align="left"> </td> | |
| 3608 | +<td valign="middle" align="left"> </td> | |
| 3609 | +<td valign="middle" align="left"> </td> | |
| 3610 | +<td valign="middle" align="left"> </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"> < </a>]</td> | |
| 3623 | +<td valign="middle" align="left">[<a href="#Buffers-and-timeouts" title="Next section in reading order"> > </a>]</td> | |
| 3624 | +<td valign="middle" align="left"> </td> | |
| 3625 | +<td valign="middle" align="left">[<a href="#Internals" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 3628 | +<td valign="middle" align="left"> </td> | |
| 3629 | +<td valign="middle" align="left"> </td> | |
| 3630 | +<td valign="middle" align="left"> </td> | |
| 3631 | +<td valign="middle" align="left"> </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"> < </a>]</td> | |
| 3645 | +<td valign="middle" align="left">[<a href="#Requirements" title="Next section in reading order"> > </a>]</td> | |
| 3646 | +<td valign="middle" align="left"> </td> | |
| 3647 | +<td valign="middle" align="left">[<a href="#Internals" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 3650 | +<td valign="middle" align="left"> </td> | |
| 3651 | +<td valign="middle" align="left"> </td> | |
| 3652 | +<td valign="middle" align="left"> </td> | |
| 3653 | +<td valign="middle" align="left"> </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’t been sent during replay | |
| 3663 | +</li><li> that was sent during replay but hasn’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’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"> < </a>]</td> | |
| 3709 | +<td valign="middle" align="left">[<a href="#Runtime-requirements" title="Next section in reading order"> > </a>]</td> | |
| 3710 | +<td valign="middle" align="left"> </td> | |
| 3711 | +<td valign="middle" align="left">[<a href="#Internals" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 3714 | +<td valign="middle" align="left"> </td> | |
| 3715 | +<td valign="middle" align="left"> </td> | |
| 3716 | +<td valign="middle" align="left"> </td> | |
| 3717 | +<td valign="middle" align="left"> </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"> < </a>]</td> | |
| 3731 | +<td valign="middle" align="left">[<a href="#Development-requirements" title="Next section in reading order"> > </a>]</td> | |
| 3732 | +<td valign="middle" align="left"> </td> | |
| 3733 | +<td valign="middle" align="left">[<a href="#Requirements" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 3736 | +<td valign="middle" align="left"> </td> | |
| 3737 | +<td valign="middle" align="left"> </td> | |
| 3738 | +<td valign="middle" align="left"> </td> | |
| 3739 | +<td valign="middle" align="left"> </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"> < </a>]</td> | |
| 3758 | +<td valign="middle" align="left">[<a href="#FAQ" title="Next section in reading order"> > </a>]</td> | |
| 3759 | +<td valign="middle" align="left"> </td> | |
| 3760 | +<td valign="middle" align="left">[<a href="#Requirements" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 3763 | +<td valign="middle" align="left"> </td> | |
| 3764 | +<td valign="middle" align="left"> </td> | |
| 3765 | +<td valign="middle" align="left"> </td> | |
| 3766 | +<td valign="middle" align="left"> </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"> < </a>]</td> | |
| 3782 | +<td valign="middle" align="left">[<a href="#Copying-This-Manual" title="Next section in reading order"> > </a>]</td> | |
| 3783 | +<td valign="middle" align="left"> </td> | |
| 3784 | +<td valign="middle" align="left">[<a href="#Requirements" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 3787 | +<td valign="middle" align="left"> </td> | |
| 3788 | +<td valign="middle" align="left"> </td> | |
| 3789 | +<td valign="middle" align="left"> </td> | |
| 3790 | +<td valign="middle" align="left"> </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> ‘<samp>Where do I send questions?</samp>’</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> ‘<samp>Where and how do I report bugs?</samp>’</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> ‘<samp>Can you add xxx functionality to Xnee</samp>’</dt> | |
| 3816 | +<dd><p> Send an email to <a href="mailto:xnee-devel@gnu.org">xnee-devel@gnu.org</a> and we’ll consider it. | |
| 3817 | +</p> | |
| 3818 | +</dd> | |
| 3819 | +<dt> ‘<samp>Why the name Xnee?</samp>’</dt> | |
| 3820 | +<dd><a name="index-why-name-it-Xnee"></a> | |
| 3821 | +<p>We wanted to use a recursive acronym, as GNU (“GNU’s Not Unix’). | |
| 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> ‘<samp>What does the name cnee mean?</samp>’</dt> | |
| 3828 | +<dd><a name="index-What-does-the-name-cnee-mean_003f"></a> | |
| 3829 | +<p> cnee’s not an event emulator | |
| 3830 | +</p> | |
| 3831 | +</dd> | |
| 3832 | +<dt> ‘<samp>What does the name gnee mean?</samp>’</dt> | |
| 3833 | +<dd><a name="index-What-does-the-name-gnee-mean_003f"></a> | |
| 3834 | +<p> gnee’s not an emulator either | |
| 3835 | +</p> | |
| 3836 | +</dd> | |
| 3837 | +<dt> ‘<samp>What does the name pnee mean?</samp>’</dt> | |
| 3838 | +<dd><a name="index-What-does-the-name-gnee-mean_003f-1"></a> | |
| 3839 | +<p> pnee’s not even emulating | |
| 3840 | +</p> | |
| 3841 | + | |
| 3842 | +</dd> | |
| 3843 | +<dt> ‘<samp>What doesn't the name gnee mean?</samp>’</dt> | |
| 3844 | +<dd><a name="index-What-does-the-name-gnee-mean_003f-2"></a> | |
| 3845 | +<p> gnee’s not an Event Emulator | |
| 3846 | +</p> | |
| 3847 | + | |
| 3848 | +</dd> | |
| 3849 | +<dt> ‘<samp>What license is Xnee released under ?</samp>’</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> ‘<samp>Where is the CVS repository?</samp>’</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> ‘<samp>Is there a GUI frontend for Xnee ?</samp>’</dt> | |
| 3863 | +<dd><a name="index-GUI-frontend-for-Xnee"></a> | |
| 3864 | +<p>Yes! Gnee. | |
| 3865 | +</p> | |
| 3866 | + | |
| 3867 | +</dd> | |
| 3868 | +<dt> ‘<samp>When setting ranges (integers), how do I know what numbers belong</samp>’ </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> ‘<samp>When I replay to another display the characters are not correct?</samp>’</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 > remote.map </code> | |
| 3898 | +<br> | |
| 3899 | +<br> | |
| 3900 | +Store local keymap: | |
| 3901 | +<br> | |
| 3902 | +<code>xmodmap -pke > 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> ‘<samp>When starting Xnee I am informed that I am missing the RECORD extension</samp>’</dt> | |
| 3923 | +<dd><a name="index-missing-RECORD-extension"></a> | |
| 3924 | +<p>Your X server doesn’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> ‘<samp>Can Xnee record more than one display?</samp>’</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> ‘<samp>When starting Xnee I am informed that I am missing the RECORD extension</samp>’</dt> | |
| 3934 | +<dd><a name="index-missing-RECORD-extension-1"></a> | |
| 3935 | +<p>Your X server doesn’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 "Module"</code><br> | |
| 3942 | + <code>Load "dbe" # Double-buffering</code><br> | |
| 3943 | + <code>Load "GLcore" # OpenGL support</code><br> | |
| 3944 | + <code>Load "dri" # Direct rendering infrastructure</code><br> | |
| 3945 | + <code>Load "glx" # OpenGL X protocol interface</code><br> | |
| 3946 | + <code>Load "extmod" # Misc. required extensions</code><br> | |
| 3947 | + <code>Load "v4l" # Video4Linux</code><br> | |
| 3948 | + <code># Load "pex5" # PHIGS for X 3D environment (obsolete)</code><br> | |
| 3949 | + <code>Load "record" # X event recorder</code><br> | |
| 3950 | + <code># Load "xie" # X Image Extension (obsolete)</code><br> | |
| 3951 | + <code># You only need the following two modules if you do not use xfs.</code><br> | |
| 3952 | + <code># Load "freetype" # TrueType font handler</code><br> | |
| 3953 | + <code># Load "type1" # 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 | + <code>Load "record" # 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 "vendor" on how to do that. | |
| 3965 | +</li></ul> | |
| 3966 | + | |
| 3967 | +</dd> | |
| 3968 | +<dt> ‘<samp>How do I build VNC so that I can use Xnee together with it?</samp>’</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 |& 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> ‘<samp>How do I ensure that the mouse, during replay, is at the same position (x,y) as when recorded?</samp>’</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> ‘<samp>How do I ensure that the same window is focused as when recorded?</samp>’</dt> | |
| 4033 | +<dd><p>It’s simple, just make sure that you record the window getting focus. | |
| 4034 | +</p> | |
| 4035 | +</dd> | |
| 4036 | +<dt> ‘<samp>The window pops up at different positions when replaying, can Xnee handle that?</samp>’</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> ‘<samp>Xnee seems to mess up my entire session after replaying a sessions which was interupted by Control-C?</samp>’</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> ‘<samp>Autorepeat is turned off by Xnee, how do I turn it on again?</samp>’</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"> < </a>]</td> | |
| 4071 | +<td valign="middle" align="left">[<a href="#GNU-Free-Documentation-License" title="Next section in reading order"> > </a>]</td> | |
| 4072 | +<td valign="middle" align="left"> </td> | |
| 4073 | +<td valign="middle" align="left">[<a href="#FAQ" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 4076 | +<td valign="middle" align="left"> </td> | |
| 4077 | +<td valign="middle" align="left"> </td> | |
| 4078 | +<td valign="middle" align="left"> </td> | |
| 4079 | +<td valign="middle" align="left"> </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"> < </a>]</td> | |
| 4091 | +<td valign="middle" align="left">[<a href="#Index" title="Next section in reading order"> > </a>]</td> | |
| 4092 | +<td valign="middle" align="left"> </td> | |
| 4093 | +<td valign="middle" align="left">[<a href="#Copying-This-Manual" title="Beginning of this chapter or previous chapter"> << </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"> >> </a>]</td> | |
| 4096 | +<td valign="middle" align="left"> </td> | |
| 4097 | +<td valign="middle" align="left"> </td> | |
| 4098 | +<td valign="middle" align="left"> </td> | |
| 4099 | +<td valign="middle" align="left"> </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> </td><td><pre class="display">Copyright © 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 “copyleft”, 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 “Document”, below, | |
| 4150 | +refers to any such manual or work. Any member of the public is a | |
| 4151 | +licensee, and is addressed as “you”. 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 “Modified Version” 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 “Secondary Section” 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’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 “Invariant Sections” 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 “Cover Texts” 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 “Transparent” 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 “Transparent” is called “Opaque”. | |
| 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 “Title Page” 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, “Title Page” means | |
| 4213 | +the text near the most prominent appearance of the work’s title, | |
| 4214 | +preceding the beginning of the body of the text. | |
| 4215 | +</p> | |
| 4216 | +<p>A section “Entitled XYZ” 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 “Acknowledgements”, | |
| 4220 | +“Dedications”, “Endorsements”, or “History”.) To “Preserve the Title” | |
| 4221 | +of such a section when you modify the Document means that it remains a | |
| 4222 | +section “Entitled XYZ” 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’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’s license notice. | |
| 4329 | + | |
| 4330 | +</li><li> | |
| 4331 | +Include an unaltered copy of this License. | |
| 4332 | + | |
| 4333 | +</li><li> | |
| 4334 | +Preserve the section Entitled “History”, 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 “History” 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 “History” 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 “Acknowledgements” or “Dedications”, 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 “Endorsements”. 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 “Endorsements” 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’s license notice. | |
| 4379 | +These titles must be distinct from any other section titles. | |
| 4380 | +</p> | |
| 4381 | +<p>You may add a section Entitled “Endorsements”, provided it contains | |
| 4382 | +nothing but endorsements of your Modified Version by various | |
| 4383 | +parties—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 “History” | |
| 4421 | +in the various original documents, forming one section Entitled | |
| 4422 | +“History”; likewise combine any sections Entitled “Acknowledgements”, | |
| 4423 | +and any sections Entitled “Dedications”. You must delete all | |
| 4424 | +sections Entitled “Endorsements.” | |
| 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 “aggregate” if the copyright | |
| 4446 | +resulting from the compilation is not used to limit the legal rights | |
| 4447 | +of the compilation’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’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 “Acknowledgements”, | |
| 4477 | +“Dedications”, or “History”, 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 “or any later version” 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"> < </a>]</td> | |
| 4520 | +<td valign="middle" align="left">[ > ]</td> | |
| 4521 | +<td valign="middle" align="left"> </td> | |
| 4522 | +<td valign="middle" align="left">[<a href="#Copying-This-Manual" title="Beginning of this chapter or previous chapter"> << </a>]</td> | |
| 4523 | +<td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td> | |
| 4524 | +<td valign="middle" align="left">[ >> ]</td> | |
| 4525 | +<td valign="middle" align="left"> </td> | |
| 4526 | +<td valign="middle" align="left"> </td> | |
| 4527 | +<td valign="middle" align="left"> </td> | |
| 4528 | +<td valign="middle" align="left"> </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: </th><td><a href="#Index-1_cp_letter-B" class="summary-letter"><b>B</b></a> | |
| 4537 | + | |
| 4538 | +<a href="#Index-1_cp_letter-C" class="summary-letter"><b>C</b></a> | |
| 4539 | + | |
| 4540 | +<a href="#Index-1_cp_letter-D" class="summary-letter"><b>D</b></a> | |
| 4541 | + | |
| 4542 | +<a href="#Index-1_cp_letter-E" class="summary-letter"><b>E</b></a> | |
| 4543 | + | |
| 4544 | +<a href="#Index-1_cp_letter-F" class="summary-letter"><b>F</b></a> | |
| 4545 | + | |
| 4546 | +<a href="#Index-1_cp_letter-G" class="summary-letter"><b>G</b></a> | |
| 4547 | + | |
| 4548 | +<a href="#Index-1_cp_letter-H" class="summary-letter"><b>H</b></a> | |
| 4549 | + | |
| 4550 | +<a href="#Index-1_cp_letter-I" class="summary-letter"><b>I</b></a> | |
| 4551 | + | |
| 4552 | +<a href="#Index-1_cp_letter-K" class="summary-letter"><b>K</b></a> | |
| 4553 | + | |
| 4554 | +<a href="#Index-1_cp_letter-L" class="summary-letter"><b>L</b></a> | |
| 4555 | + | |
| 4556 | +<a href="#Index-1_cp_letter-M" class="summary-letter"><b>M</b></a> | |
| 4557 | + | |
| 4558 | +<a href="#Index-1_cp_letter-P" class="summary-letter"><b>P</b></a> | |
| 4559 | + | |
| 4560 | +<a href="#Index-1_cp_letter-Q" class="summary-letter"><b>Q</b></a> | |
| 4561 | + | |
| 4562 | +<a href="#Index-1_cp_letter-R" class="summary-letter"><b>R</b></a> | |
| 4563 | + | |
| 4564 | +<a href="#Index-1_cp_letter-S" class="summary-letter"><b>S</b></a> | |
| 4565 | + | |
| 4566 | +<a href="#Index-1_cp_letter-U" class="summary-letter"><b>U</b></a> | |
| 4567 | + | |
| 4568 | +<a href="#Index-1_cp_letter-W" class="summary-letter"><b>W</b></a> | |
| 4569 | + | |
| 4570 | +<a href="#Index-1_cp_letter-X" class="summary-letter"><b>X</b></a> | |
| 4571 | + | |
| 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: </th><td><a href="#Index-1_cp_letter-B" class="summary-letter"><b>B</b></a> | |
| 4705 | + | |
| 4706 | +<a href="#Index-1_cp_letter-C" class="summary-letter"><b>C</b></a> | |
| 4707 | + | |
| 4708 | +<a href="#Index-1_cp_letter-D" class="summary-letter"><b>D</b></a> | |
| 4709 | + | |
| 4710 | +<a href="#Index-1_cp_letter-E" class="summary-letter"><b>E</b></a> | |
| 4711 | + | |
| 4712 | +<a href="#Index-1_cp_letter-F" class="summary-letter"><b>F</b></a> | |
| 4713 | + | |
| 4714 | +<a href="#Index-1_cp_letter-G" class="summary-letter"><b>G</b></a> | |
| 4715 | + | |
| 4716 | +<a href="#Index-1_cp_letter-H" class="summary-letter"><b>H</b></a> | |
| 4717 | + | |
| 4718 | +<a href="#Index-1_cp_letter-I" class="summary-letter"><b>I</b></a> | |
| 4719 | + | |
| 4720 | +<a href="#Index-1_cp_letter-K" class="summary-letter"><b>K</b></a> | |
| 4721 | + | |
| 4722 | +<a href="#Index-1_cp_letter-L" class="summary-letter"><b>L</b></a> | |
| 4723 | + | |
| 4724 | +<a href="#Index-1_cp_letter-M" class="summary-letter"><b>M</b></a> | |
| 4725 | + | |
| 4726 | +<a href="#Index-1_cp_letter-P" class="summary-letter"><b>P</b></a> | |
| 4727 | + | |
| 4728 | +<a href="#Index-1_cp_letter-Q" class="summary-letter"><b>Q</b></a> | |
| 4729 | + | |
| 4730 | +<a href="#Index-1_cp_letter-R" class="summary-letter"><b>R</b></a> | |
| 4731 | + | |
| 4732 | +<a href="#Index-1_cp_letter-S" class="summary-letter"><b>S</b></a> | |
| 4733 | + | |
| 4734 | +<a href="#Index-1_cp_letter-U" class="summary-letter"><b>U</b></a> | |
| 4735 | + | |
| 4736 | +<a href="#Index-1_cp_letter-W" class="summary-letter"><b>W</b></a> | |
| 4737 | + | |
| 4738 | +<a href="#Index-1_cp_letter-X" class="summary-letter"><b>X</b></a> | |
| 4739 | + | |
| 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’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’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’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"> [ < ] </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"> [ > ] </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"> [ << ] </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"> [ >> ] </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> </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> </td> | |
| 5020 | + </tr> | |
| 5021 | + <tr> | |
| 5022 | + <td align="center"> [Index] </td> | |
| 5023 | + <td align="center">Index</td> | |
| 5024 | + <td>Index</td> | |
| 5025 | + <td> </td> | |
| 5026 | + </tr> | |
| 5027 | + <tr> | |
| 5028 | + <td align="center"> [ ? ] </td> | |
| 5029 | + <td align="center">About</td> | |
| 5030 | + <td>About (help)</td> | |
| 5031 | + <td> </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 | |
| 5052 | + <strong><== 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> |
| @@ -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.