[Top] [Contents] [Index] [ ? ]

Xnee Manual

Copyright (C) 2002-2003 Henrik Sandklef Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License"

1. Introduction  Xnee Introduction
2. Usage  Xnee Usage
3. Xnee Installation  
5. Examples  Xnee Usage Examples
6. synchronisation  Xnee Synchronisation
7. Xnee Requirements  
8. FAQ  Xnee FAQ
A. Copying This Manual  
B. Index  


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1. Introduction


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.1 Short description

Xnee can record and replay an X session. Xnee also has the ability to distribute events to multiple displays.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.2 Xnee features

Test tool Instead of performing test cases for a GUI (or CLI program) cases over and over again, the test cases can be automated. Simply record a user session and replay it later.

Performance test tool If you want to simulate lots of simultaneous users in a network (or a local machine) you can use Xnee. Simply record a (or many) users sessions and start multiple instances of Xnee.

Demo tool You can use Xnee to demonstrate the features of your program. Simply record a user session and replay it later.

Distribution tool If you want to send over your mouse/keyboard actions to another display you can use the built-in distribution mechanism in Xnee.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.3 Background

In order to verify that a program does the job it's supposed to do, certain tests have to be made. These tests are, IMHO, perhaps the most boring things a programmer can do. With xnee the testcase(s) can be recorded and later on replayed. Xnee can also distribute events (both when recording and replaying) to other displays.

