Hi, I belive that the problem is that you have a lot of return()-points in your event-loop. When you call pygame.event.get() you get all events in the queue as a list. If you break the loop with a return before you have handled all given events you will lose the rest in the list.
My 5-cents Best Regards /John Eriksson 2010/3/17 René Dudfield <ren...@gmail.com>: > hi, > > which OS are you using? > > cheers, > > On Thu, Mar 18, 2010 at 12:58 AM, Wakefield, Robert > <rjw03...@engr.uconn.edu> wrote: >> >> I've been trying to handle mouse support using pygame, and I've found that >> clicks are being missed outright. I've tested my code thoroughly* and the >> problem is on the pygame end. I have included the relevant code below. >> Thank you in advance. >> >> * - To be clear here, I've tried everything I can think of with no effect. >> This includes disabling all code other than the key check in gameLoop(), >> and also disabling the call to 'handleInputEvent()' so that only the print >> statements remain. I still miss click events, with the print sometimes >> giving me two presses before a release or vice versa. I only click the left >> mouse button, so it's not a false positive, and I've checked the length of >> the event queue and never seen it rise past single digits (sometimes 2-3 due >> to mouse motion and other events). Framerates are fairly constant (+/- 1 >> FPS @ ~60FPS total), and Key events print a normal press/release pattern >> just fine. The mouse issue resulted in bad code functionality, so this is a >> serious issue for adding mouse support. >> >> def gameLoop(): >> done = False >> while not done: >> #... snip >> res = checkKeysGUI() # check what keys are pressed, HW-level >> #... snip >> return 0 >> >> def checkKeysGUI(): >> ''' check the SDL Event Queue ''' >> for event in pygame.event.get(): >> if event.type == SYSWMEVENT: >> pass >> >> elif event.type == QUIT: # Quit Button, the big red X >> handleAppQuit() >> >> elif(event.type == MOUSEMOTION): >> ''' check the mouse buttons; TODO: do we need to act if mouse >> enters/leaves window?''' >> updateMouse(event.pos[0], event.pos[1]) # [0] = X, [1] = Y >> >> elif(event.type == MOUSEBUTTONUP or event.type == MOUSEBUTTONDOWN): >> ''' we actually have a mouse click, dispatch it to handlers''' >> pressed = (event.type == MOUSEBUTTONDOWN) >> ''' **DEBUG ONLY** ''' >> if(pressed): >> print('keypress') >> else: >> print('keyrelease') >> if not (handleInputEvent(kdef5.MOUSEMAP[event.button], >> pressed)): >> return False >> >> elif(event.type == KEYUP or event.type == KEYDOWN): >> ''' check the keyboard keys vs. our keymap ''' >> pressed = (event.type == KEYDOWN) >> ''' **DEBUG ONLY** ''' >> if(pressed): >> print('keypress') >> else: >> print('keyrelease') >> if not (handleInputEvent(kdef5.KEYMAP[event.key], pressed)): >> return False >> >> return True >