KnowBrainer Speech Recognition
Decrease font size
Increase font size
Topic Title: What we know about the DNS dropping/doubling bug
Topic Summary:
Created On: 01/19/2013 07:52 PM
Status: Post and Reply
Linear : Threading : Single : Branch
 What we know about the DNS dropping/doubling bug   - mdl - 01/19/2013 07:52 PM  
 What we know about the DNS dropping/doubling bug   - mdl - 01/31/2013 07:40 PM  
 What we know about the DNS dropping/doubling bug   - mdl - 01/31/2013 07:42 PM  
 What we know about the DNS dropping/doubling bug   - mdl - 01/11/2014 12:15 PM  
 What we know about the DNS dropping/doubling bug   - R. Wilke - 01/11/2014 12:34 PM  
 What we know about the DNS dropping/doubling bug   - R. Wilke - 01/11/2014 08:15 PM  
 What we know about the DNS dropping/doubling bug   - monkey8 - 01/12/2014 04:34 PM  
 What we know about the DNS dropping/doubling bug   - mdl - 01/12/2014 05:02 PM  
 What we know about the DNS dropping/doubling bug   - monkey8 - 01/12/2014 05:23 PM  
 What we know about the DNS dropping/doubling bug   - mdl - 01/12/2014 05:53 PM  
 What we know about the DNS dropping/doubling bug   - monkey8 - 01/12/2014 06:40 PM  
 What we know about the DNS dropping/doubling bug   - mdl - 01/12/2014 08:56 PM  
 What we know about the DNS dropping/doubling bug   - monkey8 - 01/13/2014 08:06 AM  
 What we know about the DNS dropping/doubling bug   - mdl - 01/13/2014 09:32 PM  
 What we know about the DNS dropping/doubling bug   - monkey8 - 01/14/2014 08:53 AM  
 What we know about the DNS dropping/doubling bug   - mdl - 01/14/2014 08:44 PM  
 What we know about the DNS dropping/doubling bug   - monkey8 - 01/15/2014 03:10 PM  
 What we know about the DNS dropping/doubling bug   - R. Wilke - 01/15/2014 04:49 PM  
 What we know about the DNS dropping/doubling bug   - monkey8 - 01/15/2014 06:57 PM  
 What we know about the DNS dropping/doubling bug   - R. Wilke - 01/15/2014 07:56 PM  
 What we know about the DNS dropping/doubling bug   - monkey8 - 01/16/2014 05:29 AM  
 What we know about the DNS dropping/doubling bug   - monkey8 - 01/16/2014 12:49 PM  
 What we know about the DNS dropping/doubling bug   - R. Wilke - 01/16/2014 01:25 PM  
 What we know about the DNS dropping/doubling bug   - monkey8 - 01/16/2014 01:38 PM  
 What we know about the DNS dropping/doubling bug   - R. Wilke - 01/16/2014 03:36 PM  
 What we know about the DNS dropping/doubling bug   - mdl - 01/15/2014 10:50 PM  
 What we know about the DNS dropping/doubling bug   - mdl - 01/15/2014 11:19 PM  
 What we know about the DNS dropping/doubling bug   - mdl - 01/15/2014 11:29 PM  
 What we know about the DNS dropping/doubling bug   - monkey8 - 01/16/2014 05:43 AM  
 What we know about the DNS dropping/doubling bug   - monkey8 - 01/12/2014 05:29 PM  
 What we know about the DNS dropping/doubling bug   - Chucker - 01/31/2013 08:52 PM  
 What we know about the DNS dropping/doubling bug   - mdl - 01/31/2013 10:04 PM  
 What we know about the DNS dropping/doubling bug   - mdl - 01/31/2013 10:05 PM  
 What we know about the DNS dropping/doubling bug   - mdl - 02/03/2013 12:28 PM  
 What we know about the DNS dropping/doubling bug   - mdl - 02/16/2013 10:42 PM  
 What we know about the DNS dropping/doubling bug   - mdl - 04/06/2013 12:40 PM  
 What we know about the DNS dropping/doubling bug   - Lunis Orcutt - 04/17/2013 11:32 AM  
 What we know about the DNS dropping/doubling bug   - G.J. Premo - 04/21/2013 03:02 PM  
 What we know about the DNS dropping/doubling bug   - Chucker - 04/21/2013 03:15 PM  
 What we know about the DNS dropping/doubling bug   - G.J. Premo - 04/23/2013 06:33 PM  
 What we know about the DNS dropping/doubling bug   - mdl - 09/01/2013 06:53 PM  
 What we know about the DNS dropping/doubling bug   - mdl - 09/17/2013 11:42 PM  
 What we know about the DNS dropping/doubling bug   - mdl - 09/27/2013 08:38 PM  
 What we know about the DNS dropping/doubling bug   - phils - 09/27/2013 08:51 PM  
 What we know about the DNS dropping/doubling bug   - mdl - 01/11/2014 07:17 PM  
 What we know about the DNS dropping/doubling bug   - Chucker - 01/13/2014 10:24 PM  
 What we know about the DNS dropping/doubling bug   - monkey8 - 01/14/2014 09:05 AM  
 What we know about the DNS dropping/doubling bug   - Chucker - 01/14/2014 12:28 PM  
 What we know about the DNS dropping/doubling bug   - mdl - 02/08/2014 04:07 PM  
 What we know about the DNS dropping/doubling bug   - R. Wilke - 02/08/2014 04:54 PM  
 What we know about the DNS dropping/doubling bug   - mdl - 01/11/2016 06:53 PM  
 What we know about the DNS dropping/doubling bug   - mdl - 01/11/2016 06:54 PM  
 What we know about the DNS dropping/doubling bug   - phils - 01/11/2016 07:12 PM  
 What we know about the DNS dropping/doubling bug   - mdl - 01/11/2016 07:16 PM  
 What we know about the DNS dropping/doubling bug   - phils - 01/11/2016 08:37 PM  
 What we know about the DNS dropping/doubling bug   - mdl - 01/11/2016 11:13 PM  
 What we know about the DNS dropping/doubling bug   - phils - 01/12/2016 12:23 AM  
 What we know about the DNS dropping/doubling bug   - mdl - 03/14/2016 11:37 PM  
 What we know about the DNS dropping/doubling bug   - michaelbeijer - 10/18/2016 06:35 AM  
 What we know about the DNS dropping/doubling bug   - HelpMeWithDragon - 01/16/2017 02:57 AM  
 What we know about the DNS dropping/doubling bug   - mdl - 01/16/2017 05:23 PM  
 What we know about the DNS dropping/doubling bug   - Lunis Orcutt - 01/17/2017 12:36 AM  
 What we know about the DNS dropping/doubling bug   - mdl - 01/16/2017 05:25 PM  
Keyword
 01/19/2013 07:52 PM
User is offline View Users Profile Print this message


mdl
Top-Tier Member

Posts: 766
Joined: 04/18/2009

    This is a summary of my understanding of the dropping/doubling bug
as of 1/19/2013:

    Dragon NaturallySpeaking's standard method of sending synthetic
keystroke events to applications (e.g., SendDragonKeys and dictation to
non-full-text-control applications but not SendSystemKeys) does not
always work 100% correctly in Vista and later Windows operating
systems.  In particular, the first event in a sequence of synthetic
keystrokes may be dropped or doubled. 

    For example, sending "hello" may result in "ello" or "hhello" being