Initially, Xnee was made to release the programmer (that's me) from the burden of testing, who hopefully will be writing free software instead (I am doing that).


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.4 How does it work

Xnee uses X Windows System. For more information about this lovely system, go to :

Xnee receives X11 protocol data (e g XEvents) from an X server and prints them to a file (or stdout). Mouse and keyboard actions generate device events. These events can be relpayed. Other X11 data can also recorded. These data is used when replaying to synchronise. This is not only useful but essential. We can not replay or regenerate keyboard-events to a window before it's ready to "receive" events. By recording data other than device events


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2. Usage


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.1 Getting started with Xnee

To get the first feel of Xnee four examples are presented.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.1.1 Simple replay

Start one terminal emulator (e.g xterm) Start Xnee,
 
   xnee -rep -f example1.xnr &
....dont forget '&'. The file example1.xnr contains keyboard events recorded during development of this manual. When replayed you'll what was typed and of course more important yu'll get i first glimpse of Xnee and its capabilities. For information on where to find the example files, see below.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.1.2 Simple recording of Key presses

We move on to a (very) simple recording session. Start a terminal emulator (e.g xterm) and your favorite editor. Move the pointer to one of the terminal windows and start Xnee.
 
   xnee -o exmaple2.xnr --device-event-range 2-3 --time 5 --loops 20
Move the pointer to the other terminal windows and get focus (e.g click the window frame) After 5 seconds you can type whatever you want to record (20 press/relase of the keyboard are recorded). We are done, you have recorded your first session! Leave the desktop as it is and go for the next example.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.1.3 Simple replaying of your recorded file

Let Xnee repeat the stuff you did in the example above. Undo all changes in the editor that was made in the previous example. Move the pointer to one of the terminal windows and start Xnee.
 
   xnee -rep -f exmaple2.xnr --time 5
Move the pointer to the other terminal windows and get focus (e.g click the window frame) After 5 seconds you will see your typings in the example above being repeated.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.1.4 Simple recording of mouse motions

We move on to another simple recording session. Start a terminal emulator (e.g xterm). Move the pointer to one of the terminal windows and start Xnee.
 
   xnee -o exmaple3.xnr --device-event-range 5-6 --time 5 --loops 20
Move the pointer to the other terminal windows and get focus (e.g click the window frame) After 5 seconds you can move the pointer around (20 motion events are recorded).


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.1.5 Simple replaying of your recorded file

Let Xnee repeat the stuff you did in the example above.. Move the pointer to a terminal windows and start Xnee.
 
   xnee -rep -f exmaple3.xnr --time 5
After 5 seconds you will see your mouse motions in the example above being repeated.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.1.6 Example session files

The example file above (example1.xnr) is a session file that has been delivered with the sources (allthough not installed), rpm and with the Xnee Documentation Package. The file(s) can be found:
Distribution Location
RPM /usr/lib/xnee/sessions
Source ./sessions/
Document Package ./sessions/


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.2 Modes

Xnee has three modes: The distributiion mechanism can be used together with the other two.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.2.1 Record

When record mode is used Xnee receives a copy of the data sent to and from the X server. The copy is printed to either stdout or a file. Xnee can record more data than only mouse and keyboard events.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.2.2 Replay

When replay mode is used Xnee reads data from a file or stdin. These data is either sent to the server (if it is a keyboard or a mouse event) or used to synchronise with (if any of the other data).


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.2.3 Distribution

Xnee can distribute mouse and keyboard events to multiple displays. The distribution mechanism can be used when recording as well as when replaying.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.3 Ranges

What data to record is specified using ranges. Ranges has a start value and a stop value. The following data can be recorded:

Xnee name X Protocol Name
core-requests Request
device-event Event
delivered-event Event
error Error
reply Reply
ext-requests.ext-major Extension Request
ext-requests.ext-minor Extension Request
ext-replies.ext-major Extension Reply
ext-replies.ext-minor Extension Reply
To find out what number belongs to what data name, you can use the --print-data-name' option. For an explanation on the X protocol data, please read the "X Record Extension Library" or the "Record Extension Protocol Specification".


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.4 First and last motion event

Xnee has the ability to skip recording of succesive motion events with no other data in between. This option is intended to reduce the number of data recorded by leaving out unnecessary data. This feature can be invoked with the --first-last flag.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.5 Delay

Sometimes when Xnee starts recording data, the keyrelease (due to pressing and releasing RETURN to execute the Xnee command line) is recorded. This single keyrelease (with no corresponding keypress) might confuse the X server. With the --time <secs> option Xnee can be paused for secs seconds.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.6 Verbose

When enabling verbose mode (--verbose) Xnee prints a lot of information about it's state. This option is only intended for debugging.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.7 Human printouts

Sometimes it's hard to decide what data to use when synchronising. To do this you simply have to see what data is printed out when recording. Instead of reading the data number, s tring representation of the data is printed out. To enable this option, use the "--human-printouts"


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.8 Resource file

Xnee's behaviour can be set using a prepared file containing the settings to be used.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.8.1 Resource file syntax

`display displayname'
This sets the display to record or send events to when replaying
`file <file-name>'
Use the file <file-name> when replaying
`out <file-name>'
Redirect printouts to <file-name> (stdout is default)
`err <file-name>'
Redirect error printouts to <file-name> (stderr is default)
`resource <file-name>'
Use resource named <resource-name>
`plugin <file-name>'
Use the lib pointed out by file name as plugin.
`first-last'
Sets the first-last option to true
`everything'
Tells Xnee to record everything.
`mouse'
Tells Xnee to record mouse events.
`keyboard'
Tells Xnee to record keyboard eventes.
`loops <n>'
How many data to record. -1 means for ever.
`k-log'
Record 1000 data.
`10k-log'
Record 100 000 data.
`100k-log'
Record 100 000 data.
`m-log'
Record 1000 000 data.
`verbose'
Turns on verbose mode
`buffer-verbose'
Turns on verbose mode showing replay buffers
`time <secs>'
Pauses Xnee for secs seconds
`stop-key modifier key'
Recording/replaying stops when pressing modifier + key.
See chapter "Stop key syntax" and "Stop modifier syntax" for syntax
`future-clients'
TO BE DOCUMNETED
`all-clients'
TO BE DOCUMNETED
`human-printouts'
Print recorded data in a human friendlier format
`record'
Use record mode
`replay'
Use replay mode
`distribute <LIST>'
Sets the list of displays to distribute events to
`device-event-range <X-LIST>'
Sets the list of device events to record to <X-LIST>
`delivered-event-range <X-LIST>'
Sets the list of delivered events to record to <X-LIST>
`error-range <X-LIST>'
Sets the list of errors to record to <X-LIST>
`request-range <X-LIST>'
Sets the list of requests to record to <X-LIST>
`reply-range <X-LIST>'
Sets the list of replies to record to <X-LIST>
`extension-request-major-range <X-LIST>'
Sets the list of extension request major to record to <X-LIST>
`extension-request-minor-range <X-LIST>'
Sets the list of extension request minor to record to <X-LIST>
`extension-reply-major-range <X-LIST>'
Sets the list of extension reply major to record to <X-LIST>
`extension-reply-mainor-range <X-LIST>'
Sets the list of extension reply minor to record to <X-LIST>

LIST is a comma separated list if displays, e.g 192.168.1.2:9,10.0.0.2:1

RANGE is either a single data name or number or a range between two such (seperated with a "-")

X-LIST is a comma separated list of RANGE, e.g 12-15,17,22-29,KeyPress-MotionNotify,ButtonPress


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.8.2 Stop key syntax

You can set the key by entering one character or the keycode for the character you wish to use


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.8.3 Stop modifier syntax

You can set the modifier to any of the following
`Shift or Shift'
Modifier is set to the Shift key
`LockMask or Lock'
Modifier is set to the Lock key
`Control or ctrl'
Modifier is set to the Control key
`Mod1Mask or m1m'
Modifier is set to
`Mod2Mask or m2m'
Modifier is set to
`Mod3Mask or m3m'
Modifier is set to
`Mod4Mask or m4m'
Modifier is set to
`Mod5Mask or m5m'
Modifier is set to
`Alt_L'
Modifier is set to Alt_L
`Alt_L'
Modifier is set to Alt_R
`Alt'
Modifier is set to Alt_L and Alt_R
`Shift_R'
Modifier is set to Shift_R
`Shift_L'
Modifier is set to Shift_L
`Shift'
Modifier is set to Shift_L and Shift_R
`Control_R'
Modifier is set to Control_R
`Control_L'
Modifier is set to Control_L
`Control'
Modifier is set to Control_L and Control_R
`Scroll'
Modifier is set Scroll
`Caps_Lock'
Modifier is set Caps Lock
`AnyModifier or any'
Modifier is set to any of the modifier
`none or 0'
No modifier is used

You can also specify the keycode for the modifier you wish to use


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.9 Invoking Xnee

The mode(s) Xnee shall use and the ranges to use can be set by either: The three can be used together or alone. However, when given multiple specifications to a setting that can take one value (e.g printout redirection, number of data to record) the latest specification is used.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.9.1 Command line syntax

To get information about how to use Xnee's command line options please use the man page(s).


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.9.2 Resource file

To use a resource file use the --resource option, e.g xnee --resource xnee/resources/netscape.xns


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.9.3 Recorded file

To use a recorded file use the --file option, e.g xnee --file user1_session.xnee


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.10 Stopping Xnee

Stopping Xnee when recording or replaying can be done as follows


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.10.1 user specified modifier and key

It is possible to specify a modifier (e.g Control button) and a key (e.g 'a') that will stop the Xnee session. When using this option make sure that the modifier/key is not used in any way by the applications you recording.
[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.10.2 number of data to record

By specifying the number of data to record Xnee stops when this number num,ber of data is received from the server. When replaying the same amount of data is replayed.
[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.10.3 sending a SIGTERM signal (e.g pressing CTRL-C in a terminal window)

The easiest way to send a signal to a process is by launching Xnee from a terminal window (e.g xterm). By pressing Control-c xterm sends the SIGTERM signal to Xnee. When replaying it can sometimes be hard to move the pointer into the terminal window (e.g if a lot of motion events were recorded that will let you compete with Xnee on where the mouse pointer shall be located. Beleive me, you'll end up lossing that battle).


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.11 Using Xnee plugins

Xnee supports plugins since version 1.07. For information about how to write plugins, download the source code and look at the plugin example which shall be delivered with Xnee.
[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3. Xnee Installation


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.1 Installation from source (tar.gz) with the configure script

To unpack, build and install Xnee from the sourcefiles do the following:
`Download the source files into a directory'

`Unzip the source file'
gunzip xnee-1.0.tar.gz

`Untar the source file'
gunzip xnee-1.0.tar

`Enter the Xnee directory'
gunzip cd xnee-1.0

`Generate the makefiles'
./configure --prefix=<PATH TO INSTALLATION DIR>

`Build Xnee'
make clean all

`Install (as root)'
make install


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.2 Installation from source (tar.gz) with default Makefile

To unpack, build and install Xnee from the sourcefiles do the following:
`Download the source files into a directory'

`Unzip the source file'
gunzip xnee-1.0.tar.gz

`Untar the source file'
gunzip xnee-1.0.tar

`Enter the Xnee directory'
gunzip cd xnee-1.0

`Build Xnee'
make -f Makefile.xnee clean all

`Copy the Xnee binary (src/cli/xnee) to a directory'
E.g cp src/cli/xnee /usr/local/bin


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.3 Installation from SOURCE RPM


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.4 Installation from RPM

Use the rpm command. E.g rpm --install xnee-0.9-1.i386.rpm


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.5 Installation from CVS

See the Xnee Developer Manual


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4. Deinstallation


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5. Examples


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.1 Recorder


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.1.1 Recording a netscape session

Start one terminal exmulator (e.g xterm) Start Xnee,
 
   xnee -p  &
======= TBD


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.2 Recorder


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.3 Replayer

TBD


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.4 Distributor

TBD


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

6. synchronisation


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

6.1 Why synchronise

To understand why synchronisation during replay is needed an example is given.

In this example only mouse and keyboard events are recorded. Think of a session with a web browser.

During record the following is done:

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.

During replay the following is done:


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

6.2 How to synchronise

Instead we could record some more data than just the mouse and keyboard events.

During record the following is done:

The non-mouse-or-keyboard events recorded (window created & text displayed) are record for synchronisation purposes.

During replay the following is done:


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

6.3 Synchronisation is needed

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:


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

6.3.1 Different data for different kind of sessions

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.

The solve to the the problem of finding out what data to use as synchronisation data one can:


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

6.3.2 Slow replay session due to too many synchronise data

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 replaying session.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

6.3.3 X protocol is rich

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.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

6.3.4 Different data sent

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.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

6.4 Buffers and timeouts

To enable synchronisation Xnee buffers data:

For every data during replay that hasn't been sent (as when recorded) Xnee pauses for a short while. If the data is sent to Xnee, everything is fine. If the data isn't sent it is stored in the buffer of unsynchronised data. If the number of unsynchronise data is getting to high, Xnee will eventually exit with an error code (see man page(s)).


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

7. Xnee Requirements


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

7.1 Runtime requirements

Xnee requirements: You can use Xnee in replaying mode without RECORD extension if synchronisation is turned off.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

7.2 Development requirements

For development requirements, please look at the DEVELOPMENT file that is distributed with all packages and with CVS.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

8. FAQ

`When setting ranges (integers), how do I know what numbers belong to X11 data?'
You can either type the name directly (e.g MotionNotify) or you can use the print-xxx-name options.

`Can Xnee record more than one display?'
No, but we are considering adding the functionality (see the TODO file)

`Will you put up a source tree so that I can join ?'
You can find a CVS tree (soon) at Sourceforge. You are more than welcome to join

`Is there a GUI frontend for Xnee ?'
No !

`Can I write a GUI frontend for you ?'
Yes !

`What license is Xnee released under ?'
GPL http://www.gnu.org/copyleft/gpl.html

`Why GPL?'
We think: And of course I think it would be a great kick for my ego to have other people using my programs (especially if the alternative is a non-free program on a non-free operating system).

`Why the name Xnee?'
We wanted to use a recursive acronym, as GNU ("GNU's Not Unix'). After having read the Wine documentation, I thought that Xnee is not an Event Emulator would work fine. Since Xnee is Not an Event Emulator but rather a XEvent generator. Emulation is not part of the game here.... .... it just sounds nice!

`Can you add xxx functionality to Xnee'
Send an email to xnee@sandklef.com and we'll consider it.

`When starting Xnee I get noticed that I am missing RECORD extension'
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:

`Where do I send questions?'
xnee@sandklef.com


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

A. Copying This Manual


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

A.1 GNU Free Documentation License

Version 1.2, November 2002

 
Copyright © 2000,2001,2002 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA  02111-1307, USA

Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.

  1. PREAMBLE

    The purpose of this License is to make a manual, textbook, or other functional and useful document free in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others.

    This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software.

    We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.

  2. APPLICABILITY AND DEFINITIONS

    This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law.

    A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language.

    A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them.

    The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none.

    The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words.

    A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called "Opaque".

    Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only.

    The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text.

    A section "Entitled XYZ" means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as "Acknowledgements", "Dedications", "Endorsements", or "History".) To "Preserve the Title" of such a section when you modify the Document means that it remains a section "Entitled XYZ" according to this definition.

    The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License.

  3. VERBATIM COPYING

    You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3.

    You may also lend copies, under the same conditions stated above, and you may publicly display copies.

  4. COPYING IN QUANTITY

    If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects.

    If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.

    If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public.

    It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.

  5. MODIFICATIONS

    You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:

    1. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission.

    2. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement.

    3. State on the Title page the name of the publisher of the Modified Version, as the publisher.

    4. Preserve all the copyright notices of the Document.

    5. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.

    6. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below.

    7. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice.

    8. Include an unaltered copy of this License.

    9. Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence.

    10. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission.

    11. For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein.

    12. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles.

    13. Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version.

    14. Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any Invariant Section.

    15. Preserve any Warranty Disclaimers.

    If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles.

    You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard.

    You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one.

    The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.

  6. COMBINING DOCUMENTS

    You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers.

    The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work.

    In the combination, you must combine any sections Entitled "History" in the various original documents, forming one section Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements."

  7. COLLECTIONS OF DOCUMENTS

    You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects.

    You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.

  8. AGGREGATION WITH INDEPENDENT WORKS

    A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an "aggregate" if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the Document is included an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document.

    If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate.

  9. TRANSLATION

    Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warrany Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail.

    If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title.

  10. TERMINATION

    You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.

  11. FUTURE REVISIONS OF THIS LICENSE

    The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/.

    Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

B. Index

Jump to:   B   C   D   E   F   G   H   L   M   P   Q   R   S   W  

Index Entry Section

B
background1.3 Background

C
can Xnee record more than one display8. FAQ
can Xnee record more than one display8. FAQ
command line syntax2.9.1 Command line syntax

D
development requirements7.2 Development requirements
distributing2.2.3 Distribution

E
Example session file2.1.6 Example session files

F
FDL, GNU Free Documentation LicenseA.1 GNU Free Documentation License
features1.2 Xnee features

G
Getting started2.1 Getting started with Xnee
GUI frontend for Xnee8. FAQ

H
how does xnee work1.4 How does it work
how to synchronise6.2 How to synchronise

L
license8. FAQ

M
missing RECORD extension8. FAQ
modes2.2 Modes

P
plugins2.11 Using Xnee plugins

Q
questions is sent where?8. FAQ

R
ranges2.3 Ranges
recording2.2.1 Record
replaying2.2.2 Replay
requirements7. Xnee Requirements
Resource file syntax2.8.1 Resource file syntax
runtime requirements7.1 Runtime requirements

S
SIGTERM2.10.3 sending a SIGTERM signal (e.g pressing CTRL-C in a terminal window)
stop key2.10.1 user specified modifier and key
stop modifier2.10.1 user specified modifier and key
stopping xnee2.10 Stopping Xnee
synchronisation6. synchronisation

W
When setting ranges (integers), how do I know what numbers belong to X11 data?8. FAQ
why gpl8. FAQ
why name it Xnee8. FAQ
why synchronise6.1 Why synchronise

Jump to:   B   C   D   E   F   G   H   L   M   P   Q   R   S   W  


[Top] [Contents] [Index] [ ? ]

Table of Contents

1. Introduction
1.1 Short description
1.2 Xnee features
1.3 Background
1.4 How does it work
2. Usage
2.1 Getting started with Xnee
2.1.1 Simple replay
2.1.2 Simple recording of Key presses
2.1.3 Simple replaying of your recorded file
2.1.4 Simple recording of mouse motions
2.1.5 Simple replaying of your recorded file
2.1.6 Example session files
2.2 Modes
2.2.1 Record
2.2.2 Replay
2.2.3 Distribution
2.3 Ranges
2.4 First and last motion event
2.5 Delay
2.6 Verbose
2.7 Human printouts
2.8 Resource file
2.8.1 Resource file syntax
2.8.2 Stop key syntax
2.8.3 Stop modifier syntax
2.9 Invoking Xnee
2.9.1 Command line syntax
2.9.2 Resource file
2.9.3 Recorded file
2.10 Stopping Xnee
2.10.1 user specified modifier and key
2.10.2 number of data to record
2.10.3 sending a SIGTERM signal (e.g pressing CTRL-C in a terminal window)
2.11 Using Xnee plugins
3. Xnee Installation
3.1 Installation from source (tar.gz) with the configure script
3.2 Installation from source (tar.gz) with default Makefile
3.3 Installation from SOURCE RPM
3.4 Installation from RPM
3.5 Installation from CVS
4. Deinstallation
5. Examples
5.1 Recorder
5.1.1 Recording a netscape session
5.2 Recorder
5.3 Replayer
5.4 Distributor
6. synchronisation
6.1 Why synchronise
6.2 How to synchronise
6.3 Synchronisation is needed
6.3.1 Different data for different kind of sessions
6.3.2 Slow replay session due to too many synchronise data
6.3.3 X protocol is rich
6.3.4 Different data sent
6.4 Buffers and timeouts
7. Xnee Requirements
7.1 Runtime requirements
7.2 Development requirements
8. FAQ
A. Copying This Manual
A.1 GNU Free Documentation License
B. Index

[Top] [Contents] [Index] [ ? ]

Short Table of Contents

1. Introduction
2. Usage
3. Xnee Installation
4. Deinstallation
5. Examples
6. synchronisation
7. Xnee Requirements
8. FAQ
A. Copying This Manual
B. Index

[Top] [Contents] [Index] [ ? ]

About this document

This document was generated using texi2html

The buttons in the navigation panels have the following meaning:

Button Name Go to From 1.2.3 go to
[ < ] Back previous section in reading order 1.2.2
[ > ] Forward next section in reading order 1.2.4
[ << ] FastBack previous or up-and-previous section 1.1
[ Up ] Up up section 1.2
[ >> ] FastForward next or up-and-next section 1.3
[Top] Top cover (top) of document  
[Contents] Contents table of contents  
[Index] Index concept index  
[ ? ] About this page  

where the Example assumes that the current position is at Subsubsection One-Two-Three of a document of the following structure:

This document was generated by Henrik Sandklef on June, 24 2003 using texi2html