The a2x FAQ

The a2x FAQ

Currently maintained by Simon Crosby by voice, using DragonDictate for DOS v3, and a2x.

This FAQ contains distilled pearls of wisdom about a2x, a piece of public domain software designed to interface the DragonDictate speech recognition system on a PC to a workstation running the X window system. The key thing about a2x is that you can also use it with other dictation systems, because all it requires is ASCII input, which it converts into keyboard events on your X terminal.

A related pseudo-FAQ, my DragonDictate FAQ contains some information about DragonDictate and speech recognition systems for all types of computers, much of which is relevant to a2x, but not specific to it. That FAQ is now largely out of date, and is kept for hysterical raisins (historical reasons) only.

These FAQs are direct copies (shortened where possible) of postings to the a2x mailing list, the SOREHAND mailing list, and the voice-users mailing list, as well as postings to the usenet newsgroup sci.med.occupational. Send contributions/corrections/updates/ideas to me.

The macros, and ASCII versions of the FAQs are also available by ftp, here (ftp://www.cl.cam.ac.uk/a2x-voice/) . These will be updated periodically to reflect the current status and contents of these web pages.


Contents

Just click on the topic you want to get to...


The a2x Mailing List

A mailing list of a2x users exists, to keep people abreast of any new developments. The mailing list is a2x-users@cl.cam.ac.uk; send requests to join to a2x-users-request@cl.cam.ac.uk. Subscription is not automated, so don't expect an immediate response, especially as my RSI has recently returned to haunt me.

Return To Contents List


Where to get a2x

The current version is now held on this site. It contains recent additions by Jonathan Epstein (epstein@ncbi.nlm.nih.gov) who has produced some enhancements to support an emulation of DDWIN's MouseGrid and use of Conditionals, which permit an a2x command to result in a different action depending upon which X window holds the focus when the command is uttered. This feature also facilitates the use of multiple DragonDictate vocabularies.

The current version is a2x.V1.02, which you can find here.

Previous versions of a2x were maintained by the X consortium. With the imminent demise of the X consortium, this will no longer be the case. Old versions may be on ftp.x.org as /R5contrib/a2x.tar.Z, or on the web here is the reference .

Return To Contents List


a2x Basics

(Mostly from the a2x man page)

a2x is designed to interface DragonDictate to the X Window System. a2x converts the ASCII output of DragonDictate into X device events. a2x is capable of manipulating both the keyboard and the pointer; depending on the applications, it is possible to use X hands-free through a2x.

a2x requires an X protocol extension to function. The XTEST, DEC-XTRAP, and XTestExtension1 extensions can be used. The XTEST extension was developed by the X Consortium for use in the X Test Suite, and an R5 patch to support the XTEST extension is available via anonymous ftp to export.lcs.mit.edu, as the file /pub/XTEST/R5fix-xtest-1. The DEC-XTRAP extension was developed by Digital Equipment Corp., and public versions are available for both R4 and R5. The XTEST extension has been incorporated as standard into the R6 server. The XTestExtension1 extension was originally developed for an old test suite done by an informal group known as the X Testing Consortium; the client-side library and some device-independent code exists in both the R4 and R5 core distributions, but only a couple sample servers (HP and X386) in the MIT distribution supports the extension (some product servers might though).

Note

From: Adrian Nye 


> >the file /pub/XTEST/R5fix-xtest-1.
> 
> this file no longer there -- I've been searching extensively for xtest
> for R5 and I can't find it anywhere.  I've found xtest for R6 on a number
> of sites but no R5.  If anyone can point me in the right direction, I'd
> be very thankful.  Sorry if I'm being a bonehead...

From: steffen@iexist.att.com
Date: Fri, 9 Sep 94 11:54:47 CDT
    
I tracked this down yesterday, it is now /pub/R5/fixes/fix-18.Z, but it is
an optional patch and may not have been applied.  Use xdpyinfo to get the
list of extensions.

The XTEST extension is compiled into the R6 X server by default if you
build X from the X Consortium distribution (at least on my Sun).  You probably
already have it: use xdpyinfo to check.

a2x was originally written for the XTEST extension, but both DEC-XTRAP and XTestExtension1 also work. The main difference as far as a2x is concerned is that XTEST permits time delays inside the X server, while with DEC-XTRAP and XTestExtension1 the delays are handled on the client side and hence can be somewhat less accurate, but time delays are rarely needed. In addition, XTestExtension1 does not provide a way to synthesize relative pointer motion, so the WarpPointer protocol request is used instead.

The Imakefile for a2x comes configured to use only XTEST, but you can configure it to compile in support for any or all of the extensions; a2x will automatically choose whichever extension is supported by the display. If you dynamically switch among different displays supporting different extensions, you will probably want to compile more than one extension into a2x. At the top of the Imakefile are #define's for BuildWithXTest, BuildWithXTrap, and BuildWithXTestExt1; simply set the ones you want to YES and the ones you don't want to NO. To see which extensions are supported by your X server, use xdpyinfo. Your server must have at least one of "XTEST", "DEC-XTRAP", or "XTestExtension1" in order to use a2x.

The Imakefile also comes configured by default to assume that DragonDictate version 1.01 is being used, although the actual version can be overridden on the a2x command line. If you normally use DragonDictate 1.01a or 2.0 or higher, then change the #define for OldDragonDictate to NO before building.

The documentation provided here is for using DragonDictate and a2x solely for work under X; the assumption is that you do not use DragonDictate with programs on the PC. If you use DragonDictate with programs on the PC, you may need to create dcom files for switching between PC and X use.

Return To Contents List


a2x In Operation

There are two ways to run DragonDictate: directly under DOS, and under DESQview/X. See the man page for more details.

The normal mode of operation is to use a telnet program on the PC, and telnet across to your workstation and log in. For this you need an Ethernet card or similar on the PC, and a telnet program such as provided by PC-NFS or other products. You may wish to try using rsh instead of telnet, but the performance may be substantially worse. If you do not have a network connection, it should be possible to use a terminal program and log in to the workstation over a serial line, but performance over a serial line will likely not be as good as over a network. In the telnet session, run the script DragonDictate provided with the a2x distribution. You should be able to speak this, by saying "DragonDictate", "[enter\ key]", "OK" (the "OK" being necessary to pop down the menu to permit execution to continue). This script simply clears the screen and starts up a2x. Clearing the screen is a convenience so that the focus of attention on the PC screen will be the DragonDictate menus. You can, of course, write your own script or simply run a2x directly.

a2x takes each ASCII character produced by DragonDictate and determines a key on the X keyboard that can be pressed and released to generate that character. If Shift and Control modifiers are necessary to generate the character, a2x will automatically press and release keys for those modifiers. For example, for the character 'A', a2x will typically have to press a Shift modifier key, press an 'a' key, release the 'a' key, and then release the Shift modifier key.

It is not necessary to perform all of your "typing" through a2x; you can mix a2x output with direct keyboard typing and direct pointer manipulation. But, you should normally only switch between direct input and a2x input when all keys and buttons are in the released state, to avoid confusing a2x. (One simple exception to this rule is that you can use a2x to press/release buttons and keys while directly moving the pointer with your hand.)

Return To Contents List


How do I build a2x ?


From: Tom Knotts 

> 		I have one general question. After downloading  the a2x
> 	software which compiler and which libraries do I need to compile
> 	the C-code. I am trying to run a2x over an X-Server. Who would
> 	know anything about interfacing the Dragon card to work with X.
> 

First, you do

imake -I/usr/local/lib/imake -DTOPDIR=/usr/a2x/X11R5

This builds a makefile with /usr/a2x/X11R5 the top directory (or
wherever you choose to put it)

Then when you type "make" you get:

cc -o a2x  a2x.o +O3    /usr/a2x/X11R5/lib/Xmu/libXmu.sl -lXtst 
			 /usr/a2x/X11R5/extensions/lib/libXext.sl
			 /usr/a2x/X11R5/lib/X/libX11.sl
	 		 -L/usr/lib/X11R5 -L/usr/lib/X11R4
			-lm

There are the libs you need. Notice /usr/lib/Xtstlib.a

From: Simon Crosby 

Alternatively:

type "xmkmf" to make the Imakefile
type "make" to make a2x -- easier this way !

Return To Contents List

What Use are DD's States ?


From: steffen@iexist.att.com

>    From: doug_bernard@tmai.com (Doug Bernard)

>    I've read a2x.ms.  One of my questions is whether I can command
>    DragonDictate to switch between multiple user-defined dictionaries.
>    
>    For example I'd like to set up the following dictionaries
>    (invoked by the voice commands shown in quotes):
>    
>     1)  "UNIX" i.e. command line strings, including predefined
>         aliases (of which I already use about 250)
>     2)  "VI" i.e. mnemonics for vi commands
>     3)  "CHAR" i.e. mnemonics for single characters, with u.c. and l.c.
>         subdictionaries
>     4)  "WORD" i.e. DD's real-life dictionary
>     5)  "C-PLUS-PLUS" for C++ keywords
>     6)  "User-App-n" for keywords in the user's app
>     7)  "MOUSE" to move and click the mouse
    
