Ejemplo n.º 1
0
 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')
Ejemplo n.º 2
0
 def test_mousemove(self):
     if not self.is_interactive:
         py.test.skip("interactive test only")
     print
     print "Move the Mouse up and down:"
     print "    Use Escape to quit."
     event = lltype.malloc(RSDL.Event, flavor="raw")
     directions = [False]*4
     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.MOUSEMOTION:
                 m = rffi.cast(RSDL.MouseMotionEventPtr, event)
                 assert rffi.getintfield(m, "c_x") >= 0
                 assert rffi.getintfield(m, "c_y") >= 0
                 print rffi.getintfield(m, "c_xrel")
                 directions[0] |= rffi.getintfield(m, "c_xrel")>0
                 directions[1] |= rffi.getintfield(m, "c_xrel")<0
                 directions[2] |= rffi.getintfield(m, "c_yrel")>0
                 directions[3] |= rffi.getintfield(m, "c_yrel")<0
                 if False not in directions:
                     break
             elif c_type == RSDL.KEYUP:
                 p = rffi.cast(RSDL.KeyboardEventPtr, event)
                 if rffi.getintfield(p.c_keysym, 'c_sym') == RSDL.K_ESCAPE:
                     print "    test manually aborted"
                     py.test.fail(" mousemovement test aborted")
                     break  
     finally:
         lltype.free(event, flavor='raw')
Ejemplo n.º 3
0
 def update(self, event):
     # fetch the event from sdl
     ok = RSDL.WaitEvent(event)
     assert rffi.cast(lltype.Signed, ok) == 1
     type = rffi.getintfield(event, 'c_type')
     if type == RSDL.KEYDOWN:
         self.create_called_key()
         self.on_key_down()
     elif type == RSDL.KEYUP:
         self.create_called_key()
         self.on_key_up()
Ejemplo n.º 4
0
def entry_point(argv=None):
    RSDL.Init(RSDL.INIT_VIDEO) >= 0
    screen = RSDL.SetVideoMode(WIDTH, HEIGHT, 32, 0)
    event = lltype.malloc(RSDL.Event, flavor='raw')
    paintpattern = 0
    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
            paintpattern += 1
            update_screen(screen, paintpattern)
    finally:
        lltype.free(event, flavor='raw')

    return 0
Ejemplo n.º 5
0
 def test_mousebutton_wheel(self):
     if not self.is_interactive:
         py.test.skip("interactive test only")
     print
     print "Press the given MouseButtons:"
     print "        Use Escape to pass tests."
     
     event_tests = [("left button",   RSDL.BUTTON_LEFT),
                    ("middle button", RSDL.BUTTON_MIDDLE),
                    ("right button",  RSDL.BUTTON_RIGHT),
                    ("scroll up",     RSDL.BUTTON_WHEELUP),
                    ("scroll down",   RSDL.BUTTON_WHEELDOWN)]
     test_success = []
     event = lltype.malloc(RSDL.Event, flavor='raw')
     try:
         for button_test in event_tests:
             print "    press %s:" % button_test[0]
             while True:
                 ok = RSDL.WaitEvent(event)
                 assert rffi.cast(lltype.Signed, ok) == 1
                 c_type = rffi.getintfield(event, 'c_type')
                 if c_type == RSDL.MOUSEBUTTONDOWN:
                     pass
                 elif c_type == RSDL.MOUSEBUTTONUP:
                     b = rffi.cast(RSDL.MouseButtonEventPtr, event)
                     if rffi.getintfield(b, 'c_button') == button_test[1]:
                         test_success.append(True)
                         break
                 elif c_type == RSDL.KEYUP:
                     p = rffi.cast(RSDL.KeyboardEventPtr, event)
                     if rffi.getintfield(p.c_keysym, 'c_sym') == RSDL.K_ESCAPE:
                         test_success.append(False) 
                         print "        manually aborted"
                         break
                     #break
         if False in test_success:
             py.test.fail("")
     finally:
         lltype.free(event, flavor='raw')