typed and sending "Hello" (really {shift down}{h down}{h up}{shift
up}...) may result in "hello" (first press of shift dropped).  Likewise,
sending {ctrl+x}{ctrl+c} via SendDragonKeys may result in x followed by
control-c (the first control press being lost).

    Although particular applications tend to see only either dropping or
only doubling, I believe this is a single bug because all applications
act up at the same time.  There are also applications where both
doubling and dropping happens.

    The frequency of this bug being triggered seems for me to be either
something like 1 in 100 or 1000 or 9 in 10, with the later state only
lasting for minutes at a time.  I have been unable to produce a recipe
that reliably produces the bug on command.

    Applications the bug has been seen with include: local Emacs, cygwin
X window server (dropping), Word pad (doubling), Dragon pad (doubling),
Word 2007 (doubling), notepad (doubling) , Xemacs, PuTTY, notepad++,
eclipse, Citrix client, editplus, Excel 2007, and Thunderbird.  It has
been seen with DNS 10.1 through 12 and Vista and Windows 7.  It seems to
be more common on Windows 7 then Vista.

    This is probably the single most annoying bug of DNS 11.5 in my
experience for people who use a lot of custom commands or non-full text
control applications -- it's also present in DNS 12 but there are even
more annoying bugs there.  I have not been able to find any workaround
as yet.


    Experimenting with AutoHotkey, I find that of the 3 available Send
