advertisement

The Auto Type facility sends text and control sequences to another application to automate a data entry sequence into your genealogy application. Auto Type uses Templates to define a mix of field values, literal text, and control sequences that determine the contents of the data entry.

The Auto Type buttons send data to the current window in your preferred genealogy application.

The Control Panel includes one numbered button for each Auto Type Template defined in OraSettings for the current collection. Each button copies text to the application defined as the Target Application in OraSettings.

The tool tip for the numbered button shows the reminder text, if any, defined in OraSettings for the Auto Type Template.

Template

ORA constructs the text and controls sent to the target application using an Auto Type Template. An Auto Type Template is a Text Template that includes Control Sequences.

Here's an example Auto Type Template for Find a Grave:


[Name]{TAB}[Cemetery Name]{TAB}[City]<, [County]>
<, [State]>{TAB}[Record ID]

That's a relatively simple template that copies text into four input fields in the target application.

Advanced templates can control the target application by opening windows and performing other operations. Templates can be configured to alter their behavior based on which Auto Type button the user clicks.

It up to you to create templates to suit your source recording standards and conventions, and for the services and collections you use. A few minutes invested in writing a template may save hours of time processing records for a collection.

Caution! Applications expect typing to occur at human speeds, and they may perform a lot of processing on each keystroke if they are updating other controls or other windows as you type. Auto Type occurs at a close-to-human rate, i.e., it is deliberately slowed-down. Even so, it may overwhelm an application when you send text to it.

Before using an Auto Type Template, perform the keyboard input manually and watch for changes outside the textbox where you are typing. If the contents change, you should add delays into the Auto Type Template to avoid crashing the target application. It is common to need delays when a key sequence triggers an application to open or close a window.

Variables, Literal Text, and Alternatives

Auto Type Templates use the same notation for variables, literal text, and alternatives as used in Text Templates. Those topics are described on the Text Templates page. The rules are the same.

Control Sequences

Auto Type Templates also support control sequences. Control sequences are used to send keys that are not represented by a single character on the keyboard or are not visible as characters when you type them. They are also used to send key chords. A key chord is multiple keys pressed at the same time, such as CTRL and V which is the standard key sequence for pasting text.

A control sequence starts with "{" and ends with "}". The text inside must be one or more control sequence keywords or numbers. {TAB} is an example of a control sequence.

You may combine control sequence keywords using "+".

Templates can include all the special keys on a keyboard including {ALT}, {CTRL}, {ENTER}, {SHIFT}, {TAB}, and all function keys ({F1}, etc.).

ORA knows which keys are combined with other keys. For example, when a template contains {ALT+S} ORA sends the same events as if you had pressed ALT and S at the same time.

See Auto Type Keyboard Keywords for a list of Control Sequence keywords.

Escaping { and }

In ORA templates, you add the escape character "\" to use one of the special template characters as literal text. That method will not work with { and }. Those characters are not special within templates, they are only special within Auto Type sequences, and Auto Type uses the output of the template, it's not a part of template processing.

To send the { and } characters to the target application, you must add two escape characters before { and }, so \\{ and \\}. After the template is processed, the result will be \{ and \}, and that's what gets sent through to the Auto Type facility. It will see the escape characters and not treat those characters as the start and end of a control sequence. Instead, it will send them to the target application as text.

Delays

You may introduce delays into the sequence by indicating the length of the delay in milliseconds. For example, {1000} will delay for a full second, and {500} will delay for a half second. Delays should usually be specified by themselves because otherwise they will cause keys to remain down for the given interval, and the target application will only respond when the key is released.

You add delays to a template to avoid overwhelming the target application. For example, after a key sequence that triggers the target application to open a window, you may have to add a delay to allow the target application time to open the window.

Repeats

You may repeat a control sequence using, for example, {TAB*2}. The "*" indicates the next number is a repeat count, not a delay interval.

Speed

You may use the special control sequences {FAST}, {SLOW}, and {PERCHAR} to vary the speed that data is sent to the target application.

Auto Type defaults to slow. If you are confident the target application can accept text at a faster rate, you can insert {FAST} at the start of your template and Auto Type will proceed at a faster rate. You may mix {FAST} and {SLOW} in the same sequence.

