Global grammars
 Number grammar
 Show numbers plus
Specific grammars
Unimacro test


Triggered by a discussion on the voicecoder discussion list I started working on this again. It is becoming quite a bit of code. Split apart into several things:

  • commands for discrete search (noncontinuous) are defined in the grammar _general.
  • commands for continuous searching are described in this grammar (_repeat).
  • the core functions are in the IniGrammar class
  • extensive use is made of "actions .

The grammar in _general:



search ( for | before | after ) (<dgnletters> | <dgnwords>)

select the text you search for, or a leave the cursor before or after the selected text

search ( insert | extend ) (<dgnletters> | <dgnwords>)

insert more letters before or after the previous search text

search new

this opens the default search box, no knowledge of the search text is maintained

search forward [ {count} [ times ]]

the count is optional, as is times.

search back [ {count} [ times ]]

in most programs searching back will not work. Search is started from the beginning of the document.

search go back

(experimental, works only in excel at the moment, go back to where you started.)




any combination of letters/characters (alpha, open-paren, comma etc.)


one dictation word (note this is more precise than <dgndictation> which is identical to <_anything> in Vocola)


The grammar in _repeat:


Search continue [ <direction> | <count> | <speed> ]+


with (optional directives (because of the [ and ]):


forward_ | back | up | _down


steady_ | normal | fast | slow | very fast | _very slow


a number: 1, 2, ..., 20, 25, 30, 35, 40"]]


And when you are in the continuous mode:



<direction> or <speed> or <count>:

as above

reverse_ [ direction ] | [ go ] _back

search in the other direction, or start from the top (if back search is not supported)


faster_ | slower | much faster | _much slower

hold on_ | _hold it

wait, resume with go on | continue or one of the other commands


quit the continuous search mode and return, if possible, to the spot the search started from



These two grammars are meant to be used with the same grammar rules (commands) in several windows. Therefore they make use of actions. The actions used in the search mechanism are:

meta action



most often simply put the search box on the screen

search go

often just {enter}


search on in forward (down) direction.


search on in opposite direction. Default empty. In that case the search is continued from the top.


action to go to the place searching started. Excel implemented differently. Word not implemented yet. Default not implemented, UltraEdit (uedit32) implemented.


what to do if the search failed (can be established in some windows) (default ALERT = a ringing bell)


T (True) if you can continue search without an initial search (eg by hand or by the search new command, which is NOT remembered) (values can be T (true) or F (false))


what to do after forward search, in order to finish in front of the text found.




In the file actions.ini (which you can open by the command Edit Actions), you can inspect these actions for default or a program (eg winword, dragonpad, firefox (sucks yet), iexplore, emacs (a little bit), notepad).


  • in DragonPad (like in many windows) searching back does not work, so search is started from the beginning of the page when you call this. When you are "round" DragonPad gives an extra dialog window, which is found as a failing search. The search is cancelled at that moment.
  • in excel some steps go through internal excel routines, showing no dialog windows at all. When you cancel the search, or give the command search go back, the cell you start at the search from is selected again. (Searching back does not work).
  • In Notepad searching back works, but if you want to go searching for it again this does not work.
  • In Firefox continuous search seems to work well, and going up and down with the search also.
  • In Word the implementation is primitive, should also be done with internal commands, like in excel.

More implementation details in the section in IniGrammar class .