modes (http://www.autohotkey.com/docs/commands/Send.htm), only Play mode
triggers the bug.  SendPlay mode uses the journal playback hook
(wh_JournalPlayback) while the other modes use keybd_input and
sendinput.  I suspect from this that Dragon may be using the journal
playback method of sending keystrokes as well.  Apparently the Journal
hook API was changed in Vista for greater security (it made keystroke
loggers too easy), forcing Microsoft to change the SendKeys
implementation (of .Net) to fall back on the sendinput method from the
Journal hook method.

    Does anyone know how to tell if Dragon is using the Journal hook
method?  I'm still experimenting, but I think Dragon may trigger the bug
more often than AutoHotkey.

    If you have evidence contradicting any of the above, please reply to
this post.

- Mark


Posts about this bug, the information from which is mostly summarized here:
https://www.knowbrainer.com/forums/forum/messageview.cfm?catid=4&threadid=13566
https://www.knowbrainer.com/forums/forum/messageview.cfm?catid=4&threadid=14041
https://www.knowbrainer.com/forums/forum/messageview.cfm?catid=4&threadid=15770

http://www.speechcomputing.com/node/2938
http://www.speechcomputing.com/node/3466
http://www.speechcomputing.com/node/3930



 01/31/2013 07:40 PM
User is offline View Users Profile Print this message


mdl
Top-Tier Member

Posts: 766
Joined: 04/18/2009

re: DNS causing the bug more often then AutoHotkey.

 

Here's a typical DNS test result when the bug is triggering a lot:

standard dropping test (sendDragonKeys):
D D d d d D D d d d D d d d d d D D d d d d d D d
d d d d d D D d d D D d d d D D D d d D D d D D d
d D d d D d d d d D D D d d D D D d D d d D D D D
d D d d d D d d D d d d D D D D d D d D d d d d D

(Each lowercase d indicates that a shift key event was dropped; there are 100 d's total)

 

Here's the equivalent test during the same burst with AutoHotkey:

AutoHotkey SendMode Play:
D D D D D D D D D D D D D D D D D D D D D D D d D 
D D D D D D D D D D D D D D D D D D D D D D D D D 
D D D D D D D D D D D D D D D D D D D D D D D D D 
D D D D D D D D D d D D d D D D D D D D D D D D D

Counting, I get DNS triggering the bug about 58% of the time while AutoHotkey triggers the bug only 2% of the time.  That's DNS causing the bug more than 25 times more often than AutoHotkey.  This is why I think DNS is doing something particularly wrong and could do better.

 

 01/31/2013 07:42 PM
User is offline View Users Profile Print this message


mdl
Top-Tier Member

Posts: 766
Joined: 04/18/2009

opps, make that 3% for the second test -- I missed a 'd'.  If I sum over more test runs, the AutoHotkey rate is smaller than that.

 01/11/2014 12:15 PM
User is offline View Users Profile Print this message


mdl
Top-Tier Member

Posts: 766
Joined: 04/18/2009

The new Vocola 2 extension, Keys, uses SendInput, which to the best of my experience is immune to the doubling/dropping bug.  Unfortunately, there is no way to replace the mechanism DNS uses to send dictation with something else.

 

 

 01/11/2014 12:34 PM
User is offline View Users Profile Print this message

Author Icon
R. Wilke
Top-Tier Member

Posts: 6104
Joined: 03/04/2007

Unfortunately, there is no way to replace the mechanism DNS uses to send dictation with something else.

 

Are you sure?

 

 



-------------------------



We hook into it, because we can! (Home/Premium/Pro/Group, Ver. 12 or higher)


No need to buy if all you want to do is try ...
DragonEcho, DragonPhrases, DragonBench, DragonSources (more to come)
Click the picture and find out!

 01/11/2014 08:15 PM
User is offline View Users Profile Print this message

Author Icon
R. Wilke
Top-Tier Member

Posts: 6104
Joined: 03/04/2007

Originally posted by: mdl Let me rephrase that, I do not currently know of any way to replace the mechanism used for dictation.   I'd love to hear about any way to replace it.

 

 

To which I would like to reply, ways to replace it are in the works.

 



-------------------------



We hook into it, because we can! (Home/Premium/Pro/Group, Ver. 12 or higher)


No need to buy if all you want to do is try ...
DragonEcho, DragonPhrases, DragonBench, DragonSources (more to come)
Click the picture and find out!

 01/12/2014 04:34 PM
User is offline View Users Profile Print this message

Author Icon
monkey8
Top-Tier Member

Posts: 3108
Joined: 01/14/2008

mdl,

 

 You are most likely experiencing different issues here depending on the different situations you describe. For example SendKeys uses a different method to get text to an active widget than dictating to something like Microsoft Word which in turn would be different from dictating to an already fully Select-and-Say compatible rich text box. So taking one issue at a time:

 

1. SendKeys - I am not sure why you are discussing the.net implementation of SendKeys as it has nothing to do with this. The .net version of SendKeys is a class within .net that has its own particular implementation to send keyboard strokes. Dragon with an advanced script uses SAX Basic implementation (Advanced Scripting is SAX Basic with a few Dragon extensions like HeardWord and SendSystemKeys) and it does not use any .NET functionality. Ultimately whatever version of SendKeys you use (i.e. whatever script engine) the SendKeys function will eventually be implemented by the Windows API and the function calls then include possibilities such as using keybd_event, SendInput or SendMessage as examples.

 

So the first suggestion would be what happens if you use a different scripting engine e.g. it is easy to test using DVC scripting, to add a new DVC script simply highlight an existing DVC script in the Command Browser, e.g. , and then click on "New Copy" and try using SendKeys then, do you still get the same issue?

 

Secondly if you can't get either scripting engine to work reliably there are others available under Windows but ultimately

if you find using SendKeys a necessity (not something to be recommended) then you can define your own SendKeys function in a text file and then use the '#Uses statement e.g.

 

'#Users "SendString.txt"

Sub Main

SendString ("no dropping characters")

End Sub

 

You can then declare your own SendString function using SendInput, keybd_event or whatever which will give you greater control. Monitoring Windows messages like WM_KEYDOWN going to the application window will merely tell you that the Windows API is not receiving all the text you think you have sent because you can be pretty sure that if not all the WM_ KEYDOWN or .WM_KEYUP messages are getting to the application window then it will NOT be the fault of the Windows API but the mechanisms involved in passing the text and characters to the Windows API in the first place.

 

Interestingly we are using WinWrap Basic (the successor to SAX Basic) with another project at the moment and the SendKeys implementation with WinWrap Basic doesn’t seem to have this issue with SendKeys. It also has a better implementation in terms of sending system keys so for example if I used ‘SendKeys"^{Esc}" WinWrap Basic will successfully open the start menu. SAX Basic (Advanced Scripting) will not do this and hence one of the reasons that Dragon added the SendSystemKeys extension function/method to SAX Basic for Advanced Scripting.

  

Lindsay

 



-------------------------



 01/12/2014 05:02 PM
User is offline View Users Profile Print this message


mdl
Top-Tier Member

Posts: 766
Joined: 04/18/2009

By SendKeys, I am referring to the version provided by advanced scripting, which uses the journal hook method of sending events.  SendSystemKeys, by contrast, uses the keybd_event method if I'm not mistaken.  Only the first method of sending events appears to suffer from the doubling/dropping bug.  Unfortunate, Dragon's sends dictation to non-select-and-say Windows via the Journal hook method.

 

I have workarounds for sending keys from commands (e.g., use an extra {shift} or use SendInput via new Keys Vocola extension) but not for dictation.

 01/12/2014 05:23 PM
User is offline View Users Profile Print this message

Author Icon
monkey8
Top-Tier Member

Posts: 3108
Joined: 01/14/2008

The "Journal hook method"? I think you mean using the JournalPlaybackProc to playback a series of keyboard messages or other messages after setting a global Windows hook to record them? Why do you think it uses that to send text to non-Select-and-Say Windows?



-------------------------

 01/12/2014 05:53 PM
User is offline View Users Profile Print this message


mdl
Top-Tier Member

Posts: 766
Joined: 04/18/2009

Yes, wh_JournalPlayback.  Two reasons:  first, of the AutoHotkey methods only the one using the journal playback hook suffers from the bug, and second, only this method fails to trigger the Windows key global keyboard shortcuts.

If you have a 32 bit OS with Dragon installed, there is an executable that supposedly will tell you what hooks are being used.

 

 01/12/2014 06:40 PM
User is offline View Users Profile Print this message

Author Icon
monkey8
Top-Tier Member

Posts: 3108
Joined: 01/14/2008

With dictation to non-Select-and-Say Windows we have some examples available in the SDKs (remember you can still download SDK 7) and none of them use journal play back at any stage (and not really sure why they would) but instead use SendMessage and other Windows API functions to get text into non-Select-and-Say Windows. However the key point is, as Rüdiger has alluded to , there are several ways of doing it.

 

In terms of SendKeys I really don't see why they would use journal playback with functionality like SendKeys within Advanced Scripting (SAX Basic), I can definitely see they would use it for macro recording scripting within Dragon or functionality within autohotkey and sending keys that way but not Advanced Scripting.

 

With macro recording scripting you set the global Windows hook to record the journal containing all the Windows messaging, record the journal while the user does his stuff (types and mouse clicks) and then just use the journalPlaybackProc to playback what the user did in terms of keyboard and mouse input to run the macro recorded script.  But why would you use it with Advanced Scripting instead of just implementing SendKeys with something like keybd_event? It would be painfully slow for starters.

 



-------------------------



 01/12/2014 08:56 PM
User is offline View Users Profile Print this message


mdl
Top-Tier Member

Posts: 766
Joined: 04/18/2009

One advantage of using the hook is that you can know when your events have been entirely consumed.  With SendInput (probably not available at the time DNS's SendKeys was written), you fire off some events  and it returns immediately, forcing you to guess how long to wait for the application to finish with the input.  If you use keybd_event (i.e., SendSystemKeys), you appear to have to guess a delay after each key, making it run very slowly.

 

Note that the original SendKeys from Visual Basic and .NET used the journal hook; only with Vista did they introduce the option to use SendInput instead.

 

Keep in mind that when using the hook there is no obligation to record anything; you can just synthesize new events at will.

 01/13/2014 08:06 AM
User is offline View Users Profile Print this message

Author Icon
monkey8
Top-Tier Member

Posts: 3108
Joined: 01/14/2008

Looking at the 2 issues separately:

 

In terms of dictation they are already, and always have used, different methods of getting text to different types of Windows/edit boxes as stated above and as can be seen in the SDK samples so I think it's rather speculative to consider it all to be the same bug ("journalhook"). But then we are all in the dark really with internal Dragon/ScanSoft/Nuance implementations.

 

I thought autohotkey had changed to using SendInput other than with macro recording because it's faster among other reasons:

 

http://www.autohotkey.com/board/topic/8132-v1043-released-send-keystrokes-faster-more-reliably/

 

Although it's irrelevant in the discussion anyway because Advanced Scripting doesn't use the SendKeys .NET implementation the .NET implementation of SendKeys has changed to using SendInput from 3.0 although I note on MSDN it says they will still try the previous implementation of SendKeys first of all unless you force your application in the configuration file to use SendInput automatically.

 

WinWrap basic the new implementation of SAX Basic/AdvancedScripting also uses SendInput and that's officially from them.

 

So considering the above 3 implementations all happened something like eight years ago… are Nuance still living that far in the past? (Maybe you shouldn't answer that:-)

 

Anyway until more information becomes available there are lots of ways around the problem with SendKeys, as you know, and with the dictation problem we just have to wait for the next release or possibly a third party application which overcomes the problem… Maybe it doesn't help that relatively few people actually come across the problem although it must be frustrating for those who do.

 



-------------------------



 01/13/2014 09:32 PM
User is offline View Users Profile Print this message


mdl
Top-Tier Member

Posts: 766
Joined: 04/18/2009

Occam's razor says we should assume they use the same method for all nonstandard applications until proven otherwise.  Maybe I am confused, but I don't see why the dictation sending method would go through any SDK samples.

 

AutoHotkey actually supports four different modes; see http://www.autohotkey.com/docs/commands/Send.htm, allowing comparisons of the modes.

 

If I remember right Chuck said something like Nuance bought a license to WinWrap basic in 2006  and is too cheap to upgrade.

 

This bug is been presently since DNS 11 so waiting for the next release may not help.



 01/14/2014 08:53 AM
User is offline View Users Profile Print this message

Author Icon
monkey8
Top-Tier Member

Posts: 3108
Joined: 01/14/2008

 

Occam's razor says we should assume they use the same method for all nonstandard applications until proven otherwise. Maybe I am confused, but I don't see why the dictation sending method would go through any SDK samples. quote from mdl

 

 

1. SendKeys- You have given me nothing to "prove otherwise". The only link you have that this so-called "bug" is anything like related to journalPlayback is an MSDN note on the .NET implementation of SendKeys. I ask you once again to answer specifically what does this have to do with it? Advanced Scripting uses the SAX BASIC scripting engine which was written 20 years ago and has no .net functionality (officially from the developer), in fact .NET didn't exist 20 years ago.

 

2.Dictation- Answering your question specifically (in the hope that you will also answer my question specifically). The SDK has an example of sending dictation to a non-select and say edit box and the method they use for the final transfer of text at Windows API level is SendMessage. They could have equally used JournalPlayback but they didn't so the point is that you presuming that they are using journal play back for sending text to non-Select-and-Say Windows all the time is incorrect. There are other examples like using COM add-ins but you have not given me any examples of dictation using journalPlayback.

 

Sorry Mark but try as I might I really can't see anything to go by, I would start by asking what happened at version 11 time when the problem first appeared, journal play back certainly didn't start at that point.



-------------------------



 01/14/2014 08:44 PM
User is offline View Users Profile Print this message


mdl
Top-Tier Member

Posts: 766
Joined: 04/18/2009

There are four methods I know of on windows of sending synthetic keyboard events: SendInput, keybd_event, the journal hook, and using SendMessage to directly send messages to Windows.  AutoHotkey allows using each of these methods.  I've done extensive tests using AutoHotkey and only the input method that uses the journal hook shows the doubling/dropping bug.  Therefore, if you show me a application sending synthetic keystrokes and it suffers from the doubling/dropping bug, I'm going to assume that it is using the journal hook method until proven otherwise.  (In the case of SendDragonKeys and DNS's SendKey, there is also the fact that they fail to trigger Window key shortcuts, which indicates that they are not using keybd_event or SendInput.)

As for dictation, maybe this is a vocabulary problem.  By dictation, I mean the process wherein I say something that is not a command to DNS and it types the written form of what I said into an application.  If any command is involved, by definition it is not dictation.  It is this process (for nonstandard Windows) that we need to alter.

Re: versions: it is not that the problem was introduced in DNS 11, it's that it wasn't fixed in DNS 12.  The actual problem appears to be an interaction between DNS and Windows, particularly Vista and onwards.  I don't think this problem existed pre-Vista and I suspect DNS 10 would have it if you ran it on Vista. 

 01/15/2014 03:10 PM
User is offline View Users Profile Print this message

Author Icon
monkey8
Top-Tier Member

Posts: 3108
Joined: 01/14/2008

Originally posted by: mdl There are four methods I know of on windows of sending synthetic keyboard events: SendInput, keybd_event, the journal hook, and using SendMessage to directly send messages to Windows.  AutoHotkey allows using each of these methods.  I've done extensive tests using AutoHotkey and only the input method that uses the journal hook shows the doubling/dropping bug.  Therefore, if you show me a application sending synthetic keystrokes and it suffers from the doubling/dropping bug, I'm going to assume that it is using the journal hook method until proven otherwise.  (In the case of SendDragonKeys and DNS's SendKey, there is also the fact that they fail to trigger Window key shortcuts, which indicates that they are not using keybd_event or SendInput.) As for dictation, maybe this is a vocabulary problem.  By dictation, I mean the process wherein I say something that is not a command to DNS and it types the written form of what I said into an application.  If any command is involved, by definition it is not dictation.  It is this process (for nonstandard Windows) that we need to alter. Re: versions: it is not that the problem was introduced in DNS 11, it's that it wasn't fixed in DNS 12.  The actual problem appears to be an interaction between DNS and Windows, particularly Vista and onwards.  I don't think this problem existed pre-Vista and I suspect DNS 10 would have it if you ran it on Vista. 

 

It's not up to me to disprove your theory Mark regarding journal playback but rather for you to prove it or present some real evidence. Your main source of evidence previously seemed to be the Microsoft.net implementation of SendKeys and I see you have abandoned that and conveniently moved to autoHotKey as your main source of validation and you still haven't answered my specific question about.net. Why don't you produce 3 simple applications that will send keys to any window, one can use SendInput, one can use journal playback and one can use SendMessage then we will know for sure (having access to the source code) exactly what is doing what instead of speculating that one application does this and another application does that. That will at least got a small way to showing that the problem with SendKeys is related to journal playback, although not with dictation.

 

Incidentally do you believe the problem is with the Windows API functionality or the way that Dragon implements the Windows API functionality (journal playback) as I am not quite clear on that. Otherwise for now I think we should just agree to disagree as we are going round in circles.



-------------------------



 01/15/2014 04:49 PM
User is offline View Users Profile Print this message

Author Icon
R. Wilke
Top-Tier Member

Posts: 6104
Joined: 03/04/2007

Why don't you produce 3 simple applications that will send keys to any window, one can use SendInput, one can use journal playback and one can use SendMessage then we will know for sure (having access to the source code) exactly what is doing what instead of speculating that one application does this and another application does that. That will at least got a small way to showing that the problem with SendKeys is related to journal playback, although not with dictation.

 

Rather than looking at the particular implementation, thinking about how they interact with the message queue and whether there are timing issues involved in translating the messages might be more useful - or not, as it won't help answering the basic questions, and make the whole argument pointless. And the thread should have been named "What we assume ..." in my opinion.

 

One way or the other, synthesized keyboard input will always have its flaws:

 

 http://blogs.msdn.com/b/oldnewthing/archive/2005/05/30/423202.aspx



-------------------------



We hook into it, because we can! (Home/Premium/Pro/Group, Ver. 12 or higher)


No need to buy if all you want to do is try ...
DragonEcho, DragonPhrases, DragonBench, DragonSources (more to come)
Click the picture and find out!



 01/15/2014 06:57 PM
User is offline View Users Profile Print this message

Author Icon
monkey8
Top-Tier Member

Posts: 3108
Joined: 01/14/2008

Well like I said earlier "… If you must use SendKeys (not recommended)…" then I guess it's all worthwhile if something can be resolved at the end of the day. But I will certainly go along with "What we assume about the DNS dropping/doubling bug"



-------------------------



 01/15/2014 07:56 PM
User is offline View Users Profile Print this message

Author Icon
R. Wilke
Top-Tier Member

Posts: 6104
Joined: 03/04/2007

Well like I said earlier "… If you must use SendKeys (not recommended)…"

 

So are you really saying that Nuance is NOT responsible for providing a proper implementation of the SendKeys method to be used from within their software, and cannot be held responsible for mitigating all the chaos within the different layers of the Windows API's? - I just won't believe that as it is completely inacceptable. I have always assumed and counted on a speech recognition system doing exactly that, catering for speech activated use of sending keys to applications no matter where they are coming from, just the way I want them and therfore script them, and quite frankly I have spent almost the last decade of my life digging into speech software based on that conception.

 

Nuance should really get their act together real soon!

 

[/sarcasm]

 



-------------------------



We hook into it, because we can! (Home/Premium/Pro/Group, Ver. 12 or higher)


No need to buy if all you want to do is try ...
DragonEcho, DragonPhrases, DragonBench, DragonSources (more to come)
Click the picture and find out!

 01/16/2014 05:29 AM
User is offline View Users Profile Print this message

Author Icon
monkey8
Top-Tier Member

Posts: 3108
Joined: 01/14/2008

Originally posted by: R. Wilke
Well like I said earlier "… If you must use SendKeys (not recommended)…"

 So are you really saying that Nuance is NOT responsible for providing a proper implementation of the SendKeys method to be used from within their software, and cannot be held responsible for mitigating all the chaos within the different layers of the Windows API's? - I just won't believe that as it is completely inacceptable. I have always assumed and counted on a speech recognition system doing exactly that, catering for speech activated use of sending keys to applications no matter where they are coming from, just the way I want them and therfore script them, and quite frankly I have spent almost the last decade of my life digging into speech software based on that conception. 

Nuance should really get their act together real soon! 

[/sarcasm]

 

 

Nope if you are talking to me sarcasm, what I mean by "not recommended" is that I would not use SendKeys or sending synthesised keystrokes as a cog in any program where it is an integral part of the functionality, for reasons including uncertain timing and reliability of return. SendKeys is what it is, useful for scripting and where it's output is not needed as 100% reliable input for furthe processing and when it matters not if one time in 1000 it doesn't quite do what you want. Like I said above nuance can implement SendKeys within SAX Basic in any manner they please, I don't have any issues with SendKeys (nuance or Microsoft implementation) as I am aware of the restrictions. Furthermore it is no use for sending things like the Windows key which is why I introduced keybd_event as a scripting option on the forum many years ago (at least I had never seen keybd_event implemented in an advance script until then) when users were having to use more cumbersome solutions like mapped DLLs which allowed for extremely slow implementation. I notice now that many people are using keybd_event in their scripts. Of course sendInput would be a better choice but have you tried implementing that in Advanced Scripting, not a pretty sight. Anyway they are still synthesised keystrokes so have limitations.

 

Dave



-------------------------



 01/16/2014 12:49 PM
User is offline View Users Profile Print this message

Author Icon
monkey8
Top-Tier Member

Posts: 3108
Joined: 01/14/2008

Very profound BigTech, when you spend the amount of time that I do helping disabled and other users around the world resolving issues with NaturallySpeaking and other assistive technology equipment and you do it all free of charge then you can make such smutty statements. That also includes time helping people on this forum. We are a non-profit making business and that means we don't make any money and never have made any money and never have taken any money out of the company. Any profit we do make goes towards equipment that is then supplied free for disabled users including copies of NaturallySpeaking. Check the accounts and in the meantime…



-------------------------



 01/16/2014 01:25 PM
User is offline View Users Profile Print this message

Author Icon
R. Wilke
Top-Tier Member

Posts: 6104
Joined: 03/04/2007

Originally posted by: BigTech Never argue with someone who uses their signature for advertising...

 

Well, BigTech, if you are worried about advertising, you are probably visiting the wrong forums. If there is anyone around here doing some kind of business along the lines of Dragon, somehow, trying hard to do the really useful things, from the perspective of the end-user, and particulary the perspective of the disabled, which isn't really difficult to believe in this case as we are discussing a quadriplegic, without being focused on profit while neglecting the real value he has to offer, that would be Lindsay.

 

So while his comment to you may have been a bit harsh, I believe that your initial posting was a bit inconsiderate, and unacceptable on many accounts for that matter.

 

Rüdiger

 



-------------------------



We hook into it, because we can! (Home/Premium/Pro/Group, Ver. 12 or higher)


No need to buy if all you want to do is try ...
DragonEcho, DragonPhrases, DragonBench, DragonSources (more to come)
Click the picture and find out!



 01/16/2014 01:38 PM
User is offline View Users Profile Print this message

Author Icon
monkey8
Top-Tier Member

Posts: 3108
Joined: 01/14/2008

Thanks Rüdiger, I have removed the unnecessary part of my response anyway, it's just annoying as part of the whole reason of being here is to counteract the fiction and advertising as you know. Time to move on from this thread.



-------------------------



 01/16/2014 03:36 PM
User is offline View Users Profile Print this message

Author Icon
R. Wilke
Top-Tier Member

Posts: 6104
Joined: 03/04/2007

Time to move on from this thread.

 

I basically agree with that, for a number of reasons, however, when Mark recently shifted from putting the blame on Nuance for being responsible for it, to putting the blame on Nuance for not getting it straight with Microsoft, when he said:

 

Clearly, Nuance should try pressuring Microsoft to fix this, but in the meantime they owe it to their customers to provide a workaround. 

 

It seemed to me that finally some kind of progress was being made, although I have lost account of the times positions have been shifted in this thread by now, so I may as well just have been halucinating.

 

All in all, this must be just about the right time to leave it at that, or leave it those to whom this is vital for whatever reason.

 

Rüdiger

 



-------------------------



We hook into it, because we can! (Home/Premium/Pro/Group, Ver. 12 or higher)


No need to buy if all you want to do is try ...
DragonEcho, DragonPhrases, DragonBench, DragonSources (more to come)
Click the picture and find out!



 01/15/2014 10:50 PM
User is offline View Users Profile Print this message


mdl
Top-Tier Member

Posts: 766
Joined: 04/18/2009

<blockquote>
Your main source of evidence previously seemed to be the Microsoft.net implementation of SendKeys and I see you have abandoned that and conveniently moved to autoHotKey as your main source of validation and you still haven't answered my specific question about.net.
</blockquote>

I think there's a misunderstanding here somewhere.  If you look back in this thread, you will see that Chuck, not I, brought up .net and that I have made no claims so far about .net SendKeys and the doubling/dropping bug.  I suppose some people might consider the fact that Microsoft moved away from the Journal hook method used by .Net SendKeys due to timing issues when Vista came out as circumstantial evidence that it is a problematic input method and thus might be at fault, but I'm pretty sure you would agree with me that that is very weak evidence indeed.

I apologize if I've been unclear or misleading in any way.

 01/15/2014 11:19 PM
User is offline View Users Profile Print this message


mdl
Top-Tier Member

Posts: 766
Joined: 04/18/2009

<quote>

Why don't you produce 3 simple applications that will send keys to any window, one can use SendInput, one can use journal playback and one can use SendMessage then we will know for sure (having access to the source code) exactly what is doing what instead of speculating that one application does this and another application does that.

</quote>

I did write such an application for SendInput (see http://www.speechcomputing.com/node/8424); it confirms that SendInput does not suffer from the doubling/dropping bug.

Writing an application to send synthetic keystrokes via the Journal hook is apparently quite complicated; a couple of Google searches didn't turn anything up in the way of advice on how to do it.  AutoHotkey's SendPlay function is explicitly stated as using the Journal hook and it *does* suffer from the doubling/dropping bug. 

I haven't tried writing a SendMessage app but I'm dubious that could produce the dropping/doubling  symptoms because that method doesn't really have any sense of "start" of a sequence of keystrokes -- you just keep doing the same thing over and over again.  (With the hook, you install a hook at the start and with SendInput there is a single
Windows API call.)

 

 01/15/2014 11:29 PM
User is offline View Users Profile Print this message


mdl
Top-Tier Member

Posts: 766
Joined: 04/18/2009

My gut feeling (not proven by a long shot) is there some kind of race condition bug in Windows Vista onwards with retrieving the initial events from a journal hook.  Unfortunately, it doesn't seem like Microsoft is in any hurry to fix this.  Given that DNS seems to trigger the bug more often than AutoHotkey, presumably exactly how the hook is used matters. 

Clearly, Nuance should try pressuring Microsoft to fix this, but in the meantime they owe it to their customers to provide a workaround.  It seems like switching to SendInput would be an effective workaround but maybe there are some applications that don't work with SendInput but do work with the journal hook.  Given that those applications appear to be rare, I wish Nuance would at least give us an option to switch the input method.

 01/16/2014 05:43 AM
User is offline View Users Profile Print this message

Author Icon
monkey8
Top-Tier Member

Posts: 3108
Joined: 01/14/2008

My gut feeling (not proven by a long shot)

 

More like it,  if journal playback is difficult to implement you could simply call the Microsoft.net implementation of SendKeys with a config file for your application set to use "journalhook" (easy to say with visual studio). There is a Code Project article on using journal playback which you could try. What happens if you do SendKeys with a fairly long string using a macro recorded script which will almost definitely use journal playback?



-------------------------



 01/12/2014 05:29 PM
User is offline View Users Profile Print this message

Author Icon
monkey8
Top-Tier Member

Posts: 3108
Joined: 01/14/2008

Originally posted by: mdl By SendKeys, I am referring to the version provided by advanced scripting, which uses the journal hook method of sending events.  SendSystemKeys, by contrast, uses the keybd_event method if I'm not mistaken.  Only the first method of sending events appears to suffer from the doubling/dropping bug.  Unfortunate, Dragon's sends dictation to non-select-and-say Windows via the Journal hook method.

 

I have workarounds for sending keys from commands (e.g., use an extra {shift} or use SendInput via new Keys Vocola extension) but not for dictation.

 

Yes so as I say above the Advanced Scripting implementation of SendKeys is SAX Basic so the first problem really has nothing to do with Dragon other than the fact they have used this SAX Basic scripting engine. I have kept the dictation issue separate.



-------------------------

 01/31/2013 08:52 PM
User is offline View Users Profile Print this message

Author Icon
Chucker
Top-Tier Member

Posts: 14010
Joined: 10/10/2006

mdl,

Long long ago in a galaxy far far away Microsoft reported, shortly after the release of Windows 7, that there are certain conditions under which SendKeys may cause problems with a full explanation of what they might be and why they might occur, as well as, I think, workarounds. That technote was located on MSDN (Microsoft Developer Network). You might be able to find it, but I've long since forgotten where it is. In addition, you might want to review it because I believe there was a reference to the problem that you are experiencing.

Further, have you reported this problem to Nuance development via the "feedback link" in the DNS 11.5/12 Dragon Help. If you haven't, I would suggest that you reported quickly if you want to get it reviewed and into any service pack release for DNS 12. Obviously it's not going to be fixed for DNS 11.5.

No arguments, no disagreements, just suggestions.

Chuck

Almost doesn't count except in horseshoes and grenades.

-------------------------

VoiceComputer: the only global speech interface.

The views, thoughts and opinions expressed in this post are my own and do not reflect those of VoiceTeach LLC.

Chuck Runquist
VoiceComputer technical support

 01/31/2013 10:04 PM
User is offline View Users Profile Print this message


mdl
Top-Tier Member

Posts: 766
Joined: 04/18/2009

Damm if I can find that technote.  Closest I could come was:

http://msdn.microsoft.com/en-us/library/system.windows.forms.sendkeys.send.aspx

which has:

NoteNote

The SendKeys class has been updated for the .NET Framework 3.0 to enable its use in applications that run on Windows Vista. The enhanced security of Windows Vista (known as User Account Control or UAC) prevents the previous implementation from working as expected.

The SendKeys class is susceptible to timing issues, which some developers have had to work around. The updated implementation is still susceptible to timing issues, but is slightly faster and may require changes to the workarounds. The SendKeys class tries to use the previous implementation first, and if that fails, uses the new implementation. As a result, the SendKeys class may behave differently on different operating systems. Additionally, when the SendKeys class uses the new implementation, the SendWait method will not wait for messages to be processed when they are sent to another process.

If your application relies on consistent behavior regardless of the operating system, you can force the SendKeys class to use the new implementation by adding the following application setting to your app.config file.

To force the SendKeys class to use the previous implementation, use the value "JournalHook" instead.

 

I can't find any Google hits for workarounds or really even complaints.

 



 01/31/2013 10:05 PM
User is offline View Users Profile Print this message


mdl
Top-Tier Member

Posts: 766
Joined: 04/18/2009

I'm not entirely sure if those "timing issues" refer to the dropping or doubling of keystrokes.

 

 02/03/2013 12:28 PM
User is offline View Users Profile Print this message


mdl
Top-Tier Member

Posts: 766
Joined: 04/18/2009

I reported the issue to Dragon via the feedback form; reference number is #130203-000041.

I included a link to this thread.

 

 02/16/2013 10:42 PM
User is offline View Users Profile Print this message


mdl
Top-Tier Member

Posts: 766
Joined: 04/18/2009

Additional testing reveals that in rare cases later events are dropped and I saw one case where "D " turned into "dd " -- that is, the first shift of that was dropped and the second "d" event doubled.  The problem also occurs with Advanced Scripting's SendKeys, which seems more prone to dropping later events.

 

 04/06/2013 12:40 PM
User is offline View Users Profile Print this message


mdl
Top-Tier Member

Posts: 766
Joined: 04/18/2009

I recently replaced my home PC with a new one running Windows 7 64-bit; this problem is indeed much worse with Windows 7 64 bit than Vista 64-bit.
 04/17/2013 11:32 AM
User is offline View Users Profile Print this message

Author Icon
Lunis Orcutt
Top-Tier Member

Posts: 34151
Joined: 10/01/2006

We have never found a solution to the occasional double lettering but when upgrading from Vista 64-bit to Windows 7 64-bit, we noted that many of our SendDragonKeys scripts (same as SendKeys) deployed too quickly for Windows 7 and had to be converted into SendSystemKeys.



-------------------------
Lunis Orcutt (615) 884-4558 x2
Live Chat
KnowBrainer Videos
What Is KnowBrainer Professional 2017 (PDF)
KnowBrainer 2017 (30 Day Trial)
SpeechStart+ (15 Day Trial)


 04/21/2013 03:02 PM
User is offline View Users Profile Print this message


G.J. Premo
Top-Tier Member

Posts: 737
Joined: 05/12/2007

My keyboard is doubling keys, or endlessly repeating them until I press Esc numerous times.  Dragon is running, but mic is off.

Could Dragon have anything to do with this?

Its a wireless keyboard, I check the batteries, they are OK on the battery tester, but maybe I should put in new ones?

 04/21/2013 03:15 PM
User is offline View Users Profile Print this message

Author Icon
Chucker
Top-Tier Member

Posts: 14010
Joined: 10/10/2006

G.J.,

Easy to check whether or not Dragon is at least part of the equation by simply unloading it. If the problem persists, then it's a problem with your wireless keyboard. I would suspect that Dragon is not the cause.

Chuck

"Many of the things you can count, don't count. Many of the things you can't count, really count." Albert Einstein



-------------------------

VoiceComputer: the only global speech interface.

The views, thoughts and opinions expressed in this post are my own and do not reflect those of VoiceTeach LLC.

Chuck Runquist
VoiceComputer technical support



 04/23/2013 06:33 PM
User is offline View Users Profile Print this message


G.J. Premo
Top-Tier Member

Posts: 737
Joined: 05/12/2007

It has never happened without DNS 12.5 running, that I have noticed. I did try it for a while without DNS running before writing about the problem.

But I don't know how big a testing period one would need to definitely conclude that DNS is causing the problem, that is why I wrote.

But running for 2 hours,  2 different times without DNS and trying to recreate , no problem. Preliminary conclusion is that DNS 12.5 is causing the problem, but more testing is required.

 09/01/2013 06:53 PM
User is offline View Users Profile Print this message


mdl
Top-Tier Member

Posts: 766
Joined: 04/18/2009

I had a chance to use a Windows 8 box with DNS 12.5 for a while; I saw almost no occurrences of this bug. Has anyone else noticed a decreased frequency of the bug with Windows 8 and/or DNS 12.5?
 09/17/2013 11:42 PM
User is offline View Users Profile Print this message


mdl
Top-Tier Member

Posts: 766
Joined: 04/18/2009

Sadly, definitely not fixed in 12.5.

 09/27/2013 08:38 PM
User is offline View Users Profile Print this message


mdl
Top-Tier Member

Posts: 766
Joined: 04/18/2009

By using Windows detective
(http://windowdetective.sourceforge.net/), it is possible to watch all
the Window's messages an application receives. In particular, you can
watch for the WM_KEYDOWN and WM_KEYUP messages, which Windows sends to
applications to indicate that a key has been pressed down or up
respectively. I've used this technique to verify my hypothesis that
this bug indeed involves keystroke events being dropped or doubled.

For example, DNS tried to send " months" and the application
actually received -{space} +m -m +o -o +n -n... where + denotes a
WM_KEYDOWN message and - denotes a WM_KEYUP message; you will note that
the initial +{space} was dropped. Another example, "Thanks" sent +t -t
-{shift} +h -h..., again with the initial event, +{shift} being dropped.
By contrast, a dropping example was "and" sending +a +a -a +n -n...;
notice that the first event, +a, is duplicated here.

Intriguingly, there appears to be enough information here(*) to
allow reconstructing what DNS is trying to send so it might be possible
to build a workaround. I'm considering trying to patch the Cygwin X
server to do this.

- Mark
(*) - Luckily, DNS sends "ID" as +{shift} +i -i -{shift} +{shift} +d -d
-{shift} so the scope of the modifier keys is clear when only the first
event is affected.



 09/27/2013 08:51 PM
User is offline View Users Profile Print this message

Author Icon
phils
Top-Tier Member

Posts: 2622
Joined: 10/02/2006

Cool work Mark!

Phil Schaadt
 01/11/2014 07:17 PM
User is offline View Users Profile Print this message


mdl
Top-Tier Member

Posts: 766
Joined: 04/18/2009

Let me rephrase that, I don't currently know of any way to replace the dictation mechanism. I'd love to hear otherwise, though.
 01/13/2014 10:24 PM
User is offline View Users Profile Print this message

Author Icon
Chucker
Top-Tier Member

Posts: 14010
Joined: 10/10/2006

Mark et al.,

Polar Engineering granted L&H, and subsequently ScanSoft and Nuance, and exclusive royalty-free/license free use of the Sax 7 Basic Compiler for use with Advanced Scripting in DNS. That product was discontinued in 2006, but Polar Engineering continues to honor that agreement. If Nuance were to upgrade to the current WinRap Basic v10, then they would have to pay an annual licensing fee depending upon use and likely on a per user basis. Nuance apparently chooses not to move to the latest version of WinRap Basic (i.e., to pay an annual licensing fee for doing so).





Chuck

Almost doesn't count except in horseshoes and grenades.



-------------------------

VoiceComputer: the only global speech interface.

The views, thoughts and opinions expressed in this post are my own and do not reflect those of VoiceTeach LLC.

Chuck Runquist
VoiceComputer technical support



 01/14/2014 09:05 AM
User is offline View Users Profile Print this message

Author Icon
monkey8
Top-Tier Member

Posts: 3108
Joined: 01/14/2008

Originally posted by: Chucker Mark et al., Polar Engineering granted L&H, and subsequently ScanSoft and Nuance, and exclusive royalty-free/license free use of the Sax 7 Basic Compiler for use with Advanced Scripting in DNS. That product was discontinued in 2006, but Polar Engineering continues to honor that agreement. If Nuance were to upgrade to the current WinRap Basic v10, then they would have to pay an annual licensing fee depending upon use and likely on a per user basis. Nuance apparently chooses not to move to the latest version of WinRap Basic (i.e., to pay an annual licensing fee for doing so). Chuck Almost doesn't count except in horseshoes and grenades.

 

Chuck the licensing fees are on the polar engineering website, they are peanuts, we have one for WinWrap basic which allows us to sell as many copies of one particular application as we please.

 

I think Mark is referring to the fact that because the license is only for sax basic then they might be still running with a very old implementation of SendKeys. However they are not and the reason we know this is because the implementation of SendKeys (the Nuance implementation within SAX Basic) was changed recently (more later). The polar engineering scripting engines allow you to do this.

 

Lindsay



-------------------------



 01/14/2014 12:28 PM
User is offline View Users Profile Print this message

Author Icon
Chucker
Top-Tier Member

Posts: 14010
Joined: 10/10/2006

Lindsay,

Thank you for the clarification.

Chuck

"Kindness is the language which the deaf can hear and the blind can see." -- Mark Twain

-------------------------

VoiceComputer: the only global speech interface.

The views, thoughts and opinions expressed in this post are my own and do not reflect those of VoiceTeach LLC.

Chuck Runquist
VoiceComputer technical support

 02/08/2014 04:07 PM
User is offline View Users Profile Print this message


mdl
Top-Tier Member

Posts: 766
Joined: 04/18/2009

FYI, I tried using some fairly evil code (i.e., it accesses kernel
data structures by installing an untrusted driver) I found on the web @
http://blog.airesoft.co.uk/2011/07/hookers-underneath-the-sheets/ that
is supposed to list all Windows hooks currently being used and by what
programs. I was hoping I could use it to tell me whether or not the
journal hook was being used by DNS.

Unfortunately, it doesn't show the journal hook being used even when
I know it is being used (E.g., during AutoHotkey's SendPlay mode, which
I looked at the source code for). I also tried playing around with
typing {ctrl+esc}, which is supposed to to stop journal playback, in the
middle of dictation. While it does interrupt SendDragonKeys but not
SendInput, I can't seem to manage to type it fast enough in the middle
of dictation being sent.

At this point I am out of ideas for determining whether or not
dictation uses the journal hook to send characters to nonstandard
windows short of reverse engineering the DNS binary (forbidden by the
license I believe) or "bribing" a DNS employee.



 02/08/2014 04:54 PM
User is offline View Users Profile Print this message

Author Icon
R. Wilke
Top-Tier Member

Posts: 6104
Joined: 03/04/2007

Mark,

you can trust that we, myself and my buddy Lindsay who is currently not available sadly for specific reasons, have been looking at these things and things even going deeper than this really seriously from all kinds of perspectives, and we are still clueless in many ways. Of course we would have tried reverse engineering, for the heck of it. We haven't yet considered bribing, though.

RĂ¼diger


-------------------------



We hook into it, because we can! (Home/Premium/Pro/Group, Ver. 12 or higher)


No need to buy if all you want to do is try ...
DragonEcho, DragonPhrases, DragonBench, DragonSources (more to come)
Click the picture and find out!

 01/11/2016 06:53 PM
User is offline View Users Profile Print this message


mdl
Top-Tier Member

Posts: 766
Joined: 04/18/2009

R. Wilke, I stand corrected. It is indeed possible to replace the dictation mechanism; my workaround for the lack of non-BasicTextControl in nonstandard applications in DNS 13 and onwards does this. It thus provides a workaround for the doubling/dropping bug.
 01/11/2016 06:54 PM
User is offline View Users Profile Print this message


mdl
Top-Tier Member

Posts: 766
Joined: 04/18/2009

FYI, as of the new release of Vocola 2, 2.8.5, Vocola *commands* are immune fromthe doubling/dropping bug.
 01/11/2016 07:12 PM
User is offline View Users Profile Print this message

Author Icon
phils
Top-Tier Member

Posts: 2622
Joined: 10/02/2006

I must be missing something here. As I don't use Vocola, I just went over to the Vocola site and found:

Version 2.8.5 -- January 8, 2016
Workaround for the doubling/dropping bug: key sequences are now preceded by the current-language-appropriate version of {shift}; doubling or dropping of the initial shift key down event does not affect later keystrokes.

 

That workaround has been discussed on the forum as a dictation style for quite some time. There are multiple variations and I happen to use a "no cap..." or "cap..." all the time when I'm dictating in a non-Select-and-Say window so I don't get funny behavior. However, it is always a positive to have it in code..

If I recall correctly, from some of your other posts, you are working on some additional  Vocola code that would give us limited Select-and-Say at least for the previous utterance.

Did I overlook something?

 

Phil Schaadt

 01/11/2016 07:16 PM
User is offline View Users Profile Print this message


mdl
Top-Tier Member

Posts: 766
Joined: 04/18/2009

To clarify:
The text that Vocola commands are to send during their execution is protected from the doubling/dropping bug. Vocola 2 has no effect on dictation and thus provides no protection for it.
I'm working on a new workaround, Vortex, that restores BasicTextControl for nonstandard applications. Among other things, it transmits dictation to applications via SendInput plus the {shift} trick, which protects the dictation from the dropping/doubling bug.
 01/11/2016 08:37 PM
User is offline View Users Profile Print this message

Author Icon
phils
Top-Tier Member

Posts: 2622
Joined: 10/02/2006

cool. thanks for the clarification.
One more question. With DNS Pro, the open ended commands allow dictation into non standard windows but do not allow direct modification of what was just dictated.
What additional functionality, if any, are you targeting

Phil Schaadt
 01/11/2016 11:13 PM
User is offline View Users Profile Print this message


mdl
Top-Tier Member

Posts: 766
Joined: 04/18/2009

The functionality of BasicTextControl includes things like "select XYZ", "correct foo through foobar", and "insert before foo" applied to recently dictated text.
 01/12/2016 12:23 AM
User is offline View Users Profile Print this message

Author Icon
phils
Top-Tier Member

Posts: 2622
Joined: 10/02/2006

that would be supercool
Phil Schaadt
 03/14/2016 11:37 PM
User is offline View Users Profile Print this message


mdl
Top-Tier Member

Posts: 766
Joined: 04/18/2009

Sadly, I can confirm now that DPI 14 on Windows 7 still suffers from this bug. :-(
 10/18/2016 06:35 AM
User is offline View Users Profile Print this message

Author Icon
michaelbeijer
Top-Tier Member

Posts: 235
Joined: 12/07/2014

@mdl: any news on Vortex? Can'y find much info on it on the web, and wanted to test it again to get Select-and-Say working in an unsupported app (SDL Studio 2017, my CAT tool).

-------------------------

Dragon Professional Individual 15
KnowBrainer 2017 + AutoHotkey
Win 10 – 64-bit, i7, 32 GB RAM
SpeechWare 3-in-1 TableMike 

 01/16/2017 02:57 AM
User is offline View Users Profile Print this message

Author Icon
HelpMeWithDrago..
Junior Member

Posts: 25
Joined: 01/05/2017

Was any progress made on resolving this problem through Marks research (detecting when these commands are sent, modifying them, and sending them again) or vortex? And I didn't quite understand, is Vortex a workaround for Dragon in general or just Vocola?
 01/16/2017 05:23 PM
User is offline View Users Profile Print this message


mdl
Top-Tier Member

Posts: 766
Joined: 04/18/2009

Nuance "solved" the problem with double/dropped characters when dictating into nonstandard applications by dint of throwing out the baby, the bathwater, and the entire bathroom: that is, they completely disabled dictation into nonstandard applications in DNS 13+. SendDragonKeys is still broken in Advanced Scripting. I'm assuming KnowBrainer has adopted the {shift} workaround I discovered or is just using SendInput directly, so shouldn't suffer from the problem. Vocola has had the workaround for a while now.

If you like the baby (dictating into nonstandard applications with corrections), you can either stay on DNS 12.5 or try my experimental Vortex grammar, which currently doesn't work with DPI 15 due to a DPI 15 bug.
 01/17/2017 12:36 AM
User is offline View Users Profile Print this message

Author Icon
Lunis Orcutt
Top-Tier Member

Posts: 34151
Joined: 10/01/2006

Originally posted by: mdl Nuance "solved" the problem with double/dropped characters when dictating into nonstandard applications by dint of throwing out the baby, the bathwater, and the entire bathroom: that is, they completely disabled dictation into nonstandard applications in DNS 13+. ...


Nuance's sledgehammer approach is effective but eliminates Direct Dictation in over 90% of applications. Rather than adding {Shift}, we use a pseudo AI approach in our Force Dictation commands. The downside is the lack of Select-&-Say correction but we also have a pseudo artificial correction approach. For example, if you dictate “the brown fox jumped over the fence” you can say Replace <brown fox> with <yellow dog> to change “brown fox” to “yellow dog”.



-------------------------
Lunis Orcutt (615) 884-4558 x2
Live Chat
KnowBrainer Videos
What Is KnowBrainer Professional 2017 (PDF)
KnowBrainer 2017 (30 Day Trial)
SpeechStart+ (15 Day Trial)
 01/16/2017 05:25 PM
User is offline View Users Profile Print this message


mdl
Top-Tier Member

Posts: 766
Joined: 04/18/2009

Vortex takes over dictation for nonstandard applications (the NatLink APIs allow this), restoring basic text control including corrections via the spelling window. Sadly, the corrections menu does not work.
Statistics
30609 users are registered to the KnowBrainer Speech Recognition forum.
There are currently 2 users logged in.
The most users ever online was 3936 on 09/08/2015 at 11:44 AM.
There are currently 265 guests browsing this forum, which makes a total of 267 users using this forum.

FuseTalk Standard Edition v4.0 - © 1999-2018 FuseTalk™ Inc. All rights reserved.