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: New devel to-do item (release all pressed keyboard keys on focus loss)




> > I suppose for this the solution would be to make winSendKeyEvent
> > do nothing if
> > its fDown already matches the array element

> Nah, you can't do that because we sometimes call winSendKeyEvent multiple
> times from winwndproc/winWindowProc()/WM_KEYDOWN if the key has a repeat
> count.

But I can do it when both are *false*.  This goes over my earlier patch:

--- winkeybd.c~     Tue Dec  4 16:42:28 2001
+++ winkeybd.c Wed Dec  5 16:39:49 2001
@@ -439,7 +439,12 @@
 winSendKeyEvent (DWORD dwKey, Bool fDown)
 {
   xEvent           xCurrentEvent;
-
+
+  /* Ignore ups without a preceding down.  This happens when a keystroke
+     causes X to gain focus.  */
+  if (!fDown && !g_fKeyStates[dwKey])
+    return;
+
   ZeroMemory (&xCurrentEvent, sizeof (xCurrentEvent));

   xCurrentEvent.u.u.type = fDown ? KeyPress : KeyRelease;

> I'm kinda confused here.  You need to add an ErrorF () to WM_KEYDOWN and
> WM_KEYUP to see if the doubled key message is being sent again immediately
> after we regain focus.

Here is my XWin.log:

keydown #16 at 22939
keyup #16 at   23250
keydown #17 at 23320
keyup #17 at   23570
keydown #18 at 23680
keyup #18 at   23981
keydown #19 at 24091
keyup #19 at   24412
keydown #16 at 24452
keyup #16 at   24752
keydown #17 at 24792
Simulating release of key #17!
killfocus at   24862
setfocus at    32363
keyup #45 at   32483
killfocus at   42017

And here is my xterm after the setfocus at 32363 ms:

$ qwerqww

'w' is key #17.  The only thing that could be happening is that xterm is
outsmarting itself by doing something with its own killfocus.  My preference is
to let xterm users deal.  We're used to it. :-)

> > I doubt
> > whether I can figure it out completely without a major time investment.

> This is your baby now, and you're making good progress.  Don't be
> discouraged.  These things take time to work out correctly.

Without your help, I would probably lose patience.

-John



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