Here is a Vocola 2 extension, Keys. It uses a different
method of generating synthetic keystrokes and mouse events than
SendDragonKeys, namely the Windows' SendInput
call. This allows it to generate events unavailable with
SendDragonKeys including:
Windows key shortcuts (e.g., {win+shift+right} to
move current window to other monitor) (*)
Independent presses and releases of keys and mouse buttons (e.g., use one voice command to press the left mouse button, then move the mouse, then use a second voice command to release the mouse button)
Presses of new keys available on modern keyboards like
{VolumeMute} or {MediaNextTrack}
Key combinations like @ and {ctrl+@}
that SendDragonKeys cannot send directly due to a [Dragon bug].
(*) - As of DNS 12, Windows key shortcuts can also be pressed using
SendSystemKeys, but not SendDragonKeys, using
modifier name "win"; e.g.,
SendSystemKeys({win+shift+left}).
For now, Keys has one procedure, SendInput, whose usage
is a superset of that of SendDragonKeys (with English key
names). Here are some examples:
say hello world
= Keys.SendInput("Hello world!{enter}I am @ home{! 4}{enter}");
other monitor = Keys.SendInput({win+shift+right}); # Windows 7+ shortcut
mute volume = Keys.SendInput({VolumeMute});
(hold|release) the control key = Keys.SendInput({ctrl_$1});
# really the primary mouse button:
(hold|release) the left button = Keys.SendInput({LeftButton_$1});
type naïve the hard way
= Keys.SendInput(na{alt_hold}
{numkey0}{numkey2}{numkey3}{numkey9}
{alt_release}ve);
# remember Vocola 2 & Dragon use the Windows-1252 code page:
type naïve the easy way
= Keys.SendInput(naïve);
SendInput is immune to the doubling/dropping
bug and has speed comparable to SendDragonKeys rather
than the much slower SendSystemKeys. The main drawback is
that you cannot use SendInput to send events to elevated
windows when User Account Control (UAC) is turned on. Lesser drawbacks
are that, unlike SendDragonKeys, already pressed keys do
modify the sent characters (e.g., held shift key makes a into A) and the
keys are sent completely asynchronously so waits may be required when
mixing SendInput and other actions. I'm also not sure that
every character works correctly on non-standard US keyboards yet
(SendDragonKeys is known to fail here). Note also that you
cannot invoke {win+l} (i.e., lock computer) or
{ctrl+alt+Del} with any form of synthetic events for
security reasons.
Follow the usual
instructions for installing Vocola 2 extensions; note that all three
of the included files must be placed in the extensions
directory in order for the extension to work.
Here are some of the new keys available for pressing:
Win, LeftWin, RightWin,
Apps, F17, F18, F19,
F20, F21, F22, F23,
F24, BrowserBack,
BrowserFavorites, BrowserForward,
BrowserHome, BrowserRefresh,
BrowserSearch, BrowserStop,
LaunchApp1, LaunchApp2,
LaunchMail, LaunchMediaSelect,
MediaNextTrack, MediaPlayPause,
MediaPreviousTrack, MediaStop,
VolumeDown, VolumeMute, and
VolumeUp
As always, key names are case insensitive. You do not need to have a
key physically present on your keyboard in order to virtually press it.
{Apps} is a new modifier, the Windows applications key,
which has a small picture of selecting from a menu on my keyboard at
least. I believe it is usually equivalent to the menu you get when you
do a right-click in most applications (also
{shift+f10}).