Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ xtmconvert(1) — RISC iX 1.2

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

xtmrecord(1)

xtmexecute(1)

xwd(1)

XTMCONVERT(1)  —  UNIX Programmer’s Manual

NAME

xtmconvert − convert test scripts to and from other formats

SYNOPSIS

xtmconvert [-s] fromfile tofile

DESCRIPTION

Xtmconvert converts test scripts in internal format to or from summary or output formats.  The type of conversion performed depends on the ending characters of the file names. 

File Name Syntax

The file names given to xtmconvert must end in ".scr", ".out", or ".sum".  The first file name is the file to be converted.  The second file name is the file where the results of the conversion are placed. 

To convert from internal format to output format, use:

xtmconvert testscript.scr testscript.out

To convert from internal format to summary format, use:

xtmconvert testscript.scr sumscript.sum

To convert from output format to internal format, use:

xtmconvert oldscript.out newscript.scr

To convert from summary format to internal format, use:

xtmconvert testscript.sum testscript.scr

If no file names or incorrect file names are given, xtmconvert will display the correct invocation syntax and terminate with a non-zero exit status value. 

Running Xtmconvert

Xtmconvert may be run in an X terminal emulator or on a terminal.  If you run xtmconvert on a terminal, make sure that the DISPLAY environment variable is set to the name of the desired X server. 

Xtmconvert uses the X server to convert between key codes and the corresponding key names. 

If no error occurs during the conversion, xtmconvert will terminate with an exit status value of zero.  If an error occurs during the conversion, xtmconvert will terminate with a non-zero exit status value. 

If the -s option is used then any recorded image data or checksums contained in the test script are left out of the converted test script.  This is useful if you are moving test scripts to a different machine, since the image data or checksums are almost always machine-specific. 

Contents of a Test Script

All test scripts must contain a version number.  The version number is checked when the test script is converted to help deal with future changes to the test script format.  If a test script does not have a version number or has a version number that xtmconvert does not know how to convert, xtmconvert will terminate with a non-zero exit status. 

A test script may contain four types of input actions:

key or mouse button presses or releases
This input action contains which key or mouse button was pressed or released.

relative pointer motions
This input action contains the relative offset from the current pointer position to the new pointer position. This input action has a maximum range of 15 pixels from the current pointer position. If the pointer must move further than 15 pixels then a pointer jump input action must be used.

pointer jumps
This input action contains x and y coordinates for the pointer to move to. The coordinates are zero in the upper left corner of the screen, the x coordinate increases horizontally from left to right, and the y coordinate increases vertically from top to bottom.

time delays
This input action contains the amount of time to delay before going on to the next input action.

Each input action has a time delay before the input action is performed.  Except for the time delay input action, the input actions have a limited range of 0 to 65535 milliseconds (approximately one minute).  The time delay input action has a range of 0 to 2,147,483,647 milliseconds (approximately 25 days). 

A test script may contain four types of requests for verification of image data from the display:

mouse
The image data to be verified comes from the window that is a child of the root window and that contains the mouse (pointer) at the time that the request occurs.

screen
The image data to be verified comes from the entire screen.

top The image data to be verified comes from the window that is a child of the root window and that is the "top" window (as defined by the X server) at the time that the request occurs. 

partial
The image data to be verified comes from a partial window specified by the user.

The method of image data verification depends on the checksum mode.  If the checksum mode is turned off when the request occurs, the image data is verified by comparing the image data with image data stored in the test script.  If the checksum mode is turned on when the request occurs, the image data is verified by comparing a checksum computed from the image data with a checksum stored in the test script. 

A test script may contain checksum mode commands that turn the checksum mode on or off.  The checksum mode is turned off at the start of each test script. 

To change the checksum mode for all or part of an existing test script, convert the test script to output format, edit the output format of the test script to add or modify any desired checksum mode commands, and convert the test script back to internal format. 

A test script may also contain comments, which have no effect on the execution of a test script. 

Internal Format