>    etc.
>    
>   The main point is that for me, by having a personal, structured user dictionary,
>    I organize my thought processes better, reduce the complexity of individual
>    mnemonics, and have fast look-up times.
>    
You can do this but I don't recommend it as it seems to be a style
carried over from a limited voice recognition system like SayIt or
Voice Navigator that had such poor recognition you had to limit the
active dictionary to around 50 words.  With DragonDictate you just use
naming convictions for voice macros, e.g. "go" to move the mouse and
"move" to move the cursor.  You will find you want to switch the above
dictionaries every few utterances once you have control of multiple
windows.  I have over 600 voice macros and less then 3%
misrecognitions or about 1 in 35 utterances.  With a limited system
like the Macintosh Voice
Navigator I gave up as it was extremely limited in power, took too
much time to program, and seemed to misunderstand or not hear at least
a quarter of my utterances.

You may also find it easier to say commands as words than the aliases
you have defined, e.g. I removed all my single letter aliases for UNIX
commands like find and make.

From: craig@mnemosyne.MicroUnity.com (Craig Hansen)

I'm a Kurzweil VOICE user, which supports multiple
user-defined dictionaries, and I, too prefer using a
single, large dictionary. In fact, I added vocabulary
elements to permit spelling out single characters without
changing mode. The problem is that without a mechanism
to keep the mode in line with your current application,
having multiple modes (dictionaries) is a source of errors,
resulting from having the recognizer use the wrong dictionary.


From: dana@sybase.com (Dana Bergen)

I thought I was going to want to set up a lot of state vocabularies, but
found it unnecessary.  I'm finding that it works fine to have almost
everything in the global vocabulary, and it saves the hassle of switching
and keeping track of which one you're in.  I have Unix, vi, mail, and
window management commands all in my global vocabulary.  I created a
state vocabulary for using Frame, which suits the way I work; I switch
around frequently between using Unix/vi/mail commands, but when I'm
using Frame I'm usually using it for a while, so saying "use frame" when
I start and "exit state" when I stop is not a big burden.  It also lets
me use commands like "page up" and "page down" and have them do the
right thing whether I'm in Frame or vi.

From: Jack 

I do almost exactly the same thing except that I immediately enter a
state called "Unix" and stay there.  There are certain Dragon functions
that tend to kick you out of the state you are in and put you back in
the global state (I forget their exact terminology).  I just added dcom
code to the commands that do that so that the last thing they do is to
reenter the "Unix" state.  I use emacs as an editor, so I can use the
exact same macro for both emacs and frame.  Since a number of editors
have adopted emacs-like metaphors, I can (and do) use them all with the
same macro for various basic emacs functionality... this works extremely
well for me and I rarely have to think about voice recognition, I just
use it, a case where ignorance truly is bliss...



Return To Contents List

How useful is DD / a2x for Programming ?

This is a summary from a request for support by Doug Evans, who needed help to persuade his company to spring for a DD setup. Shows that it works.
From: Doug Evans 
 
This is way cool.  Thanks for the replies.  I took out the author's
names.  I think enough replies went to the list anyway.
 
 
-------
 I am an engineer and a DragonDictate user for 18 months.  I do a lot of
 writing using Latex and Framemaker and some software (VHDL) development
 using emacs.  DragonDictate works extremely well for the writing.  Code
 development is not as easy but still works.  I use DragonDictate for
 virtually all my computer input.  I am a UNIX user and use a2x.  I use
 DragonDictate 4-5 hours per day easily, which was about my level before
 I got RSI.  My doctor does not expect I will ever be able to use a
 keyboard extensively again.  DragonDictate costs $1K for the classic
 version.  That is peanuts.  That is probably one day of work lost.  Any
 management type who can't figure that out is an idiot.  I could not
 work without DragonDictate, and I wrote some proposals this year which
 brought in almost $2M of revenue.  The choice is easy.
------
I am such a programmer, I am doing WWW development in C++ and other
languages.  I use DragonDictate and believe it has saved my career,
your managers are full of it and I am proof.  So there!
------
I use DragonDictate in combination with the freeware package
a2x to program on a fulltime basis in the unix environment
under X.
 
I never type.
 
I get about 20-40 words per minute input speed using DragonDictate.
the range is so large because DragonDictate's comprehension
really depends on whether it has heard you say a word before.
I have been using it for six months, but will still occasionally
run into stretches where I am using a lot of new jargon, and then
I am frequently forced to correct DragonDictate's interpretation of what
I'm saying.
 
My time is split into equal thirds devoted to C programming,
Bourne shell and lisp programming.
 
I think it is an acceptable solution, and quite cheap considering
what you get.  In my case, it may have saved me from having to
change careers due to my hand problems.
------
I'm a Senior Software Engineer at XXX.  I investigate problems,
write specifications documents, write code, and fix bugs.  My work is
in C in a Unix environment.
 
I use DragonDictate all day long.  I can't type at all without pain, so
I do everything with DragonDictate.  I think that the effect on my
programming productivity is minimal; i.e. I get pretty much the same
amount of work done with DragonDictate as I used to get done typing.
It's a little more of an impediment when writing a document; I create
documents somewhat more slowly than before.  However, I'm perfectly
capable of doing what's needed for my job.  I was a very fast typist;
DragonDictate makes me more like a fairly slow typist. There are plenty
of engineers here who are not super fast typists who do a good job.  My
company expects the same amount of work from me that they expect from
other people, and this has not been a problem.
 
