This is the mail archive of the cygwin-xfree mailing list for the Cygwin XFree86 project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: bug report/suggested temp. patch: handling bursts of sent keys



Hi.

      I don't appear to have gotten any response to my message sent to
this list January 12 (copied below).  Do I have the right list?  Am I
supposed to use a different mechanism to report bugs with the Cygwin X
server?  Please help.

- Thanks,
  Mark

  
>  Background: 
>  
>      I use Nuance's Dragon NaturallySpeaking voice recognition software
>  to control remote Linux systems from a Windows box.  I open up xterms
>  and emacs windows on a local Cygwin X server.  Occasionally the voice
>  recognizer makes a mistake, which has to be corrected.  The mechanics of
>  how this is done are unimportant; what matters is how Dragon applies the
>  correction.  It does this by sending a large burst of keystrokes via
>  something like SendKeys.  (E.g., many (shift) arrow keys to select the
>  text to be changed, a backspace to delete it, then the replacement
>  text.)
>  
>      Unfortunately, there is a bug in the current released Cygwin X
>  server that causes it to drop sent keystrokes when the burst exceeds a
>  given size (roughly 64 or 128 keys depending on the version).  This
>  breaks correction, and forces painful manual fix up of the text.  Note
>  that what is really dropped are key events so the system can get into
>  the state where the shift key remains pressed or a key starts repeating
>  forever because the key up event was dropped.
>  
>  
>  Problem/temporary patch:
>  
>      I investigated and found that the problem appears to be that the X
>  event queue (miEventQueue) in hw/mi/mieq.c is statically allocated with
>  a ridiculously small value (512).  When keyboard bursts come in, this
>  queue overflows, causing the problem.  If I set this queue to a more
>  reasonable value of 5120:
>  
>      mieq.c:62:#define QUEUE_SIZE  5120    /* was 512 */
>  
>  then 10 times larger key bursts can be accommodated without problem.
>  This value is probably still too small in practice so it would be safer
>  to go with a larger value like 25000.
>  
>      I characterize this as a temporary patch because ideally either the
>  queue would be made dynamic with no upper bound in size, or some kind of
>  flow control would be implemented so the code that receives Windows key
>  events does not overflow the event queue.
>  
>  
>  Reproducing the problem:
>  
>      Dragon NaturallySpeaking costs money, so I will instead describe how
>  to demonstrate the problem using AutoHotkey, which is a free download
>  from http://www.autohotkey.com/.  Download that program then create and
>  run the following script, burst.ahk:
>  
>  ====================  cut here for burst.ahk ====================
>  #space::
>      Send ********** ********** ********** ********** **********{enter}********** ********** ********** ********** **********{enter}********** ********** ********** ********** **********{enter}********** ********** ********** ********** **********{enter}********** ********** ********** ********** **********{enter}
>  =================================================================
>  
>  Finally, type the Windows key and space together while focus is on an X
>  application.  The bug is not present, the following will be typed:
>  
>  ********** ********** ********** ********** **********
>  ********** ********** ********** ********** **********
>  ********** ********** ********** ********** **********
>  ********** ********** ********** ********** **********
>  ********** ********** ********** ********** **********
>  
>  
>  On the other hand, if the bug is present you'll get something more like:
>  
>  ********** ********** ********** ********** **********
>  ********** ********** ********** ********** **********
>  *******                                         
>  
>  
>  - Mark
>  


--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://x.cygwin.com/docs/
FAQ:                   http://x.cygwin.com/docs/faq/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]