def test_poll(self): if not self.is_interactive: py.test.skip("interactive test only") import time, sys RSDL.EnableUNICODE(1) print print "Keys pressed in the Pygame window give a dot." print " Wait 3 seconds to quit." timeout = time.time() + 3 event = lltype.malloc(RSDL.Event, flavor='raw') try: while True: # busy polling ok = RSDL.PollEvent(event) ok = rffi.cast(lltype.Signed, ok) assert ok >= 0 if ok > 0: c_type = rffi.getintfield(event, 'c_type') if c_type == RSDL.KEYDOWN: sys.stderr.write('.') p = rffi.cast(RSDL.KeyboardEventPtr, event) if rffi.getintfield(p.c_keysym, 'c_sym') == RSDL.K_ESCAPE: print 'Escape key' break timeout = time.time() + 3 else: if time.time() > timeout: break time.sleep(0.05) finally: lltype.free(event, flavor='raw')
def test_keypresses(self): if not self.is_interactive: py.test.skip("interactive test only") RSDL.EnableUNICODE(1) print print "Keys pressed in the Pygame window should be printed below." print " Use Escape to quit." event = lltype.malloc(RSDL.Event, flavor='raw') try: while True: ok = RSDL.WaitEvent(event) assert rffi.cast(lltype.Signed, ok) == 1 c_type = rffi.getintfield(event, 'c_type') if c_type == RSDL.KEYDOWN: p = rffi.cast(RSDL.KeyboardEventPtr, event) if rffi.getintfield(p.c_keysym, 'c_sym') == RSDL.K_ESCAPE: print 'Escape key' break char = rffi.getintfield(p.c_keysym, 'c_unicode') if char != 0: print 'Key:', unichr(char).encode('utf-8') else: print 'Some special key' else: print '(event of type %d)' % c_type finally: lltype.free(event, flavor='raw')