It has some fixes and some new state tokens (well, actually a lot of new state tokens) that deal with the joystick. I got the missing POV tokens in, plus tokens to give info on various aspects of the state of your joystick. You can use the info to build the triggers (with loops) that some have asked for (like with sliders and joystick positions), or, use as modifiers when executing commands... maybe you'd want to check if the joystick is pushed forward when firing missiles to add some other or additional type of response. Just more stuff to play with, I guess ;)
As always, notes are below.
- Improvements
- Added missing POV/hat tokens (see docs for more
complete details):
{STATE_JOYSTICK[1|2]POVENABLED}. Indicates whether
or not POV is enabled for the indicated stick.
{STATE_JOYSTICK[1|2]POV[1|2|3|4]TYPE}. Indicates
the type of POV switching mode set in joystick
options.
{STATE_JOYSTICK[1|2]POV[1|2|3|4]}. Displays the
direction the indicated stick/POV controller is
being pressed (depends on switching mode).
{STATE_JOYSTICK[1|2]POV[1|2|3|4]_NUMERIC} - Use this
token to get the numeric value of the POV (for
finer level of control if the switching mode does
not suit the need).
- Added a whole BUNCH of new joystick state tokens
to give all kinds of info about your joystick's
state. You can use these for your stuff like
command modifiers or as triggers if used with some
fancy looping. There are like 28 different
types, so, I won't list them here (they're in the
docs in the tokens section). Finally a way to handle
some of the, 'analog' controls on joysticks ;)
- Added new action, 'Write Text to File'. This will
allow you to specify text to write to a file that
you choose. This action accepts tokens in both
the text and file boxes. As always, use with
caution ;)
- Bug Fixes
- Fixed issue where if listening was suspended,
'reject pending speech' was selected, and a
command was issued when the listening was off and
then enabled mid-command, the command would still
execute.
- Fixed POV options not saving properly on joystick
options page.
- Added some helper functionality to work with directional
keys in DirectX mode. Before, if you had numlock
on and issued a command to press a directional key,
the numpad numeric value for the same key would be
pressed. The helper code looks for certain elements
and helps produce a directional key press.
- Fixed issue where exec command dialog would not
save if referenced command was deleted before
saving profile.
v1.5.8.12
- Improvements
- Windows environment variables (such as %WINDIR%,
%APPDIR%, %PROGRAMFILES%, etc.) will be parsed
out any place that takes tokens. Note that the
environment variables need to be surrounded by
percent signs (%). You already knew that,
though ;)
- Bug Fixes
- Fixed introduced issue with linked profiles
from v1.5.8.11.
v1.5.8.11
- Improvements
- Added the ability to inhibit the execution
of multiple commands with hotkey shortcuts.
This is only available if all involved commands
have the, 'Shortcut is invoked only when all keys
are released' option set in the, 'When I press...'
Command Shortcut screen.
For instance, let's say you have three commands:
One that executes when F1 is released, and
another that executes when CTRL + F1 is released.
Before, if you pressed CTRL + F1 down and then
happened to release F1 first, the command associated
with F1 would execute, followed by the command
associated with CTRL + F1. In this release, only
the command associated with CTRL + F1 will be executed.
F1 will still execute when pressed on its own.
Apologies to anybody that's gotten used to this
behavior, but this is the way it should have been
since the beginning o_O.
- Added new data type: Date/Time. With the new data
type comes a new Set Date/Time feature, plus an
extra tab on the, Condition (If and Else If statements)
and Loop start screens. There are also some new
tokens that work exactly like the existing date and
time tokens (except the new tokens accept a variable
name). Plugin interface has been updated to include
the date/time values (this is now version 3... still
backward compatible).
v1.5.8.9
- Improvements
- Added yet another larger screen size,
mostly for those with 4k monitors that
maintain 100% scaling size (and not the
default 150%).
- Bug Fixes
- Fixed issue where grouped commands was
throwing an exception on key press when
focused and collapsed.
- Fixed issue with dynamic commands containing
tokens breaking under certain conditions.
v1.5.8.8
- Improvements
- Added, 'Select All' and 'Select None' in
command action list. 'Select all' has
always been there (CTRL + A)... just needed
some user interface to indicate that it's
there ;)
- Show latest entry only added to log as an
option.
- Bug Fixes
- Fixed issue where End Condition 'Exit when
condition met/not met' were not exiting.
v1.5.8.7
- Improvements
- Added 'Else If' action for condition blocks.
Reduces the need for multiple begin/end
blocks. You can finally do if/else if/else.
- Added Loop start/Loop End actions. While a
condition is met, you can loop a section of
your command. Loops can be nested.
- Added explicit 'Exit Command' action (no longer
need to add a jump and set a flag unless you
want to). Added this to make it a little bit
more obvious. Note this also does not stop
any executed subcommands (it just exits).
- Moved delete, export, import and create to
new, 'More' button on the main screen. The
profile lists are becoming a lot longer than
I had anticipated, so I've consolidated
everything under one button to clean things up
a bit.
- Added new global hotkey option for listening:
'Listen then stop listening after recognition
completes.' This turns on listening only
until the speech engine recognizes speech.
The command itself can be recognized or
unrecognized. This is available for hotkeys,
mouse and joystick button.
- Listening and stop command icons on main screen
now include hotkey info in tool tips. The
info provided also indicates if the hotkeys are
overridden at the profile level.
- Bug Fixes
- Fixed suffix issues when using condition actions.
- Fixed mouse button state tokens not reporting
correctly when multiple buttons pressed.
- Fixed keyboard state tokens sometimes sticking
on first access.
- Mic level bar not drawing correctly for larger
size screens has been fixed.
v1.5.8.6
- Improvements
- New set of tokens for state of keyboard,
mouse and joystick. What I see this being
used for mostly is to alter behavior for
commands based on the state of your devices.
For instance, if the right mouse button
is down when I say, 'fire weapons',
missiles are fired instead of photons
(lol). Also, if the 'x' button is down,
fire both photons and missiles.
There is one keyboard token:
{STATE_KEYSTATE:key}
'key' parameter can be any key you can type in
a token:
'A', 'B', 'C', 'ß', 'ö', 'ñ', 'ç',
as well as keys you can't type in a token:
ENTER, TAB, LCTRL, ARROWR (see documentation
for full list).
So, if you want to test to see if F10 is
down, just use the following token:
{STATE_KEYSTATE:F10}. To test for the letter
'A', just use this token: {STATE_KEYSTATE:A}
If a keyboard key is down, the replaced value
of the token will be "1". If the key is not
down, the value will be "0".
There are five mouse tokens:
{STATE_LEFTMOUSEBUTTON}
{STATE_RIGHTMOUSEBUTTON}
{STATE_MIDDLEMOUSEBUTTON}
{STATE_FORWARDMOUSEBUTTON}
{STATE_BACKMOUSEBUTTON}
These should be pretty straight forward. If you
want to test for the right mouse button, use
token {STATE_RIGHTMOUSEBUTTON}.
If the mouse button is pressed down, the replaced
value will be "1". If the mouse button is not
pressed, the value will be "0".
Lastly, we have two joystick tokens:
{STATE_JOYSTICK1BUTTON:buttonNumber}
{STATE_JOYSTICK2BUTTON:buttonNumber}
The, 'buttonNumber' parameter is the number of the
button on the desired stick. To test if button 10
is down on joystick 2, just use this token:
{STATE_JOYSTICK2BUTTON:10}
Once again, if the button is down on the tested
stick, the replaced value will be "1". If the
button is not down, the value will be "0".
- Added token {STATE_AUDIOLEVEL} token to indicate
the currently reported audio level from the speech
engine. The replaced value will be from "0" to
"100".
- Added token {STATE_LISTENING} to test if VoiceAttack
is, 'listening'. If, 'listening' is on, the replaced
value will be "1". If, 'listening' is off, the
replaced value will be "0".
- Added token {STATE_SHORTCUTS} to test if VoiceAttack's
shortcuts are enabled. If shortcuts are enabled, the
replaced value will be "1". Otherwise, the replaced
value will be "0".
- Added token {STATE_JOYSTICKBUTTONS} to test if VoiceAttack's
joystick buttons are enabled. If joystick buttons are
enabled, the replaced value will be "1". Otherwise, the
replaced value will be "0".
v1.5.8.5
- Bug fixes
- More DirectX mapping issues resolved.
- Updated order of event handling on
startup to see if it helps with some of
the exceptions that are cropping up
related to the speech engine.
v1.5.8.3
- Bug fixes
- Fixed application launch issue introduced in
v1.5.8.2.
v1.5.8.2
- Improvements
- Mouse action screen organized a little bit.
Move actions are now on one tab, click actions
are on another. Navigating to mouse actions
from the command screen is now from a flyout
menu with move and click items.
- Mouse move position can now be set as relative
from any corner. Top-left is still default.
- Mouse move position can now be set by text or
token. If the value in place is evaluated as
a valid integer, the position will be used.
Otherwise, no movement will occur (info given
in log). If the evaluated coordinate is outside
of the boundaries of the area, the boundary will
still be used.
- The 'wait for exit' option for launching
applications now allows you to capture the stdout
and exit codes of apps that provide them. Simply
add a text variable name for stdout and/or an
integer variable name for the exit code and those
variables will be filled. Access the values via
token or test using conditional (if) statements.
- Added ability to set a pause duration to a decimal
variable. If the variable value is Not Set, the
pause will be zero seconds. Note that decimal
variables can be set to random values ;)
- 'Add pause' action on command screen is now set by
flyout menu. You can choose either, 'Add pause'
or, 'Add variable pause'.
- Bug fixes
- Fixed font of main screen not following new sizing
rules.
- Fixed dynamic tts caching replaced token values.
- Fixed issue where duplicating set decimal action
was not capturing both random values.
- Fixed issue where jump marker/jump located both
in a suffix was not jumping to proper location.
- Fixed issue with execute command by name not
finding dynamic commands.
- Fixed 'stop command if target window focus is lost'
not unchecking if, 'repeats continuously' was
selected.
v1.5.8.1
- Improvements
- Support added for three screen sizes :
Normal, larger, largest. The setting for this
is on the options screen. I decided that the
screen sizes should be independent of the
Windows scaling. It was a lot more work, but
I think that forcing the user to have to globally
change their font to get a larger screen is not a
good idea.
- Added option, 'Disable Acoustic Echo Cancellation'
to attempt to aid in recognition.
- Added dynamic responses to text-to-speech. Just as with
using dynamic commands, you can now use square brackets to
have more dynamic responses with text-to-speech.
Before, if you wanted a random response with slight
variation, you would have to explicitly indicate each
variation:
[fire;launch;dispatch] the [missiles;weapons;porcupine] will result
in a random respons of:
fire the missiles
fire the weapons
fire the porcupine
launch the missiles
launch the weapons
launch the porcupine
dispatch the missiles
dispatch the weapons
dispatch the porcupine
- Bug Fixes
- Recorder screen now actually resizable. Looks like
I either started that job or reverted some code.
Works now ;)