Speedworker II User Manual
(Last revision v2.17, 26/9/02)

Author: John Jones (JxJ)
Contact: johnj@postmaster.co.uk
Website: www.jxj.co.uk

Copyright 2002

Disclaimer

I WILL NOT BE HELD RESPONSIBLE FOR ANY LOSS/DAMAGE OR OTHER DETRIMENTAL EFFECT CAUSED BY THIS SOFTWARE.
THIS SOFTWARE IS PROVIDED 'AS IS' WITH NO WARRANTY OF ANY KIND. FURTHERMORE I RESERVE ALL RIGHTS TO THE
SOFTWARE UNDER COPYRIGHT LAW.

Overview

The principle behind Speedworker is pretty simple - it's basic function is to watch the motion of the
mouse pointer across the whole screen. It then compares the motion of the mouse pointer to a set of
pre-defined 'vectors' corresponding to motion in the eight principle compass directions - up (N),
down (S), left (W), right (E), up-right (N-E), down-right (S-E), up-left (N-W) and down-left (S-W).
Several of these 'actions' are combined to create a 'pattern'. Once a particular pattern has been
'drawn' by the user, that pattern's particular effect is carried out (e.g. to execute a program).

Setting Up

Once you have downloaded the install program, set it up and run Speedworker. You will find a new icon
in the system tray (a.k.a. a fluorescent green pointer). Left click on the icon, and the Speedworker
control window will appear. If you look towards the bottom of the window, you will see three different
options - Angle Tolerance, Minimum Action Length and Timeout. These define the way that the program
reacts to mouse movement:

Angle Tolerance - This is related to how accurately you must draw the pattern, smaller tolerance
requires more accurate drawing. However, if you set the value too high, different actions will be
thought to occur simultaneously. This will actually make it harder to draw the pattern.
(Try 0.1 - 0.15 radians)

Minimum Action Length - This is how far you have to move the mouse in a particular direction before the
action is registered as having occurred. Don't set this too small, or strange things can happen!
(100-200 pixels is reasonable)

Timeout Period - Determines how long the previous actions are remembered (Don't set this to less than
about 80ms unless you're nickname's 'quick-draw McGraw'!)

Implementation

Although the basic principle of Speedworker is very simple, the way it is applied to patterns is
slightly more complicated. To put it succinctly, groups contain patterns which have assigned to them a
particular effect. If you click on the 'New Group' button, an edit window will appear. Most of the
options will be self-explanatory, but one thing deserves more attention. There is an option box called
'behaviour' - there are three different kinds of behaviour that a group can have:

Sub-group - Selecting this option means that before any of the patterns belonging to the group can be
executed, the overall group pattern must be drawn first. For example, if you had a group called
'General' and a sub-group called 'Notepad', to run notepad, you would draw the actions for 'General',
followed by the actions for 'Notepad'. It should be noted that once the group has been selected once,
you don't need to select it again, as the program remembers the last selected group.

Popup - This is very similar to the above, except that when the group pattern is drawn, a popup menu
appears listing all the sub group patterns. The program still remembers the last used group, so you can
have sub-patterns with their own actions as well.

Direct Mapping - For quick access to particular programs, select direct mapping. This ignores the group
pattern, and checks only for the sub-pattern, regardless of the last-select group. A group popup will
still be show when the group pattern is drawn, but it won't set the current group.

Example

1) After loading Speedworker for the first time, bring up the application window by clicking on the
system-tray icon.
2) Select the 'New Group' button. A window will appear with options for editing the name, behaviour and
actions of the group. Name the group 'Direct' and set the behaviour to direct-mapping. Now click on OK.
3) Select the 'Direct' menu item in the list, then click on 'New Pattern'. Fill in the window as follows:
        Name: File Explorer
        Behaviour: Open File (you actually don't have any choice here yet)
        Act On: explorer
4) Click on 'Edit Actions' and click on the buttons corresponding to the actions 'Right, Left, Right,
Left' in that order. You should find that the number '3232' appears in the text box. If you make a
mistake, just delete the entries from the text-box.
5) Close the window, then click on 'OK'. Close the main application window by clicking anywhere but on it.
6) Wave the mouse (carefully) 'Right','Left','Right','Left'. Windows file explorer should appear.

External vs. Internal Patterns

  Some people may have noticed the 'Internal Patterns/Externals Patterns' option at the bottom-left of the
window. External patterns can be installed by other programs that want to use the Speedworker interface -
for example, S-Player on my website installs a set of patterns that can be used to control it. In most
ways, you can edit these in exactly the same way as with internal patterns, except that you have no
control over creating and destroying the groups and patterns.

Tips

1) When using the sub-group implementation, have a common set of actions for the sub patterns in each
group - that way, you only have to remember the overall group patterns.
2) There is nothing to stop you installing two patterns in the same group with the same actions - this
can be a problem, but you can also use it as a kind of multiple-task effect, as both patterns will execute
at the same time. You can also produce multiple effects by having the program execute a batch file.
3) If you want to see what you're doing whilst using Speedworker, activate the display window by right-
clicking on the Speedworker icon in the system tray.

Help, Suggestions & Bugs

  This project is still in early days, so let me know if you run into any bugs (I need to know exactly how
the problem occurs to help - working out bugs in this program is extremely difficult, because it deals
with 'nasty' parts of Windows). It was written on Windows 2000, so there shouldn't be too many problems :).
If you want help using the program just contact me. Suggestions are always welcome too - part of the reason
that there was no official version 1.0 was because I rewrote the whole thing due to comments from a friends.

Source Code

  I'm happy to discuss the way this program works if anyone is interested, but I'm not sure if I'm ready to
make the source code available... yet. Send me an email if you want to discuss it.