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: A thought about stuck keys


Jean-Claude,

Unfortunately, it is nowhere near that simple. Search the message archives for my notes on this. I sent at least one rather long and detailed message about this.

In brief, I ran XWin.exe in a debugger and watched the keypresses being handled. The problem with your theory is that a single keypress message results in a several function calls that drill deeper and deeper into the generic X code... I drilled all the way down as far as I could (following a single keypress message, mind you) and BAM! two key presses show up in xterm from the processing of a single keypress message.

So, we definitely don't need any kind of debouncing algorithm at the Cygwin/XFree86 level. This problem is either deep inside the generic X code (I couldn't find anywhere where the keypress was being duplicated) or it was happening in some Cygwin code.

I would not doubt it if this was due to something in Cygwin... since the problem only comes out when the machine is under very heavy load (such as running the Native GDI engine for XWin.exe) or perhaps when working remotely. This indicates to me that the bug is either due to a race or some sort of key repeat feature in Cygwin that is looking at the time difference between the key press message (is it peeking at that or does it have it cached somewhere?) and the time that the Cygwin keyboard handler gets called. I could be talking total nonsense here, but this seems plausible to me.

Here is a question: have you ever seen this happen in a program other than xterm or a program that is running inside an xterm? If not, then this may be a problem in xterm, not in Cygwin. I would really like to know the answer to this one.

Harold

Jean-Claude Gervais wrote:
Hi,

	I am using Microsoft Netmeeting to control a box running Cygwin XFree, and
like some of you have already noted, occasionally whatever is typed on the
keyboard gets echoed several times, acting almost like a stuck key. This
seems to happen to me MUCH, MUCH more when I am working remotely as I am
than when I am logged in locally or have a one-hop connection.

	I don't know XWindows very well, but it almost looks like the X keyboard
event-handler is getting fooled because of the extra latency the
communications channel is adding to the event times.

	For example, it seems like X sees a keydown message and responds to it,
sees another (duplicate) keydown message (for the same key) and doesn't make
sure there has been an intervening keyup message between the two. A
de-bouncing algorithm could do the job here.

	Maybe this is normal; that multiple keydown messages will get sent if you
hold down a key, but I am curious to know if this is something that can be
configured away.

	So, in summary, I'd like to know if it is possible to configure XFree to
NOT generate multiple keydown messages for ONE keypress.

Thanks.




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