My keyboard has always done that too. Most keyboards have problems like that.
A good workaround is to use CTRL instead of space. CTRL mixes better with arrow keys on almost all computers. I have also had good luck with Z and X on many keyboards, in case you need more keys. --- James Paige On Mon, Apr 16, 2007 at 09:43:06PM -0400, Kris Schnee wrote: > While playing with my little game framework, I found I could jump in > each of eight compass directions, except northwest. Investigating the > problem, I found that when my character was moving northwest (angle 315, > where 0 is north and 90 is east), the "Jump" function wasn't getting > called. So I told the main input loop to print a message whenever the > Space (jump) key was hit. > > According to Pygame, it seems, hitting the Space key while the Up and > Left arrows are held down doesn't generate a KEYDOWN event! Yet there > seems to be no problem with hitting another key, or at least K or > LSHIFT, with this arrow combination, or with any other arrow combination. > > Below is a test script that replicates the error. Am I overlooking > something obvious here, or is there a glitch in pygame.event? > > Kris > > <code> > > import pygame > from pygame.locals import * > pygame.init() > screen = pygame.display.set_mode((640,480)) > > """ > Run a standard Pygame event loop with a blank screen. ESC to exit. > The loop prints what "angle" you're holding down with the arrow keys, > whenever you hit Space, LSHIFT, or K. > The error is that hitting Space while holding Left and Up doesn't seem > to generate a KEYDOWN event! > """ > > done = False > while not done: > > report_angle = False > > ## Handle events. > keys_pressed = pygame.key.get_pressed() ## Keys that're down. > > for event in pygame.event.get(): > if event.type == QUIT: > done = True > elif event.type == KEYDOWN: > print "A key was hit: "+str(event.key) > if event.key == K_ESCAPE: > done = True > > ## This doesn't seem to work! > elif event.key == K_SPACE: > print "Pressed Space." > report_angle = True > > ## This one works. > elif event.key == K_LSHIFT: > print "Pressed LeftShift." > report_angle = True > > ## This one works fine. > elif event.key == K_k: > print "Pressed K." > report_angle = True > > if report_angle: > move_x, move_y = 0, 0 > if keys_pressed[ K_UP ]: > move_y = 1 > elif keys_pressed[ K_DOWN ]: > move_y = -1 > if keys_pressed[ K_LEFT ]: > move_x = -1 > elif keys_pressed[ K_RIGHT ]: > move_x = 1 > angle = > {(0,0):None,(0,-1):180,(0,1):0,(-1,0):270,(1,0):90,(-1,1):315,(1,1):45,(-1,-1):225,(1,-1):135}[(move_x,move_y)] > print "Angle: "+str(angle) > > pygame.display.update() > > pygame.display.quit() > > > </code> >