The data in the internal format of the test script is organized in a way that is convenient for xtmrecord(1) and xtmexecute(1) to use, but is not easily readable by human beings or portable across different computer systems. 

The internal format of the test script may be created by xtmconvert or xtmrecord(1) and is the required format of the test script if it is to be played back by xtmexecute(1). 

The internal format of the test script contains all of the data in the test script.  It is stored in a file whose name ends in ".scr". 

A test script in internal format with no recorded image data for the image data comparison requests would have to be updated (by running xtmexecute(1) with the -u option) before being used as a test script. 

Output Format

The data in the output format of the test script is organized in a way that is more portable across different computer systems.  The data is possible for a human being to understand, but the level of detail tends to obscure what the test script is doing. 

The output format of the test script may be created by xtmconvert or by an editor, but if you want to create a test script with an editor it is much easier to create a test script in the summary format. 

The output format of the test script is stored in a file whose name ends in ".out". 

The output format of the test script contains all of the data in the test script.  When converting between internal format and output format all of the information in the test script is preserved. 

When xtmconvert is converting from internal format to output format the version number is converted to a line containing:

VERSION [versionnumber]

The versionnumber value holds the current version number of the test script. 

When xtmconvert is converting from internal format to output format each input action is converted to a line containing the following fields:

input action name
This field contains the name of the input action. The contents of this field is described for each type of input action below.

DEV [devicenumber]
The devicenumber value holds the value for the device that generated the input action.  This is a provision for future support of multiple (distinguishable) devices.  It should be 0 for most X servers.  For most Hewlett Packard X servers it will have the following values:

0 Pointer jump input actions generated by xtmrecord(1) or the Input Synthesis extension.  These may occur at several places in the test script. 

1 Pointer jump and relative pointer motion input actions generated by the X server.  Also mouse button press or release input actions. 

3 Key press or release input actions. 

input action specific information
This field contains information specific to the type of the input action. The contents of this field are described for each type of input action below.

TIME (ms) [timedelay]
The timedelay value holds the time delay value associated with the input action. 

COUNT [count]
The count value holds an input action counter to help make it easier to tell how many input actions are in the test script. 

This field must be present when converting a test script from output format to internal format, but the count value is ignored.  This allows someone to modify the input actions in a test script in output format without later causing an error while converting the test script back to internal format. 

A key press input action has an input action name of KEY_DOWN and puts:

KEY [keyname]

in the input action specific information field. 

A key release input action has an input action name of KEY_UP and puts:

KEY [keyname]

in the input action specific information field. 