There was a pretty significant amount of time required to get going
with DragonDictate in a Unix programming environment.  Getting the
various pieces of software and hardware working together correctly took
some doing; getting macros and such set up took some doing; getting
used to using DragonDictate took some doing.  I spent a fair amount of
time after hours working on my environment for the first month or so.
During that period of time, I was doing my job using DragonDictate but
wasn't as productive as I am now with it.
-----
I use DragonDictate for all of my programming except assembler, which
is a bit of a syntactical  nightmare.  Programming is easiest if you
 
1.  Have a set of macros in DragonDictate which assist you in
programming and
2.  Have a customized editor with intelligence about what you are
trying to do.  I use emacs, and have written several (admittedly
crude) emacs lisp functions which handle all of the syntax of C
programming.
 
Let me give you an example:
 
I say "c-for-loop" and what I get in my emacs buffer, correctly
indented to preserve the logical structure of the current program is:
 
    |
   \ /
    v
for(;;) {
 
}
 
The arrow ending in 'v' above indicates where my cursor ends up, so
that I can insert the first argument of the for loop.  I have similar
functions for all of the C structures and sub-structures.  I also have
words such as int, char, struct etc. which are commonly used.  I can
also comment out regions of code, where a region is a logical block,
such as a function or whatever, and use blocks in movement commands
such as "right-conditional" which steps right over the next
conditional block.
 
If you are editing somebody else's code and they tend to use ghastly
variable names such as lkjdsflkjdfsa, this could be a problem, but
here again emacs comes to the rescue.  In this case I say "lima kilo
dabbrev-expand" and emacs tries to expand something which begins with
the letters "lk", by looking back up the file.  I'm no great lisp
hacker, and I've promised myself that I will sit down one day and get
this thing really sorted out ( more intelligent), but it works well
enough that I have managed to put that day off thus far.
 
As I've stated before on this list, I would be happy (in the spirit of
a2x and emacs, which are publicly available) to provide my
DragonDictate macros and emacs lisp code to anybody who wants it.  I
would hope that they could be improved by somebody with a bit more
time and creativity, and again made public for general benefit.
 
Best of luck and I hope this will help persuade your boss that you
will be better off with DragonDictate.
-----
I use DragonDictate for practically all of my programming (c, c++,
shell), documentation (latex), and email.  I have been using it
"full-time" since January 1991.  Without it I would not be able to
work and would need to find another profession.
 
Emphasize to your employer that carpel tunnel syndrome involves
serious, permanent nerve damage.  A complete dragon based environment
can be assembled for under $4000, perhaps under $3000.  Your employer
will find this to be a lot cheaper than the costs of worker's
compensation and long term disability which they will incur if they
push you to keep working in a way that you know will injure you.
 
Lastly, I would encourage the individual to purchase their own system,
if they are able.  I own my recognition system and am happy with the
decision to buy it myself.  I'm too dependant on it... it would be
like someone else owning my fingers.
-----
I do R&D [...] at XXX.  I just wrote a 700 line
C language program on UNIX in a few weeks, and I'm continually changing a
large HyperCard application on a Macintosh.  In a few months I expect to be
programming on a PC in Visual Basic and ToolBook.  I use DragonDictate all
day with up to 3500 utterances/day with less than 3% errors.  I can dictate
as fast as I could type, although it took 6 months and writing 700 voice
commands to become that proficient.  Here is the standard blurb I post to
our internal netnews:
 
I've been unable to type or use a pointing device for more than a few
minutes since my Repetitive Strain Injuries became severe in March 1993.
Permanent continuous pain and partial loss of the use of my hands was
becoming likely due to permanent nerve damage if I continued typing, so I
stopped.  Since then I have assembled a voice-controlled computing
environment on a PC, UNIX workstation, and Macintosh.
 
I've evaluated and assembled many pieces of software and hardware and
written hundreds of voice commands to integrate them.  I'm using the
DragonDictate Classic speech recognition product running on a PC connected
to the a2x program controlling the X Window System running on a Sun
workstation.  This allows me to enter and edit text and UNIX commands and
control the (mouse) pointer by voice.  I also control a Macintosh by
displaying its screen on the Sun workstation using InterCon's Planet X
software.  You can use a simpler version of this system if you just use a
PC, or if you use a mainframe but can login from a PC.  The cost of the
basic system (DragonDictate Starter at $695 plus a 486/33MHz PC with 8M
memory) is about $2700.  It takes a few weeks to get comfortable using it;
after 6 months I could dictate as fast as I could compose text and as fast
as I used to be able to type, about 15 words/minute.
 
My main uses of this voice-controlled computing environment have been word
processing, email, C and HyperCard programming, and gathering information
from our library, Usenet, and CD-ROM and Internet databases.  I can do
everything by voice that I used to do with a mouse and keyboard.
-----
Due to a chronic RSI, I have been using DragonDictate for over 3 years to do
software development in C/C++ on the following platforms: DECwindows/Motif on
VMS, Motif on Unix (a little), and DOS/MS Windows.  I feel that DragonDictate
allows me to be approximately as productive as I was when I was typing.  By this
I mean that although some tasks take a little longer, other tests are actually
easier using DragonDictate, and in the long run it more or less evens out.
 
I am extremely satisfied with DragonDictate.  Without this product, I doubt
whether I would be able to continue in my career as a software engineer.


----------

Date: Tue, 29 Oct 1996 10:44:08 -0800
From: dana@sybase.com (Dana Bergen)

I wrote:
>>Vocabulary size is not really an issue for programming, because you have
>>to add all the specialized words anyway.

Several people have questioned this or asked for more detail.  I think
it would be helpful if I explained how I work using DragonDictate.
There are a lot of different styles of working and different
programming environments, and the issues can be different for different
people.

I've been programming full-time using DragonDictate *only* (I don't
even have my keyboard where I can reach it to type) for 3 years.  I do
keep the mouse where I can use it, but I rarely use it because even
limited mousing makes my arm hurt.  I don't consider the use of voice
to be a significant impediment to my work at all.  Contrary to
widespread belief, programming by voice is quite viable; I actually
feel more impeded by the limitations of voice input when I'm creating
and editing text documents than I do when programming.

Programming has a much higher ratio of thinking to typing than writing
English text does. You don't typically spew out pages and pages of code
in a short time. This aspect of programming is what balances out the
more problematic aspects with voice, namely the constant use of
non-English words for commands and variable names.

I program in C under Unix.  I use vim (vi plus enhancements) for
editing.  My shell is tcsh, which is csh plus enhancements such as
command line history editing capability. I do feature development
for a large piece of software (DBMS server, around 1 million
lines of code), so I'm always having to work with other people's code;
I don't get to give nice English names to all the variables and
functions I work with. The major tasks that I spend time on are:
looking at code to research issues, writing specs in Frame, writing
code, and debugging.

It took a significant amount of effort to get my working environment
set up well for programming by voice.  Basically I use a combination of
tactics refined over time.

