This is the mail archive of the cygwin-xfree@cygwin.com 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: Duplicate Keystrokes - Again, Again!


Jean-Claude,

Jean-Claude Gervais wrote:
Harold, guys,

	I'm just about certain that the repeated keys are caused by latency, not by
load:

	When I use Netmeeting to control a machine running Cygwin-XFree and I see
the duplicated-keystroke problem often.


Yeah, that is what I meant by high-load causing the problem. Basically, anything that causes a delay between keystrokes is causing the problem.


When this happens, almost without exception, it is NOT the machine running
Cygwin-XFree nor the machine running Linux who are under high load. Even the
machine I am using to remote control is not under heavy load.

 It is rather, without fail, when the telecommunications link the Netmeeting
session is routed over is running at capacity.

Is it a workable hypothesis to suggest that what might be happening is this:

A keydown message is arriving at Cygwin-XFree, and it takes too long for a
key-up message to arrive, so Windows generates another key event?


No, that most certainly is not it. I have said, many many times, that I followed a single key press message (WM_KEYDOWN) all the way down as far as I could with gdb. When I hit 'continue', BAM! I get two key strokes in the X Client. gdb then looped around to the breakpoint set in the WM_KEYDOWN message processing. So, there is no way that a WM_KEYDOWN could have snuck by me. I can say for certain that this was one WM_KEYDOWN causing two keystrokes to appear.


I seem to remember that Windows works like this -

WM_KEYDOWN

WM_CHAR

if a pause of X milliseconds occurs here, Windows does this -

WM_KEYDOWN
WM_CHAR

WM_KEYDOWN
WM_CHAR
...	More WM_KEYDOWNs and WM_CHARs until a WM_KEYUP arrives.
WM_KEYUP

The interesting part is that both the WM_KEYDOWN and WM_CHAR messages have a
flag in them called 'fRepeat' that will be set to 1 (true) if this is the
case.

Anyhow, I downloaded the code for Cygwin's X server and I will spelunk it
soon.

I'd appreciate any ideas in the meantime.


Let us know what you can figure out.


Harold


-----Original Message----- From: cygwin-xfree-owner at cygwin dot com [mailto:cygwin-xfree-owner at cygwin dot com]On Behalf Of Harold L Hunt II

It could be the delay between the
down message and the up message that is causing this.  But, like I said,
I looked through almost all of the code and nowhere could I find a part
that looped and created extra keypresses in the X Client.



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