The keyname value is the X server’s name for that key on the X server’s keyboard.  It may be composed of a single character for common keys (such as a for the key labled ‘A’ on the keyboard), or it may be composed of multiple characters for other keys (such as bracketleft for the key labeled ‘[’ on the keyboard). 

The mouse buttons do not have a key name defined for them by the X server.  Xtmconvert uses Button1, Button2, Button3, and so forth as the equivalent of the key name for the mouse buttons.  Otherwise, the mouse button input actions are treated the same as the key input actions. 

A pointer jump input action has an input action name of JUMP and puts:

X [xpixloc] Y [ypixloc]

in the input action specific information field.  The xpixloc and ypixloc values are the x and y coordinates of the pixel that the pointer will move to. 

A relative pointer motion input action has an input action name of MOVE and puts:

X [xpixmov] Y [ypixmov]

in the input action specific information field.  The xpixmov and ypixmov values are the relative offsets from the current pointer position to the new pointer position. 

A time delay input action has an input action name of TIME and puts nothing in the input action specific information field.  Also, a time delay input action does not have a device field. 

Requests for verification of image data from the display are converted to six header lines containing the following fields:

MATCH #matchnum
The matchnum value holds an counter of the number of requests for image data verifications in the test script.  It will start at 1 for the first request, and may range up to 99 (the maximum number of requests permitted in one test script). 

TYPE[typeletter]
The typeletter value holds a letter describing the type of the request:

m The request is to verify the window that is a child of the root window and that contains the mouse at this point in the test script. 

p The request is to verify a user-specified partial window on the X server. 

s The request is to verify the entire screen on the X server. 

t The request is to verify the window that is a child of the root window and that is the "top" window (as defined by the X server) at this point in the test script. 

REP[repcount]
The repcount value holds the number of times to retry the image data verification before deciding that the verification has failed. 

INTV[interval]
The interval value holds the amount of time to wait (in milliseconds) before each retry. 

CNT[count]
The count value holds the number of bytes of compressed image data for this request. 

CM[checksummode]
The checksummode value holds the checksum mode that was in effect for this request. 

S#screennum
The screenum value holds the number of the screen that contained the image data. 

WX[windowxorg]
The windowxorg value holds the x coordinate of the upper left corner of the window that contained the image data. 

WY[windowyorg]
The windowyorg value holds the y coordinate of the upper left corner of the window that contained the image data. 

WW[windowwidth]
The windowwidth value holds the width of the window that contained the image data (in pixels). 

WH[windowheight]
The windowheight value holds the height of the window that contained the image data (in pixels). 

BW[borderwidth]
The borderwidth value holds the border width of the window that contained the image data (in pixels). 

WN"windowname"
The windowname value holds the name of the window that contained the image data. 

X[xpixloc]
The xpixloc value holds the window-relative x coordinate of the image data. 

Y[ypixloc]
The ypixloc value holds the window-relative y coordinate of the image data. 

W[width]
The width value holds the width of the image data (in pixels). 

H[height]
The height value holds the height of the image data (in pixels). 

D[depth]
The depth value holds the depth of the image data. 

F[format]
The format value holds the format of the image data. 

XOFF[xoffset]
The xoffset value holds the horizontal offset of the image data. 

BO[byteorder]
The byteorder value holds the byte order of the image data. 

BU[bitmapunit]
The bitmapunit value holds the bitmap unit of the image data. 

BBO[bitmapbitorder]
The bitmapbitorder value holds the bitmap bit order of the image data. 

BP[bitmappad]
The bitmappad value holds the bitmap pad boundary of the image data. 

BPL[bytesperline]
The bytesperline value holds the number of bytes for each line (padding included) of the image data. 

BPP[bitsperpixel]
The bitsperpixel value holds the number of bits for each pixel of the image data. 

VC[visualclass]
The visualclass value holds the type of the color map of the window that contained the image data. 

RM[redmask]
The redmask value holds the red mask for the image data. 

GM[greenmask]
The greenmask value holds the green mask for the image data. 

BM[bluemask]
The bluemask value holds the blue mask for the image data. 

BPR[bitsperrgb]
The bitsperrgb value holds the log (base 2) of the number of distinct color values in the image data. 

CE[colormapentries]
The colormapentries value holds the number of color entries in the color map of the window that contained the image data. 

C[ncolors]
The ncolors value holds the number of color structures used to describe the color entries in the color map of the window that contained the image data. 

The header lines will be followed by one line for each color map entry containing the following fields:

PIXEL[pixelnumber]
The pixelnumber value holds the color map entry number for this color. 

RED[redvalue]
The redvalue value holds the red value for this color. 

GREEN[greenvalue]
The greenvalue value holds the green value for this color. 

BLUE[bluevalue]
The bluevalue value holds the blue value for this color. 

FLAGS[flags]
The flags value holds the flags value for this color. 

If the checksum mode if off, the color map entry lines will be followed by many lines containing the image data in a (run length encoded) compressed form.  The image data is compressed by counting the number of bytes of the same value in sequence in the image data (as read from the X server).  The count is output as two ascii characters representing hexadecimal digits.  The byte value follows as two more ascii characters representing hexadecimal digits.  This is repeated until all of the image data is encoded. 

If the checksum mode is on or the image data has been stripped from the test script, only the header lines will remain.  The image data is often stripped when moving a test script from one type of computer to another, since it is machine-dependent. 

A checksum mode command is converted to a line containing:

CHECKSUMS checksummode

The checksummode value holds the current checksum mode of the test script (either OFF or ON). 

A comment is converted to a line containing:

COMMENT comment

The comment may contain any printable characters except a ">".  It should be limited to less than 70 characters. 

Summary Format

The data in the summary format of the test script is organized in a way that is easier for a human being to understand and edit. 

The summary format of the test script (except for image verfication data) is stored in a file whose name ends in ".sum".  The image verification data is stored in multiple files, one file for each image data verification request in the test script. 

If the checksum mode if off, the recorded image data is stored in xwd(1) format in a file whose name is created by replacing the ".sum" with ".mnn". 

If the checksum mode is on, the checksum and other needed image description information is stored in a file whose name is created by replacing the ".sum" with ".cnn". 

The nn in the file name is replaced by a number corresponding to the image data verification request in the test script.  The number will be 01 for the first request in the test script, 02 for the second request, and so forth up to 99 (the maximum number of requests in one test script). 

The summary format of the test script may be created by xtmconvert or by an editor. 

When xtmconvert is converting from internal format to summary format some of the information in the test script is not preserved:

Information about which device(s) generated the input actions is not preserved. 

All adjacent relative pointer motion and pointer jump input actions are consolidated into one pointer jump input action to the final pointer position.  The time delay for the pointer jump input action is the sum of the time delays for all of the consolidated input actions. 

The time delays for all adjacent key or mouse button input actions are summed up into one time delay before the next input action that is not a key or mouse button input action. 

The key and mouse button input actions are converted into a form that is easier for a human being to read:

The key codes associated with each key input action are converted to their corresponding key name.  The key name is the X server’s name for that key on the X server’s keyboard.  It may be composed of a single character for common keys (such as a for the key labled ‘A’ on the keyboard), or it may be composed of multiple characters for other keys (such as bracketleft for the key labeled ‘[’ on the keyboard). 

A key press input action followed by a key release input action for the same key is converted into a key stroke. 

A key stroke that has a multi-character key name is converted to a line containing:

<keyname>

A key stroke that has a single-character key name is converted to that character.  The first such character starts a new line, and any immediately following single characters are put on the same line. 

A key press input action not followed by a key release input action for the same key is converted to a line containing:

<KEY_DOWN keyname>

A key release input action not following a key press input action for the same key is converted to a line containing:

<KEY_UP keyname>

The mouse buttons do not have a key name defined for them by the X server.  Xtmconvert uses Button1, Button2, Button3, and so forth as the equivalent of the key names for the mouse buttons.  Otherwise, the mouse button input actions are treated the same as the key input actions. 

The other types of input actions are converted to lines containing:

<JUMP xpixloc ypixloc timedelay>
This is a pointer jump input action. The xpixloc and ypixloc values are the x and y coordinates of the pixel that the pointer will move to.  The timedelay value is the number of milliseconds to delay before moving the pointer. 

<MOTION xpixmov ypixmov timedelay>
This is a relative pointer motion input action. The xpixmov and ypixmov values are the relative offsets from the current pointer position to the new pointer position.  The timedelay value is the number of milliseconds to delay before moving the pointer. 

<TIME timedelay>
This is a time delay input action. The timedelay value is the amount of time to delay before going on to the next input action. 

The requests for verification of image data from the display are converted to lines containing:

<MATCH MOUSE[ filename screennum windowx windowy]>
The image verification data came from the window that was a child of the root window and that contained the mouse at the time that the request was put in the test script.

<MATCH PARTIAL[ filename screennum windowx windowy]>
The image verification data came from a user-specified partial window on the X server at the time that the request was put in the test script.

<MATCH SCREEN[ filename screennum windowx windowy]>
The image verification data came from the entire screen on the X server at the time that the request was put in the test script.

<MATCH TOP[ filename screennum windowx windowy]>
The image verification data came from the window that was a child of the root window and that was the "top" window (as defined by the X server) at the time that the request was put in the test script.

The name of the image verification data file associated with a particular request is placed as filename in the request. 

The image verification data file holds all of the information about the image data except for the screen number and the x and y coordinates of the window containing the image data.  Those values are placed in the request. 

If there is no image verification data in the test script, then none of the optional data will be placed in the request. 

The version number is converted to a line containing:

<VERSION versionnumber>

The versionnumber value holds the current version number of the test script. 

A checksum mode command is converted to a line containing:

<CHECKSUMS checksummode>

The checksummode value holds the current checksum mode of the test script (either OFF or ON). 

A comment is converted to a line containing:

<COMMENT comment>

The comment may contain any printable characters except a ">".  It should be limited to less than 70 characters. 

When xtmconvert is converting from summary format to internal format some of the information needed for the internal format of the test script is not in the summary format of the test script.  The additional information needed is taken from .Xdefaults variables. 

Example of an Output Format Test Script

The internal format of this test script was created by recording actual user actions using xtmrecord(1). 

This test script starts with the cursor on the right half of a display.  It moves the cursor to the left half of the display and types "echo it worked!" followed by the "Return" key.  It then moves the cursor back to the right half of the display and terminates. 

Contrast this with the summary format of the same test script shown below. 

The Count field was deleted from the end of the input action lines in this example to make it fit in the document. 

VERSION [1]
JUMP       DEV [0]   X [ 547]  Y [ 339]  TIME (ms) [     0]
MOTION     DEV [1]   X [  -1]  Y [   0]  TIME (ms) [   768]
MOTION     DEV [1]   X [  -1]  Y [   0]  TIME (ms) [   199]
MOTION     DEV [1]   X [   0]  Y [  -1]  TIME (ms) [    79]
MOTION     DEV [1]   X [   0]  Y [  -1]  TIME (ms) [    20]
MOTION     DEV [1]   X [  -2]  Y [  -2]  TIME (ms) [    60]
MOTION     DEV [1]   X [  -1]  Y [  -1]  TIME (ms) [    19]
MOTION     DEV [1]   X [  -1]  Y [   0]  TIME (ms) [    19]
MOTION     DEV [1]   X [  -2]  Y [  -1]  TIME (ms) [    19]
MOTION     DEV [1]   X [  -2]  Y [  -2]  TIME (ms) [    19]
MOTION     DEV [1]   X [  -1]  Y [  -2]  TIME (ms) [    20]
MOTION     DEV [1]   X [  -2]  Y [  -2]  TIME (ms) [    19]
MOTION     DEV [1]   X [  -1]  Y [  -1]  TIME (ms) [    19]
MOTION     DEV [1]   X [  -2]  Y [  -2]  TIME (ms) [    35]
MOTION     DEV [1]   X [  -2]  Y [  -1]  TIME (ms) [    11]
MOTION     DEV [1]   X [  -1]  Y [  -1]  TIME (ms) [    13]
MOTION     DEV [1]   X [  -2]  Y [  -2]  TIME (ms) [    20]
MOTION     DEV [1]   X [  -3]  Y [  -3]  TIME (ms) [    20]
MOTION     DEV [1]   X [  -2]  Y [  -2]  TIME (ms) [    19]
MOTION     DEV [1]   X [  -3]  Y [  -2]  TIME (ms) [    19]
MOTION     DEV [1]   X [  -3]  Y [  -1]  TIME (ms) [    19]
MOTION     DEV [1]   X [  -2]  Y [  -3]  TIME (ms) [    19]
MOTION     DEV [1]   X [  -3]  Y [  -1]  TIME (ms) [    19]
MOTION     DEV [1]   X [  -3]  Y [  -1]  TIME (ms) [    20]
MOTION     DEV [1]   X [  -2]  Y [  -2]  TIME (ms) [    19]
MOTION     DEV [1]   X [  -3]  Y [  -2]  TIME (ms) [    20]
MOTION     DEV [1]   X [  -2]  Y [  -1]  TIME (ms) [    19]
MOTION     DEV [1]   X [  -2]  Y [  -1]  TIME (ms) [    20]
MOTION     DEV [1]   X [  -1]  Y [   0]  TIME (ms) [    19]
MOTION     DEV [1]   X [  -1]  Y [  -2]  TIME (ms) [    20]
MOTION     DEV [1]   X [  -2]  Y [   0]  TIME (ms) [    20]
MOTION     DEV [1]   X [  -1]  Y [  -2]  TIME (ms) [    19]
MOTION     DEV [1]   X [  -2]  Y [  -1]  TIME (ms) [    19]
MOTION     DEV [1]   X [  -2]  Y [  -1]  TIME (ms) [    19]
MOTION     DEV [1]   X [  -2]  Y [  -2]  TIME (ms) [    27]
MOTION     DEV [1]   X [  -1]  Y [  -1]  TIME (ms) [    32]
MOTION     DEV [1]   X [  -1]  Y [  -1]  TIME (ms) [    39]
MOTION     DEV [1]   X [  -1]  Y [   0]  TIME (ms) [    40]
MOTION     DEV [1]   X [  -1]  Y [  -2]  TIME (ms) [    19]
MOTION     DEV [1]   X [  -1]  Y [   0]  TIME (ms) [    39]
MOTION     DEV [1]   X [  -1]  Y [   0]  TIME (ms) [    19]
MOTION     DEV [1]   X [  -1]  Y [  -2]  TIME (ms) [    20]
MOTION     DEV [1]   X [  -1]  Y [   0]  TIME (ms) [    19]
MOTION     DEV [1]   X [  -1]  Y [   0]  TIME (ms) [    19]
MOTION     DEV [1]   X [   0]  Y [  -2]  TIME (ms) [    19]
MOTION     DEV [1]   X [  -2]  Y [   0]  TIME (ms) [    20]
MOTION     DEV [1]   X [   0]  Y [  -1]  TIME (ms) [    59]
MOTION     DEV [1]   X [  -1]  Y [   0]  TIME (ms) [    19]
MOTION     DEV [1]   X [  -1]  Y [  -1]  TIME (ms) [    19]
MOTION     DEV [1]   X [  -2]  Y [   0]  TIME (ms) [   140]
KEY_DOWN   DEV [3]   KEY [e]             TIME (ms) [  2429]
KEY_UP     DEV [3]   KEY [e]             TIME (ms) [    39]
KEY_DOWN   DEV [3]   KEY [c]             TIME (ms) [   199]
KEY_UP     DEV [3]   KEY [c]             TIME (ms) [    60]
KEY_DOWN   DEV [3]   KEY [h]             TIME (ms) [    79]
KEY_UP     DEV [3]   KEY [h]             TIME (ms) [    59]
KEY_DOWN   DEV [3]   KEY [o]             TIME (ms) [   169]
KEY_UP     DEV [3]   KEY [o]             TIME (ms) [    80]
KEY_DOWN   DEV [3]   KEY [space]         TIME (ms) [   439]
KEY_UP     DEV [3]   KEY [space]         TIME (ms) [   100]
KEY_DOWN   DEV [3]   KEY [i]             TIME (ms) [   220]
KEY_UP     DEV [3]   KEY [i]             TIME (ms) [    99]
KEY_DOWN   DEV [3]   KEY [t]             TIME (ms) [   329]
KEY_UP     DEV [3]   KEY [t]             TIME (ms) [    80]
KEY_DOWN   DEV [3]   KEY [space]         TIME (ms) [  1109]
KEY_UP     DEV [3]   KEY [space]         TIME (ms) [    99]
KEY_DOWN   DEV [3]   KEY [w]             TIME (ms) [   450]
KEY_UP     DEV [3]   KEY [w]             TIME (ms) [   100]
KEY_DOWN   DEV [3]   KEY [o]             TIME (ms) [    19]
KEY_UP     DEV [3]   KEY [o]             TIME (ms) [   100]
KEY_DOWN   DEV [3]   KEY [r]             TIME (ms) [   119]
KEY_UP     DEV [3]   KEY [r]             TIME (ms) [    59]
KEY_DOWN   DEV [3]   KEY [k]             TIME (ms) [   240]
KEY_UP     DEV [3]   KEY [k]             TIME (ms) [    79]
KEY_DOWN   DEV [3]   KEY [e]             TIME (ms) [   159]
KEY_UP     DEV [3]   KEY [e]             TIME (ms) [    40]
KEY_DOWN   DEV [3]   KEY [d]             TIME (ms) [   229]
KEY_UP     DEV [3]   KEY [d]             TIME (ms) [    59]
KEY_DOWN   DEV [3]   KEY [Shift_L]       TIME (ms) [   480]
KEY_DOWN   DEV [3]   KEY [1]             TIME (ms) [   849]
KEY_UP     DEV [3]   KEY [1]             TIME (ms) [    99]
KEY_UP     DEV [3]   KEY [Shift_L]       TIME (ms) [    39]
KEY_DOWN   DEV [3]   KEY [Return]        TIME (ms) [  1920]
KEY_UP     DEV [3]   KEY [Return]        TIME (ms) [   100]
MOTION     DEV [1]   X [   1]  Y [   0]  TIME (ms) [  1920]
MOTION     DEV [1]   X [   1]  Y [   0]  TIME (ms) [    20]
MOTION     DEV [1]   X [   1]  Y [   0]  TIME (ms) [    19]
MOTION     DEV [1]   X [   2]  Y [   1]  TIME (ms) [    19]
MOTION     DEV [1]   X [   3]  Y [   1]  TIME (ms) [    20]
MOTION     DEV [1]   X [   3]  Y [   2]  TIME (ms) [    19]
MOTION     DEV [1]   X [   3]  Y [   0]  TIME (ms) [    19]
MOTION     DEV [1]   X [   4]  Y [   2]  TIME (ms) [    20]
MOTION     DEV [1]   X [   4]  Y [   0]  TIME (ms) [    33]
MOTION     DEV [1]   X [   4]  Y [   1]  TIME (ms) [     6]
MOTION     DEV [1]   X [   2]  Y [   2]  TIME (ms) [    20]
MOTION     DEV [1]   X [   2]  Y [   2]  TIME (ms) [    19]
MOTION     DEV [1]   X [   1]  Y [   0]  TIME (ms) [    19]
MOTION     DEV [1]   X [   2]  Y [   2]  TIME (ms) [    19]
MOTION     DEV [1]   X [   2]  Y [   2]  TIME (ms) [    20]
MOTION     DEV [1]   X [   2]  Y [   1]  TIME (ms) [    19]
MOTION     DEV [1]   X [   2]  Y [   1]  TIME (ms) [    19]
MOTION     DEV [1]   X [   1]  Y [   2]  TIME (ms) [    19]
MOTION     DEV [1]   X [   1]  Y [   2]  TIME (ms) [    19]
MOTION     DEV [1]   X [   1]  Y [   2]  TIME (ms) [    19]
MOTION     DEV [1]   X [   3]  Y [   2]  TIME (ms) [    20]
MOTION     DEV [1]   X [   2]  Y [   4]  TIME (ms) [    19]
MOTION     DEV [1]   X [   2]  Y [   4]  TIME (ms) [    19]
MOTION     DEV [1]   X [   2]  Y [   3]  TIME (ms) [    19]
MOTION     DEV [1]   X [   2]  Y [   3]  TIME (ms) [    19]
MOTION     DEV [1]   X [   2]  Y [   4]  TIME (ms) [    19]
MOTION     DEV [1]   X [   2]  Y [   2]  TIME (ms) [    20]
MOTION     DEV [1]   X [   2]  Y [   3]  TIME (ms) [    19]
MOTION     DEV [1]   X [   3]  Y [   4]  TIME (ms) [    20]
MOTION     DEV [1]   X [   3]  Y [   4]  TIME (ms) [   108]
MOTION     DEV [1]   X [   3]  Y [   3]  TIME (ms) [     1]
MOTION     DEV [1]   X [   2]  Y [   3]  TIME (ms) [     1]
MOTION     DEV [1]   X [   2]  Y [   1]  TIME (ms) [    12]
MOTION     DEV [1]   X [   1]  Y [   1]  TIME (ms) [     1]
MOTION     DEV [1]   X [   1]  Y [   2]  TIME (ms) [    20]
MOTION     DEV [1]   X [   2]  Y [   0]  TIME (ms) [     5]
MOTION     DEV [1]   X [   0]  Y [   1]  TIME (ms) [     8]
MOTION     DEV [1]   X [   1]  Y [   1]  TIME (ms) [    19]
MOTION     DEV [1]   X [   1]  Y [   1]  TIME (ms) [    19]
MOTION     DEV [1]   X [   0]  Y [   1]  TIME (ms) [    20]
MOTION     DEV [1]   X [   1]  Y [   0]  TIME (ms) [    19]
MOTION     DEV [1]   X [   2]  Y [   2]  TIME (ms) [    20]
MOTION     DEV [1]   X [   2]  Y [   1]  TIME (ms) [    19]
MOTION     DEV [1]   X [   0]  Y [   1]  TIME (ms) [    19]
MOTION     DEV [1]   X [   1]  Y [   0]  TIME (ms) [    59]
TIME                                     TIME (ms) [  1179]
MOTION     DEV [1]   X [   0]  Y [   0]  TIME (ms) [     2]
JUMP       DEV [0]   X [ 556]  Y [ 357]  TIME (ms) [     0]

Example of a Summary Format Test Script

The internal format of this test script was created by recording actual user actions using xtmrecord(1). 

This test script starts with the cursor on the right half of a display.  It moves the cursor to the left half of the display and types "echo it worked!" followed by the "Return" key.  It then moves the cursor back to the right half of the display and terminates. 

Contrast this with the output format of the same test script shown above. 

<VERSION 1>
<JUMP    472  283   2217>
echo
<space>
it
<space>
worked
<KEY_DOWN Shift_L>
1
<KEY_UP Shift_L>
<Return>
<TIME  10690>
<JUMP    556  357   2811>
<TIME   1179>
<JUMP    556  357      2>

.Xdefaults Variable Usage

Xtmconvert recognizes the following .Xdefaults variables (shown with their default values):

xtmconvert.MatchRetries:       3

xtmconvert.RetryInterval:      5000

xtmconvert.KeyDevice:          0

xtmconvert.PointerDevice:      0

xtmconvert.KeyInterval:        50

xtmconvert.StrokeInterval:     50

All of these variables are only used when converting a summary format test script to an internal format test script. 

The MatchRetries variable controls the number of times a failing image data verification will be retried when the test script is executed using xtmexecute(1).  It has a range of 0 to 32767 retries. 

The RetryInterval variable controls the interval in milliseconds between each retry when the test script is executed using xtmexecute(1).  It has a range of 0 to 2,147,483,647 milliseconds (approximately 25 days). 

The KeyDevice variable holds the value for the keyboard device.  This is a provision for future support of multiple (distinguishable) keyboard devices (the default is 3 for Hewlett Packard X servers).  It has a range of 0 to 14. 

The PointerDevice variable holds the value for the pointer (mouse) device.  This is a provision for future support of multiple (distinguishable) pointer devices (the default is 1 for Hewlett Packard X servers).  It has a range of 0 to 14. 

The KeyInterval variable holds the time delay before each key transition.  It has a range of 0 to 2,147,483,647 milliseconds (approximately 25 days). 

The StrokeInterval variable holds the time delay after the down transition of a key and before the up transition of the same key in a key stroke.  It has a range of 0 to 2,147,483,647 milliseconds (approximately 25 days). 

SEE ALSO

xtmrecord(1), xtmexecute(1), xwd(1). 

COPYRIGHT

Copyright 1986, 1987, 1988, 1989 by Hewlett-Packard Corporation

Copyright 1986, 1987, 1988, 1989 by the Massachusetts Institute of Technology

Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of M.I.T. not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. 

Hewlett-Packard and M.I.T. make no representations about the suitability of this software for any purpose.  It is provided "as is" without express or implied warranty. 

This software is not subject to any license of the American Telephone and Telegraph Company or of the Regents of the University of California. 

7th Edition

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026