You may customize the slow and fast speeds by specifying the delay time: {SLOW=800} will switch to slow mode and use an 800 millisecond delay between control sequences. The usual delay between control sequences is 500 milliseconds.

In slow mode, ORA adds a delay between each character of text. The default delay is 30 milliseconds. You can change the per-character delay using the PERCHAR keyword. {PERCHAR=50} will use a 50 millisecond delay between characters.

Target

You may use the special control sequence {TARGET=appname} to indicate which application should be the target of the Auto Type action.

{TARGET=appname} must be the first text in the template, and you cannot use conditional logic to produce it. It must be the first text in the template or it won't work.

You cannot use two or more {TARGET=appname} control sequences in a single template.

If ORA cannot find the application indicated by the appname parameter, it will issue a warning message and will not send any text to any application.

If you do not include a {TARGET=appname} control sequence, ORA will send the text to the application indicated by the Target Application property in OraSettings.

At the time of this writing, these are the appname values for the applications listed in the Target Application property in OraSettings:

Application AppName
Ancestris 11javaw:Ancestris
Ancestral Quest 16ancquest
Ancestral Sources 5.3.0ancestral sources
Brother's Keeper 7bk7w
Excelexcel
Family Historian 6fh
Family Tree Makerftm
Grampsgrampsw
Heredis 2020heredis
Legacy 9legacy
MS Wordwinword
Notepadnotepad
Notepad++notepad++
My Family Tree 9myfamilytree
MyHeritage Family Tree Buildermyheritage
RootsMagic 7rootsmagic
The Master Genealogist 9tmg9
WordPadwordpad

The AppNames shown here may work with versions of the programs other than the ones listed above. The AppName values were discovered using the given application version, but other versions were not tested.

For Ancestris, the AppName is "javaw", but that will be the value for any Java-based application running under Windows. When ORA sees the ":Ancestris" parameter, it knows to search for the application with the Appname "javaw" and with "Ancestris" in the title.

Limitations

Application Limits

Most programs will accept automated keystroke input, but the details vary by application. Some applications do not support all operations via the keyboard. Some applications support operations via the keyboard, but only when keyed directly by the end user, and not when sent from another application as part of automation.

A common issue is applications that cannot keep pace with the input. ORA adds delays between various operations to try and mimic the speed of a human operator, but it gets no feedback from the target application and cannot adjust on the fly the way a human operator can. You should add delays into your Auto Type templates to allow the target application to keep up.

ForegroundLockTimeout

The Auto Type feature will not work if your Windows system has been configured to prevent background windows from coming to the foreground automatically.

This behavior is controlled by a registry setting, ForegroundLockTimeout. The full path to the Registry value is:

HKEY_CURRENT_USER\Control Panel\Desktop\ForegroundLockTimeout

When ForegroundLockTimeout is set to zero, OraHost can bring another application to the front and send keystrokes to it. When ForegroundLockTimeout is not zero, OraHost cannot bring another application to the front.

Microsoft added the ForegroundLockTimeout property to prevent malware from jumping in front of other windows in order to accept keystrokes intended for another application or to divert your attention from the application you intend to use to some other application, such as a rogue adware application. Unfortunately, ForegroundLockTimeout interferes with legitimate programs that are acting on your behalf, such as when you ask ORA to send keystrokes to your genealogy application.

If you set ForegroundLockTimeout to zero, Auto Type will work. You incur a slight risk that malware on your PC will abuse the capability. If you have ant-virus software and you practice safe-computing, setting ForegroundLockTimeout to zero should not cause you any trouble. Many Windows PCs have ForegroundLockTimeout set to zero without the end user setting it that way manually.

To set ForegroundLockTimeout to zero, download the following file:

ForegroundLockTimeoutZero.reg

After downloading the file, double-click the file to request MS Windows to open it. MS Windows will ask you to confirm that you want to apply the registry changes. Accept the changes.

You must reboot your PC after changing ForegroundLockTimeout for the new value to take effect.

If you are unable to use the ".reg" file, you may not have permission to make Registry changes. Seek help from someone with administrator skills.

On This Page