The JoyMouse Network
A NeatTools Application
Key Images
| user mode |
access to switches and sliders, but not to editing |
| developer mode |
accessed from user mode by ctrl-F7 |
| profiles |
linear/quadratic/cubic relationships between mouse cursor speed and joystick
deflection |
Downloads
Introduction
The NeatTools Joy-Mouse data flow network shown in
user-mode and
developer-mode allows precise positioning of the
mouse cursor under control of a joystick. This can be either a standard computer
joystick, or a custom one (e.g. small chin joystick for a quadriplegic) that
delivers XY signals to analog inputs of an computer interface module such
as TNG-3. The network manages two subsidiary inputs for control of
the left mouse click and a keypress (e.g. backspace). This can be edited
easily to accommodate another key or else right mouse click. Additional controls
can be added as needed. The current network uses only 4 of the 16 available
inputs (8 analog and 8 digital) of TNG-3. .
The mouse cursor can still be controlled by the computer mouse and related
pointing devices (trackball, touchpad, etc.). This complex network exploits
many of the sophisticated features of NeatTools (e.g. Multiplexers,
Demultiplexers, Decoder, ClockDivider). In the linear mode
(proportional-control), the mouse cursor speed increases in direct proportion
to joystick deflection (once beyond a free-play zone that can be set by the
user). The adjustable nonlinear profiles in the quadratic and
cubic modes provide precise control of the cursor for small joystick
deflections, while allowing rapid movement for large deflections. After
calibration and/or adjustment, the joy-mouse network can be in the background
or minimized when in operation. If the user needs to return to it, the
<alt><tab> key sequence can be used to restore the joy-mouse
NeatTools window in focus; this will disable cursor motion by the joy-mouse
and allow the user to turn Enable off (see below).
Operation
The controls are as follows:
-
There is an overall Enable switch (left center).Only when this switch
is on (and the NeatTools/JoyMouse window is not in focus) will
the mouse cursor respond to the joystick.
-
The Joystick Type switch (lower left) selects computer
or custom type of joystick as indicated by either of the red LEDs.
-
When the custom joystick is used, it should be calibrated for full scale
(both extremes for each of x and y) by temporarily enabling the
Calibrate button (wider button below Enable button). Then,
with the joystick at rest, press the momentary Sample-Hold button.
-
For a custom joystick, the Button/Key Source switch (lower right)
selects whether mouse button(s) and/or keyboard keys are activated by
analog or digital inputs of TNG-3 (for TNG-2, only analog inputs
are available).
-
For a computer joystick, which has its own buttons, the Button/Key
Source switch should be set to analog (because, when there are
no switches connected to the digital inputs of TNG-3, the button/key states
will be asserted by default, thus interfering with system operation). This
coupled switch setting is done automatically when one sets Joystick Type
to computer. However, this action can be (inadvertently) overridden
by subsequent actuation of the Button/Key Source switch. So beware.
-
The Button/Key Mode switch selects whether the mouse button(s) should
be operated in single-click (Stroke/Click) or drag (Depress)
mode when the signal is asserted. Normally it is best to leave this in
Depress mode. (Note that the nomenclature still reflects the original
intention of enabling autorepeat of keys that are kept depressed. This is
not achievable by use the depress input of NeatTools key objects. Rather,
pulse/timer objects would have to be included. This feature will be added
only if a need arises.)
-
The Resolution slider at top left controls the number of steps to
be resolved from the joystick signal (horizontal or vertical) after calibration.
This also affects the "gain" (see below), i.e. how fast the cursor will respond.
One should first try the higher range (such as the maximum value of 32).
-
The Free Play Limit Value slider delimits a range of joystick deflection
that will produce no mouse cursor motion. This feature is to ensure that
the mouse cursor remains stationary when the joystick is at or near the nominal
rest position.
-
The Profile pushbutton (upper right) selects any one of three
relationships for mouse cursor velocity
as a function of joystick deflection (in either horizontal or vertical dimensions
on computer display): Linear, Quadratic, or Cubic. Note
that the quadratic function (parabola) must be inverted (flipped) from the
second to the third quadrant (i.e. mouse velocity must be negative for negative
joystick deflections). Further, the functions are all displaced away from
the origin according to the width of the joystick free-play zone.
-
The slider pairs in the Quadratic and Cubic sections just below
the Profile section determine the coefficients (actually reciprocals
thereof) for the quadratic and cubic functions. The value shown
in the large integer-display objects is determined as the product of the
two integer values set by the sliders. This arrangement is designed to that
multiples of the value of one slider can be incremented according to the
value of the other slider in each pair.
-
Higher values lead to weaker mouse-cursor response (lower gain) for a given
joystick deflection. The choice of these parameters depends on display
resolution, (disabled) user needs, type of application to be controlled by
mouse, etc.
This page is maintained by
Edward Lipson
Last modified