- // If this button already pressed, release first
- var lastKeyDownChar = keydownChar[keydownCode];
- if (lastKeyDownChar)
- sendKeyReleased(lastKeyDownChar);
-
- keydownChar[keydownCode] = keysym;
-
- // Clear old key repeat, if any.
- stopRepeat();
-
- // Send key event
- var returnValue = sendKeyPressed(keysym);
-
- // Start repeating (if not a modifier key) after a short delay
- repeatKeyTimeoutId = setTimeout(function() { startRepeat(keysym); }, 500);
-
- return returnValue;
- }
+ // Defer handling of event until after any other pending
+ // key events.
+ if (!deferred_keypress)
+ deferred_keypress = window.setTimeout(fireKeyPress, 0);