I don't add every single word I need to the DragonDictate vocabulary.
Where possible I use English words.  So, I have shell aliases set up
which map English words to Unix commands (e.g. "move" for mv).  Any
time I do have control over variable names (e.g. in my environment or
when I'm writing whole sections of code) I use English words or English
words strung together. Terms I'm going to be using repeatedly, I do add
to the vocabulary.  I also add variable name fragments like "init" and
"len" which are helpful when dealing with variables named by other
people.  I also use whatever shell and editor tricks are available for
reducing typing, such as name completion mechanisms and abbreviations.
And sometimes I just spell something out.  It sounds really problematic
but it just isn't.

I have no idea how many words and macros I've added, but I can't
imagine that it's more than a few hundred.  Sure, if I was going to add
every variable I ever encountered to the vocabulary, there would be
thousands, but that's simply not necessary to do the work.

I can imagine that there are programming environments that are more
difficult to work with by voice.  I know that someone found programming
in LISP really difficult by voice, and if you're doing anything that
*requires* heavy mouse use it's pretty bad.  I just avoid using GUI
tools when I can -- I use plain old Unix "mail" to read my mail and I
really don't find it a problem.  There are better mail readers that
also don't require mousing but I haven't been motivated enough to
switch.  They keep making our process tools (e.g. bug tracking system)
more and more mouse oriented, so I'm planning to switch from DOS
DragonDictate with a2x to DragonDictate on NT so I'll have better mouse
control.  But for my main work, the actual programming work, this isn't
a problem.

Dana
dana@sybase.com

I've recently encountered someone who thinks that DragonDictate should not be used for programming, given that the user has RSI. Here is the full post, followed by a couple of responses. Your choice.

Article: 2278 of sci.med.occupational
From: viking@narqlinq.net23.com
 
[Simon.Crosby@cl.cam.ac.uk originally wrote]
 
|>  hmm... I can see why -- DragonDictate has no inherent support for
|> programming.  What you do to get it to work with a programming
|> environment is to construct sets of macros in the DragonDictate
|> vocabulary, and also add as much intelligence to the editor which you
|> are using (hopefully something clever like emacs) and then it works
|> fine.  Unless you do something like this then I would be inclined to
|> agree -- difficult to use.
|>
|> --
|> Simon
|>
 
Simon, what you described is *exactly* what you have to do. Dragon
Systems *discourages* people from doing this, because it is *extremely
kludgy*, slow and unworkable. Dragon has found that programmers with
RSI are most likely to use a combination of typing and voice in their
work, in an attempt to get around this problem. For most programmers,
DD does not reduce the typing required by 70% but to around 50%, which
is not enough to safely rehabilitate a programmer with RSI (This means
a possibility of legal problems for Dragon if programming becomes an
'approoved' use of DD! Dragon Systems *strongly* discourages
programmers from using it!)
 
To figure out whether DragonDictate is appropriate for a programmer with
RSI, several factors have to be taken into consideration:
        a.  What's the health of the RSI programmer?
                How much typing can the programmer do without making matters
                        worse?
                What's the functional level of the programmer's disability?
                        (ie: What tasks of daily living does the programmer
                        have difficulty doing, like cooking, cleaning, bathing,
                        washing clothes, driving a car, etc.)
                Is the programmer still symptomatic? If so, is the programmer's
                        condition basically improving, remaining constant or
                        deteriorating?
        b. What's the nature of that programmer's job?
                How many different programming languages does that programmer
                        use?
                Does the programmer use languages that are difficult to
                        dictate, like lisp or assembler?
                How large is the universe of code that programmer responsible
                        for or codes for?
                Does the programmer physically use many boxes or can the
                        programmer be tied down to only one workstation?
                What are the nature of the supporting tools the programmer
                        uses? How many tools, and what do they look like?
 
Who shouldn't even think of using DragonDictate?
        If very casual typing increases the intensity of symptoms, don't
                even consider Dragon Dictate.
        If the person has a very serious level of disability: can't cook--
                generally eats finger food, has difficulty doing day to day
                tasks, can't drive a car, the person should obviously not
                be working.
        If the programmer uses a very rich language, or has made a language
                very rich, programs in many languages, programs in languages
                that have utterly no resemblence to natural languages whatsoever
                (like assembler), or who programs in many languages regularly
                will have great difficulty with DD.
        If the programmer uses many different workstations. A programmer I know
                with severe RSI used to program control systems for heavy
                machinery. Naturally, DD could not help this person do his job.
 
There are probably more contraindications than the ones I've stated above.
Dragon Systems has discovered that for *most* programmers with RSI, DD is
indeed contraindicated.
 
It's *very* important for a programmer with RSI to try DD before purchasing
it. Dragon Systems experience is that most programmers can not tollerate
the limitations of the system and it does not allow them to effectively
return to their line of work or something similar. It *is* useful for some
people; for their work can be modified to avoid DD's serious faults.
 
From an ethical perspective, I would *strongly* advise that someone tone
down the advise on the UK web server about DragonDictate. What's being
said there is overly optomistic about the usefulness of DD for programmers.
This web server should also include the advise and warnings made by Dragon
employees about trying to program computers using DD.
 
 
-----------------------------------------------------
 
My response (Simon.Crosby@cl.cam.ac.uk) follows:
 
 
In article <3bvoc3$mka@senator-bedfellow.MIT.EDU>, root@athena.mit.edu
 (0000-Admin(0000)) writes:
 
> Simon, what you described is *exactly* what you have to do. Dragon Systems
> *discourages* people from doing this, because it is *extremely kludgy*,
 
Not really.
 
> slow and
 
Not at all - I'm faster than anyone I work with  when
putting code into a file.
 
> unworkable.
 
Absolutely not.  On what  experience do you base this comment ?
 
[much other vaulable information cut]
 
>
> It's *very* important for a programmer with RSI to try DD before purchasing
> it.
Yes, I agree completely.
 
> Dragon Systems experience is that most programmers can not tollerate
> the limitations of the system and it does not allow them to effectively
> return to their line of work or something similar. It *is* useful for some
> people; for their work can be modified to avoid DD's serious faults.
>
 
In all my time of using DragonDictate I've never heard this position
stated by the Dragon Resellers  with whom I've had contact.  All of this
is true in the general case, except I've no insight into the findings of
the DragonDictate people.  Where did you get hold of this information?
 
 
In my experience (admittedly  based on my own ability to program  my
environment to help me) I've found DragonDictate to be a positive factor
in my work.  I'll not state it all again, however I use DragonDictate for
absolutely everything, including assembler, C, shell and document
processing.  There are several others who do likewise.  Without
DragonDictate I would be without a job and without a career.  I cannot
type, and this is my only input mechanism.  I do, however use a trackball
to position the mouse cursor, which is very slow to do by voice.  For me
there is no option -- DragonDictate (or some other speech system) or no
career.
 
> From an ethical perspective, I would *strongly* advise that someone tone
> down the advise on the UK web server about DragonDictate. What's being
> said there is overly optomistic about the usefulness of DD for programmers.
> This web server should also include the advise and warnings made by Dragon
> employees about trying to program computers using DD.
 
What is said on the server is simply the experience of people using
DragonDictate.    Sure, I would agree that people should try DragonDictate
(or any other speech system) before investing in it.  I also agree
wholeheartedly with all of the points you listed above.
 
The a2x group, RSI-UK and sorehand regularly see requests for help from
people who are at a dead end (such as myself, about 18 months ago).
People who are at a loss for help need to know the options, and all that
the RSI groups do is let people know what others have experienced.  The
reason there are no negative comments in the faq is that I have *never*
seen a posting which says that DragonDictate cannot be used for
programming before.  Obviously I will add your comments to the faq, and I
would appreciate hearing from anyone who has found it to be unusable or
contra-indicated.  Presumably you are aware of such cases and I would be
very interested to hear of them. 


From: Jack 
Date: Tue, 6 Dec 1994 10:32:21 -0800

I find the guy saying that Dragon is unusable for programmers to be
completely off the wall.  The only constraint he mentions that has
any basis in reality is that I use 1 workstation which is sitting
right next to the PC that runs Dragon.  All of his other caveats are
nonsensical; I write and maintain huge bodies of code in several (4)
programming languages, was so injured when I started that I couldn't
ride a bicycle and the list goes on.  This guy must be an employee of
an insurance company or something, because his "constraints" are, as
far as I can tell, complete bullshit.  On the other hand, please don't
tell him I exist; it might blow his mind...

From: carroll@research.att.com
Date: Tue, 6 Dec 94 13:41:14 EST

I have been using DragonDictate for two months now, and I
am not at all convinced that it has saved my career.  For
example, I just had to ftp a file between my PC and my Sun;
the ftp program on my PC was so button-and-mouse oriented
that I bailed out of DragonDictate and used my hand to
mouse.  Unfortunately, now my hand hurts.

Further, I am incredulous that anyone could be as fast
with DragonDictate as I used to be with my hands.  I'd
have to see  it to believe it.  I cannot imagine how that
is possible.

From: Rob Hutten 
Date: Tue, 6 Dec 1994 16:18:55 -0400 (AST)

> I have been using DragonDictate for two months now, and I am not at
> all convinced that it has saved my career.  For example, I just had
> to ftp a file between my PC and my Sun; the ftp program on my PC was
> so button-and-mouse oriented that I bailed out of DragonDictate and
> used my hand to mouse.  Unfortunately, now my hand hurts.

then the problem is with your ftp software, not DragonDictate... I've
had to completely resort to mouseless operation and I find I am likely
as productive as ever... the one exception is that I really, really
miss the ability to cut and paste in different windows.  This
limitation will be solved once I upgrade my workstation to allow me to
run a2x (I need a drive and X11R6).

> Further, I am incredulous that anyone could be as fast with
> DragonDictate as I used to be with my hands.  I'd have to see it to
> believe it.  I cannot imagine how that is possible.

it depends... I don't necessarily equate typing speed with
productivity.  I approach problems differently now that I dictate
90-95% of my keystrokes.  I'm up to around 45 words per minute with
DragonDictate compared to roughly 65wpm when I was typing.  Yet I was
a very sloppy typist and that 65wpm figure would not count the amount
of editing which was required to make what I typed acceptable.  I
almost never worry about spelling words anymore because DragonDictate
takes care of that for me. 

A month or so ago, we did an experiment here to test my productivity
with DragonDictate.  My coworker, who has about the same experience
and skillset as I, and I worked out an "obstacle course" which
involved doing a pre-defined series of operations: editing password
files, writing shell scripts, sending email, navigating filesystems,
etc. We were each timed (he on keyboard, I with DragonDictate
exclusively) and even I was surprised... I came within 15% of his
time.

It should be noted that this was after one month being back to work
after a year off on disability, so a "rustiness" factor should be
taken into account.  Also, in practice I reach for my keyboard for
roughly 5% of my keystrokes... it's much more practical for me to type
"s/^\([a-z]\)\(.*\)/\2\1/" than to try to dictate it.  This
significantly improves my output rate.

I guess the whole point of this ridiculously long and boring story is
that my productivity with DragonDictate is acceptable, and quite
probably equal to that when I was typing.  Considering that the only
other option was to sponge off my family indefinitely (due to a
quack's claim that "rsi does not exist" and that my problem was
entirely emotional, I was unable to qualify for either government or
my employer's private disability pension), I'd say that DragonDictate
is a valid solution.



Return To Contents List

Mouse Control with X

In DragonDictate for Windows version 2.0, Dragon Systems introduced the MouseGrid concept, which permits the precise positioning of the pointer by uttering a few digits in an interactive fashion. Each uttered digit results in the positioning of the pointer within a grid which is nine times smaller than the previous grid. Typically, the pointer can be placed onto a single pixel within seven uttered digits, and can be placed as accurately as needed within five uttered digits.

Jonathan Epstein (epstein@ncbi.nlm.nih.gov) has produced some enhancements to a2x (as of 11/96) so that it now supports an emulation of MouseGrid, although to use this feature you must install a special DragonDictate vocabulary containing ten commands. Use of a2x's emulation does not depend in any way upon DragonDictate's implementation of this feature. In addition he has made several enhancements to allow Conditionals, which permit an a2x command to result in a different action depending upon which X window holds the focus when the command is uttered. This feature also facilitates the use of multiple DragonDictate vocabularies.

These features are in the current version of a2x, a2x.V1.02, which you can find here.

Return To Contents List


Troubleshooting with DD / a2x


People frequently have problems with the undo facility of a2x.  Here
is a sample of postings.

From: Bob Scheifler 

    how do you represent a
    key such as Escape or Tab as a key in the  ?

You can actually put control characters directly in the file, but
it's probably easier to use ^ followed by a character.  The usual
convention is followed of using the character you get by adding
0x100 to the control character.  E.g.,

^@	NUL
^I	TAB
^J	LF
^M	CR
^[	ESC

And one special case:

^?	Delete

Date: Thu, 30 Dec 93 17:59:58 CST
From: steffen@iexist.att.com

How can I use the a2x undo facility for the [back 1] macro?  I have it
defined as

add-word /t "[back 1]" "{Del}" invisible
	
for a2x.  I tried changing it to

add-word /t "[back 1]" "{Ctrl+t}{Ctrl+c}?" invisible

but it inserts '?' instead of deleting the previous character when I use
it.

P.S. I'm working on a complete .a2x undo file for emacs macros and am
using the DragonDictate 2.0 macro state facility to keep the a2x undoable
emacs macros local and the regular emacs voice macros global because I
occasionally use emacs outside a2x or in DOS.

Date: Fri, 31 Dec 1993 12:16:14 EST
From: Bob Scheifler 

    I tried changing it to
    add-word /t "[back 1]" "{Ctrl+t}{Ctrl+c}?" invisible
    but it inserts '?' instead of deleting the previous character when I use it.

Right, because {Ctrl+t}{Ctrl+c} means "turn on the X Control modifier", it
doesn't mean "make an ASCII control character".  So, if you have a key on
your X keyboard with '/' in the unshifted position and '?' in the shifted
position, what a2x generates is an event for that key that has the X Shift
and Control modifiers turned on.

The reason you can't just use {Del} for your purpose is that DragonDictate
won't generate a backspace for it, so a2x won't see it to undo it.  So what
you need to do is specify, by keysym, the key you want to press.  Assuming
that key is labeled Delete, you can use

{Ctrl+t}Delete{Ctrl+t}

That's a bit long, so you can also do it by hexadecimal keysym value:

{Ctrl+t}ffff{Ctrl+t}

That's still a bit long, but I can't think of a shorter way to do it
without adding something to a2x.

To make sure the key is labeled Delete on your keyboard, use xev to
see what key is pressed when you send {Del} through a2x.

Now, to undo that (using the emacs undo command), you can put

^TDelete^T:^_
^Tffff^T:^_

in your .a2x file.

Subject: help with undo?
From: D! 

in response to my previous questions, a number of people explained
.a2x files to me as a way to do undos.  However I can't get them to
work at all!  Can someone help me?  Here is an example:

I have macro [click 1] assigned to
{Ctrl+t}{Ctrl+b}1{Ctrl+t}{Ctrl+t}{Ctrl+b}1{Ctrl+t}

in my .a2x file I have the following line:
^T^B1^T^T^B1^T:

I thought that would make the "undo" for [click 1] a no-op.  But when I say
"scratch that" after a [click 1], I get 6 backspaces instead.

What am I doing wrong?

I am using DragonDictate V3.0.Maybe my version of a2x doesn't were
with DragonDictate V3.0?  I think I have a2x version 1.12.

From: steffen@iexist.att.com
Subject: Re: help with undo?

As you discovered, telnet usually swaps backspace and delete by default.
For PC-NFS use the -y option, for other software check the manual.

Also you need the latest a2x that was updated at the end of last year.  The
first line of a2x.c should be

/* $XConsortium: a2x.c,v 1.129 93/12/29 20:15:28 rws Exp $ */


From: dana@sybase.com (Dana Bergen)
Subject: Re: DESQview/X 2

>Has anyone had success using any version of DragonDictate with the newest
>version of DESQview/X?  Hints would be appreciated.  Thanks.

I'm using DragonDictate 3.0 with DESQview/X version 2.  This is the only
configuration I've used, so I can't tell you what is different from previous
versions.  I'm using the PC network software that comes with DESQview/X 2.
I haven't had any of the hanging/crashing type problems that people have
apparently had with some combinations.  I have encountered the following
two problems with the interaction of the two packages:

-- I had to get rid of the dragon logo that is displayed at startup of
DragonDictate 3.0 because it hung my remote DESQview/X window. (Delete the
file dd.bit.)

-- Old menus hang around on the DESQview/X window on my workstation.  This is
really annoying because sometimes it's not obvious whether what's up there
is "real" or not.  I've corresponded with both Dragon and Quarterdeck
but no one seems to have solved this.

From: doug_bernard@tmai.com (Doug Bernard)
Subject: Re: demise of DD hotkey in telnet session

This is a dcom entry that preserves the DragonDictate hotkey in the
telnet session (thanks to Jack for the tip on the kbh (keyboard
handler) command):

; "[start UNIX]":
;  .. telnet to cougar; pause; login as dougb; pause
;  .. start a2x
;  .. remove DD choice list via dkey {Enter}
;  .. call-to-state a2x (do last because takes some time to switch)
add-word /t /g "[start UNIX]" "telnet cougar{Enter}{Dcom}pause 4000{Dcom}{Alt+c}kbh off{Enter}user{Enter}{Dcom}pause 200{Dcom}password{Enter}{Dcom}pause 6000{Dcom}DragonDictate{Enter}{Dcom}dkey {Enter}{Dcom}{Dcom}call-to-state \"a2x\"{Dcom}" i

I also use the following to quit:

; "[quit UNIX]": this will work whether or not a2x is running:
;  .. exit a2x via ^t^e; hit enter key (in case a2x not running); pause for a2x to exit
;  .. logout of remote host; pause; exit telnet; pause
;  .. remove DD choice list via dkey {Enter}
;  .. return to state preceeding a2x  (do last because takes some time to switch)
add-word /t  "[quit UNIX]" "{Ctrl+t}{Ctrl+e}{Enter}{Dcom}pause 1000{Dcom}logout{Enter}{Dcom}pause 3000{Dcom}{Alt+x}{Dcom}dkey {Enter}{Dcom}{Dcom}return{Dcom}" invisible
Here is another problem -- the automatic capitalization of words by DragonDictate at the end of a sentence can cause problems with the control sequences embedded in your DragonDictate/a2x macros:
From: steffen@iexist.att.com
Subject: Re: problem with ^T vs ^t

    From: carroll@zko.dec.com
    my a2x session keeps getting screwed up, and I finally figured out
    why.  Apparently,  a2x does not consider CTRL+T the same as CTRL+t!
    therefore, when I do something which causes the next character to be
    capitalized (such as "period", [capitalize word], [begin uppercase],
    [shift-key], etc), and then say a macro of the form
    CTRL+tCTRL+t, (such as [click 1]), it gets screwed up
    because it doesn't pick up the first ^T.
    
    The only fix I have found for this is to change my macros to things
    like "{dcom}lowercase-word{dcom}{Ctrl+t}{normal-case}Delete{Ctrl+t}.
    (The {normal-case} is necessary because "Delete" *must* be capitalized
    for the XServer to recognize it.)
    
Get rid of the sentence-ending punctuation capitalization -- it is an
endless source of errors.  Here are DragonDictate 3.0 commands to do it and
define begin sentence and paragraph beginning macros, so you get
capitalization only when you want it:

; don't capitalize after sentence-ending punctuation characters
; note: these lines cause an error in DragonDictate 2.0
punctuate ". \"period\"" left
punctuate "? \"question mark\"" left
punctuate "! \"exclamation point\"" left

; use these macros instead
add-word /g /t "[begin paragraph]" "" c l r
add-word /g /t "[begin sentence]" "  " c l r

From: dana@sybase.com (Dana Bergen)
Subject: Re: problem with ^T vs ^t

>; don't capitalize after sentence-ending punctuation characters
>; note: these lines cause an error in DragonDictate 2.0
>punctuate ". \"period\"" left
>punctuate "? \"question mark\"" left
>punctuate "! \"exclamation point\"" left

I like having these available, so I have a second set of macros that don't
punctuate -- "dot", "hook mark", and "bang" (actually "dot" is already
built in) -- which I use when I'm not about to dictate another sentence.
Between these and having added the lowercase-word dcom to my escape
key macro (for using with vi), I've generally eliminated the problem.
I think which approach is best depends on what kinds of things you do.


Return To Contents List

Window Manager Hints


From: steffen@iexist.att.com
Subject: .twmrc for [doit] and others

It took me considerable effort to duplicate the .twmrc lines for a2x
window management voice macros:

"F3"	= c|m|s	: w|t|i|f	: f.delete
Button1 = c|m|s	: w|t|i|f|r	: f.menu "defops"
Button1 = m	: w|t|i|f	: f.raise
Button2 = m	: w|t|i|f	: f.lower
Button2 = c|m	: w|t|i|f	: f.iconify
Button3 = m	: w|t|i|f	: f.move

but I'm unsure what Execute and KP_F1 to 3 are supposed to do and how to
define them.
It would be good to put all these in an add2.twmrc file in the a2x
distribution.

From: Bob Scheifler 

    It took me considerable effort to duplicate the .twmrc lines for a2x
    window management voice macros:

They were really only intended as examples of writing macros, not as
something that I expected everyone to use.

    but I'm unsure what Execute and KP_F1 to 3 are supposed to do and how to
    define them.

In my personal environment, I have customized various programs so that
saying "[doit]" does something similar in most windows.  At the time
I wrote the documentation, I had "[doit]" press the key labeled Execute.
Since then I've changed it to press the function key labeled F8.  In my
X resources, I have for example:

Xmh*tocMenu.Accelerators: #override\n\
	...
	!:F8:	XmhCommitChanges()\n\
	...

so that "[doit]" in the main xmh window commits my folder changes.
In my .emacs I have

(global-set-key "\e[19~" 'save-buffer)

so that "[doit]" in emacs saves my buffer.  (ESC[19~ is what emacs
generates when I type the F8 key.)  Similarly, in my .rk.keys file
I have

accept_to_end_of_line             "^[[19~"  # F8

so that "[doit]" at a shell running the Reactive Keyboard will accept
the prediction and execute the command line.

That should give you the flavor, choosing one function key for a given
voice macro and then customizing multiple programs to react to that
key in a similar manner.

As for the KP_F* keys, my .twmrc has something like:

"KP_F1" = : all		: f.warpto "Emacs"
"KP_F2" = : all		: f.warpto "Xmh"
"KP_F3" = : all		: f.warpto "XTerm"


From: dana@sybase.com (Dana Bergen)

Here is a way to get those coordinates for pointer jumps.  I use olwm
and I have the following in my .Xdefaults:

olwm.ShowMoveGeometry:  True

This means that when you grab a window or icon and move it, the
coordinates are displayed.  If I want to know the coordinates of a
location I drag an icon over to it.  If you want the location
relative to a window, just subtract from the corner coordinates 
(or move the window to 0,0 before you start).


Return To Contents List

Contributed Voice Macro Sets

Several people have contributed their voice macro sets for general consumption. Here are my (Simon Crosby) DragonDictate macros, emacs lisp code for programming, and my vtwm key bindings . Please note that I'm no great lisp hacker and if you have any improvements, I'd be most grateful.

Dana Bergen's voice macros are here. Dana had this to say about her macros: "Here are my global macros, followed by my Frame macros, with some explanatory remarks interspersed. I agree with Jack that you'll want to mostly create your own macros on the fly to suit the way you work. However, these will give you some ideas."

 From:
dana@sybase.com (Dana Bergen) Subject: vi tip

I experimented with using a special state for vi command mode, but
decided that for the way I work it wasn't worth the trouble.  The
types of errors it prevents don't happen to me that often.  However,
I found it useful to make the following changes to the [escape key]
macro:

-- Change the punctuation to "left right" instead of "invisible"
-- Add the "lowercase-word" Dcom as part of [escape key], i.e.,
in the Edit window it should look like this:

{Esc}{Dcom}lowercase-word{Dcom}

This avoids the situation where the last thing you typed in input
mode was a question mark or period, and your next command gets
messed up by the spacing and capitalization.

Here are Jack's macros(jack@eit.com). Jack had this to say about his macros: "On the subject of creating macros and deciding which to create, I'd recommend simply creating what you need as you need it. The set I posted were the third or fourth set I'd developed and I believe that each new set was smaller than the one before it. While this means that you can't sit down and enter everything you need in one session, it will create only what you do need; after the first set you can save them to ASCII and load them into a new version of Dragon or whatever. I found that looking at the first ASCII dump that there were many, many macros that I had completely forgotten about, mainly because I never used them more than a couple of times at maximum. Another point is that it takes some time to develop your "style" which will also affect what macros you create. There are also linguistic choices to make on the basis of phonetics; you want phrases that are as discernible as possible. For example, I had the hardest time using the phrase "enter key" because it sounded like so many other things. I found that using the phrase "carriage return" was much more easily discernible from other parts of my vocabulary."

Here are some macro files for lisp, latex, and emacs, contributed by Wati (taylorw@marie.mit.edu (Washington Taylor)). Here are his emacs lisp macros for cursor control. Says Wati: "Files are separated by "================". There are some macros in the latex and emacs files which are specific to my own purposes -- I commented some of these out but left them there as examples. Hope this is useful. (I don't program much in lisp, so that file is fairly short -- the latex file, however, is probably almost everything you need unless you are an extremely serious user)"

He has also contributed some macros for mouse control in DD for windows, which make use of a DLL file contributed by Scott Jangro of Dragon Systems. Here is a zip file containing the DLL file, and some other macros to use it.

Joe Steffen (Joseph_L_Steffen@att.com) has also contributed his macros. He keeps his macros for different types of work in different files, which are best explained in his own README file. This is a collection of DragonDictate 2.0 voice macros primarily for UNIX commands and the a2x interface to the X Window System, but there are several general purpose voice macro (.dcm) files:

Here is a shell archive containing all of the files in Joe's collection, and here are the individual files from the archive.

Here are some macro files for controlling vi from Don Olivier (don@hsph.harvard.edu). The set comprises several files which you need to separate and load into your DD appropriately.

Return To Contents List


Useful DCOMS / Macros


From: dana@sybase.com (Dana Bergen)

>Does anyone know how to write a macro that will let me turn
>the punctuation mode on and off.  I don't know how to write
>macros that will affect options in the voice console.

add-word /train /global "[stop spacing]" "{Dcom}setpar punctuate 0{Dcom}" invisible
add-word /train /global "[start spacing]" "{Dcom}setpar punctuate 1{Dcom}" invisible

From: taylorw@marie.mit.edu
Subject: "enter key"

>	From Jack jack@eit.com
>
>   ....  For example, I had the hardest time using the phrase "enter
>   key" because it sounded like so many other things.  I found that using
>   the phrase "carriage return" was much more easily discernible from other
>   parts of my vocabulary.
>

Since I want to hit the enter key frequently, I use the
single-syllable word [ret] for the enter key.  I don't have any
problem with dragon confusing this with "bet", "net", "debt", "get" or
anything else.  And it certainly speeds things up.  In general, I use
shorter utterances for frequently used words, as in natural language
or Huffman coding.  

From: Simon Crosby 

> From:    Rob Hutten 
> Subject: The dangers of voice recognition
> oh man.  This just happened:
> 
> Phone: Ring, ring.
>    Me: [to DragonDictate] Go to sleep.
> Phone: Ring, ring.
>    Me: [answering phone] Voice console?
> 
> aargh.

Easy to overcome this.  Train DD to recognise the phone and turn
itself off automatically.  I have a macro which produces no output,
which is [phone ringing].  
1. Get someone to call your office when DD is "live". 
2. DD will spit out some garbage after the first ring.
3. Pick up phone after first ring to stop it
4. Correct DD by saying "begin spell mode" and then enter the new
macro such as my one above, with no key strokes.

5. Repeat until DD is trained.

6. The macro should be as follows:

add-word /g /t "[phone ringing]" "{Dcom}console{Dcom}g"

Voila !

This will turn off the mike whenever the phone rings.

From: Scott@ccgate.dragonsys.com

>I am hoping to be able to run programs which are incompatible with
>DragonDictate without too much pain.  I am hoping to do this by, in
>an automated fashion,
>
>	1. unloading DragonDictate
>	2. running the incompatible application
>	3. loading DragonDictate


>can anyone help me?

There is a program in the DICTATE3 directory called UNDD.EXE.  Run
this to unload DragonDicate.  If you have changed your voice files,
you will be prompted to save them.

If you do not want to be prompted to save your voice files, start up
DragonDictate with the /v command line switch, e.g.,

dd /v [other options]

This will allow DragonDictate to unload without stopping for
anything.  Be careful with this switch though, you may lose new
training, words and macros if you haven't saved your voice files.



Return To Contents List

Useful Shell Scripts


From: Simon Crosby Simon.Crosby@cl.cam.ac.uk

Here's a useful bash macro which saves the "/" in dictating
file names and paths on unix:

In other words

cd foo/bar/baz  "cd foo slash bar slash baz"  becomes

cd foo bar baz

cd () {
	builtin cd $*
	shift
	for i in $*
	do
		builtin cd $i
	done
# the following is useful if you frequently ls when you get there..
	ls
}


From: daft@debussy.crd.ge.com (Chris Daft)
Mike Burrows was kind enough to send this solution for the C-shell.

  There's probably a more efficient way, but this csh alias for
  cd does something similar to Simon's shell function:

  alias cd chdir \`echo \!\* \| sed \'s, ,/,g\'\` \; pwd

  This makes:
  cd foo bar
  turn into
  chdir `echo foo bar | sed 's, ,/,g'` ; pwd
  which then turns into
  chdir foo/bar ; pwd

  Mike Burrows



Return To Contents List

PC Telnet Software

Most people seem to use PC-NFS 5.0, which includes a telnet program suitable for use with DragonDictate. Nobody has reported problems using this software, which also lets you mount nfs files over the net (so for instance your voice files could live on Unix or whatever). People have experienced problems with some other telnet software:

From: etonumo@hisoy.etn.ericsson.se (Ulltveit-Moe Nils)
To: a2x-users@x.org
Subject: query: telnet trouble.

I am a new DragonDictate user, and have problems with getting Telnet to
work properly with PCTCP.

The tn program seems to read the keyboard hardware itself, so it does not
work with DragonDictate.  There is also another Telnet program supplied
(tnglass) which works with DragonDictate, but does not do the right
terminal emulation, so for instance the arrow keys does not work.

From: sproul@sybase.com (Nelson Sproul)

PC/TCP works with DragonDictate if the latter is executed with
the /k9 switch.


From: RDruker@RohmHaas.com (Mr. Ross Druker)

We have successfully compiled a2x for AIX 3.2.4 (has XTEST Extension 1), and
*can* do the following operations via DragonDictate:
    o  change mouse position
    o  change window focus

So we know things are close to working.  However, we can't "type", that is,
when we speak or type keyboard input from the PC, it does *not* get echoed
on the UNIX machine.

Using -e (for debug), ls  yields "ls ^M" on the PC.

Can anyone help?  Is there a command to turn on keyboard input, or is there
another problem?
BTW, we are using FTP Software's TN program on the PC (version 2.3).

From: dp@world.std.com (Jeff DelPapa)

The problem is in TN.  You will discove when you exit it, all the
stuff you dictated will appear at your dos prompt.  TN looks directly
to the keyboard hardware, and ignores the DOS keyboard buffer.  FTP
software was completely unwilling to do anything when I reported it a
year ago, but may have moderated.  (the telnet that comes with DV/X
doesn't have the problem, so I didn't push things).

From: rbd@sst.ll.mit.edu (Robert B Dunn)

> I am running DragonDictate on a PC connected on an ethernet
> and trying to get the PC output to my Sparc 2 workstation.
> I can accomplish this using the Desqview X software, but.....

I had the same problem with my version of telnet.  I think some versions
of telnet lock out DD.  I use Kermit (IBM-PC Kermit-MS: 2.32/A 21 Jan 1989)
to connect to the sun through the
serial port.  This works fine for me, and the DD popup windows come up
on my PC screen which I have next to my sun workstation monitor (which
I find satisfactory).  I suggest you get kermit or find out what version
of telnet other a2x users have.

When you run ac2 through your telnet you should be able to type on the PC
keyboard and have the output come up on the sun.  Typing {c-t}{c-e} on the
PC in the telnet window should gracefully exit a2x.

From: Gary Shea 
Subject: Re: Telnet packages
Date: Mon, 05 Dec 1994 11:05:20 -0700

Is there anyone out there using the
		->Windows<- Version of Dragon Dictate
                  ^^^^^^^
who is having good luck with any particular telnet software?
I know there aren't many on this list using DDWIN, but I fear that
what works for DOS might not necessarily work for Windows...
hardly anything does :)

From: carroll@research.att.com
Date: Mon, 5 Dec 94 14:33:43 EST

I'm using the telnet that comes with NetManage's Chameleon NFS
for windows, and it seems to work fine.

From: dp@world.std.com (Jeff DelPapa)
Subject: Telnet packages

I can give you one to avoid:  the vt-320 simulation that comes with
"super tcp" (forget the vendors name, it might be "future domain",
comes bundled with hummingbird eXceed).  The stupid thing eats ^C's,
will only do 24x80, and if you set the font to a variable width font,
it spaces it as if it were a fixed font of width the widest character.

btw: I tried eXcursion (from DEC of all folks) -- it has some pretty
weird bugs, so I have to continue my search.

From: Gary Shea 
Pearl Tsai writes:
>I use Host Presenter, which comes with Novell LAN Workplace, and it
>works just fine under Windows. 

YES!!!  It works!  Thank you :)

The Telnet program which comes with Novell LAN Workplace 4.2
does NOT work with DDWIN, as it loses characters during large
corrections (more than about 20 or so characters, _including_
the backspaces!).

From: Sean Jackson 
Subject: Re: Telnet packages

I am using NCSA telnet (free ware) in a DOS window and it works well.
I suggest you try:

http://www.ncsa.uiuc.edu/SDG/Software/Brochure/PCSoftDesc.html#PCTelnet

Return To Contents List

What Editor to Use?

Most people I know use emacs, which is programmable and hence allows you to do magic things with DD macros. vi users also enjoy success with DD: The pointer below tells you how to use vi with a2x:
From: dana@sybase.com (Dana Bergen)

>(Background: I'll be using DD 2 and Win95. I hope to use the 
>vi editor but will switch to Emacs if I must. 

There's no need to switch if you don't want to.  However, you should
definitely get vim, which is an improved version of vi.  It has numerous
useful features, the most important of which for voice users is multiple
levels of undo.  When you're in command mode and dragon misrecognizes a
command and instead types a word that does several pieces of damage to
your file, you just keep saying "u" until it's all fixed.

There's no learning curve switching to vim from vi, because you can use
it almost exactly like vi and just learn the new features as you have
time or need for them.

Vim is free (the author requests donations to a particular charity).  Info
and instructions for obtaining it are available:
vim (vi-like editor). Return To Contents List

The a2x Olympics

Finally, a bit of humour. Note that some of the contributed macros above will solve some of these problems, but they still remain the de facto test of skill for voice work :-)

From: dana@sybase.com (Dana Bergen)

Announcing the first-ever competitive event designed to show off the
special talents developed by DragonDictate users!

------------
Speed Category:  The Multiple-Headset Shuffle

This event is for DragonDictate users who also use a telephone headset
to reduce neck strain. The telephone rings, and the user must do
the following:

	1) say "voice console", "go to sleep"
	2) remove microphone headset
	3) remove music earphones
	4) put on telephone headset
	5) say "hello"

All five actions must be completed before the caller hangs up or voice
mail picks up the call!

------------
Physical Dexterity Category: The Coffee Ballet

In this event, the user must drink a cup of hot coffee while using
DragonDictate.  Points are deducted for:

	-- bumping or moving the position of the microphone
	-- burning one's mouth
	-- dribbling coffee down one's face
	-- spilling coffee on one's lap
	-- spilling coffee into the microphone

------------
Vocal Dexterity Category:  Sending Private Email

The user enacts the following scenario:

	You have just had a fascinating new sexual experience.  You want
	to tell your friend, who lives in another country, all about it
	without paying for a lengthy long distance phone call.  Describe
	your experience in detail using DragonDictate, speaking loudly
	enough for DragonDictate to function but quietly enough that
	your co-worker in the next cube can't hear you.
-----------
Dramatic Talent Category:  The Pantomime

A new employee drops by to talk to the DragonDictate user. He doesn't
know about DragonDictate and believes the user is on the phone.  The
user must convey the concept "no, you're not interrupting me, just
a second" before the visitor turns and walks away, without causing
any erroneous keystrokes to be typed.
------------

:-)
Return To Contents List

Simon.Crosby@cl.cam.ac.uk