This is the mail archive of the
cygwin-xfree@cygwin.com
mailing list for the Cygwin XFree86 project.
Re: Duplicate Keystrokes - Again, Again!
- From: Harold L Hunt II <huntharo at msu dot edu>
- To: cygwin-xfree at cygwin dot com
- Date: Mon, 07 Apr 2003 10:42:42 -0400
- Subject: Re: Duplicate Keystrokes - Again, Again!
- References: <MPBBLPFLCFBIDNIENJFJKEBMMHAA.jc.gervais@videotron.ca>
- Reply-to: cygwin-xfree at cygwin dot com
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.