Commit bcbf2551 authored by Ulrich Sibiller's avatar Ulrich Sibiller Committed by Mike Gabriel

Events.c: add more comments and TEST output

parent e7451477
...@@ -1110,8 +1110,8 @@ FIXME: If we don't flush the queue here, it could happen ...@@ -1110,8 +1110,8 @@ FIXME: If we don't flush the queue here, it could happen
/* /*
FIXME: Don't enqueue the KeyRelease event if the key was FIXME: Don't enqueue the KeyRelease event if the key was
not already pressed. This workaround avoids a fake not already pressed. This workaround avoids a fake
KeyPress is enqueued by the XKEYBOARD extension. KeyPress being enqueued by the XKEYBOARD extension.
Another solution would be to let the events are Another solution would be to let the events
enqueued and to remove the KeyPress afterwards. enqueued and to remove the KeyPress afterwards.
*/ */
if (BitIsOn(inputInfo.keyboard -> key -> down, if (BitIsOn(inputInfo.keyboard -> key -> down,
...@@ -1150,6 +1150,9 @@ FIXME: Don't enqueue the KeyRelease event if the key was ...@@ -1150,6 +1150,9 @@ FIXME: Don't enqueue the KeyRelease event if the key was
nxagentXkbNumTrap = 0; nxagentXkbNumTrap = 0;
} }
/* Calculate the time elapsed between this and the last event we
received. Add this delta to time we recorded for the last
KeyPress event we passed on to our clients. */
memset(&x, 0, sizeof(xEvent)); memset(&x, 0, sizeof(xEvent));
x.u.u.type = KeyRelease; x.u.u.type = KeyRelease;
x.u.u.detail = nxagentConvertKeycode(X.xkey.keycode); x.u.u.detail = nxagentConvertKeycode(X.xkey.keycode);
...@@ -1165,8 +1168,14 @@ FIXME: Don't enqueue the KeyRelease event if the key was ...@@ -1165,8 +1168,14 @@ FIXME: Don't enqueue the KeyRelease event if the key was
x.u.keyButtonPointer.time = nxagentLastEventTime; x.u.keyButtonPointer.time = nxagentLastEventTime;
} }
if (!(nxagentCheckSpecialKeystroke(&X.xkey, &result)) && sendKey == 1) /* do not send a KeyRelease for a special keystroke since we
also did not send a KeyPress event in that case */
if (!(nxagentCheckSpecialKeystroke(&X.xkey, &result)) && (sendKey == 1))
{ {
#ifdef TEST
fprintf(stderr, "%s: passing KeyRelease event to clients\n", __func__);
#endif
mieqEnqueue(&x); mieqEnqueue(&x);
CriticalOutputPending = 1; CriticalOutputPending = 1;
...@@ -1178,6 +1187,12 @@ FIXME: Don't enqueue the KeyRelease event if the key was ...@@ -1178,6 +1187,12 @@ FIXME: Don't enqueue the KeyRelease event if the key was
NXShadowEvent(nxagentDisplay, X); NXShadowEvent(nxagentDisplay, X);
} }
} }
else
{
#ifdef TEST
fprintf(stderr, "%s: NOT passing KeyRelease event to clients\n", __func__);
#endif
}
break; break;
} }
...@@ -2241,6 +2256,9 @@ int nxagentHandleKeyPress(XEvent *X, enum HandleEventResult *result) ...@@ -2241,6 +2256,9 @@ int nxagentHandleKeyPress(XEvent *X, enum HandleEventResult *result)
if (nxagentCheckSpecialKeystroke(&X -> xkey, result)) if (nxagentCheckSpecialKeystroke(&X -> xkey, result))
{ {
#ifdef TEST
fprintf(stderr, "%s: NOT passing KeyPress event to clients\n", __func__);
#endif
return 1; return 1;
} }
...@@ -2262,6 +2280,10 @@ int nxagentHandleKeyPress(XEvent *X, enum HandleEventResult *result) ...@@ -2262,6 +2280,10 @@ int nxagentHandleKeyPress(XEvent *X, enum HandleEventResult *result)
x.u.u.detail = nxagentConvertKeycode(X -> xkey.keycode); x.u.u.detail = nxagentConvertKeycode(X -> xkey.keycode);
x.u.keyButtonPointer.time = nxagentLastKeyPressTime; x.u.keyButtonPointer.time = nxagentLastKeyPressTime;
#ifdef TEST
fprintf(stderr, "%s: passing KeyPress event to clients\n", __func__);
#endif
mieqEnqueue(&x); mieqEnqueue(&x);
CriticalOutputPending = 1; CriticalOutputPending = 1;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment