Exemplo n.º 1
0
 def __init__(self, decoder=None):
     if decoder is None:
         f = FlushingDecoder(0.500)
         def updateF():
             f.update(reactor.seconds())
         s = LoopingCall(updateF)
         s.start(0.04, now=False)
     else:
         f = decoder
     self.keymap = Keymap()
     self.lookup = self.keymap.lookup
     self.lkeyer = Keyer(f.decoder, 1500)
     self.rkeyer = Keyer(f.decoder, 1500)
Exemplo n.º 2
0
 def test_all_keys_up(self):
     """
     Keyer.all_keys_up is True if keyDownbuffer is empty.
     """
     self.k = Keyer(None)
     self.k.keyDownbuffer = [1,2,3]
     self.assertEquals(self.k.all_keys_up(), False)
     self.k.keyDownbuffer = []
     self.assertEquals(self.k.all_keys_up(), True)
Exemplo n.º 3
0
class Controller:

    def __init__(self, decoder=None):
        if decoder is None:
            f = FlushingDecoder(0.500)
            def updateF():
                f.update(reactor.seconds())
            s = LoopingCall(updateF)
            s.start(0.04, now=False)
        else:
            f = decoder
        self.keymap = Keymap()
        self.lookup = self.keymap.lookup
        self.lkeyer = Keyer(f.decoder, 1500)
        self.rkeyer = Keyer(f.decoder, 1500)


    def dispatch_event(self, event):
        if event.type == pygame.KEYDOWN:
            self.keyDown(event.key)
        elif event.type == pygame.KEYUP:
            self.keyUp(event.key)


    def keyDown(self, k):
        if k == pygame.K_F3:
            self.window.submitTo(self.keymap)
            self.keymap.parentController = self
            update_status_msg(self.window.screen, self.keymap._learn_keymap()[0])
        t = reactor.seconds()
        z, hand = self.lookup(k)
        if z is None:
            return
        if hand == 0:
            self.rkeyer.keyDown(z, t)
        else:
            self.lkeyer.keyDown(z, t)


    def keyUp(self, k):
        t = reactor.seconds()
        z, hand = self.lookup(k)
        if z is None: return
        if hand == 0:
            self.rkeyer.keyUp(z, t)
        else:
            self.lkeyer.keyUp(z, t)
Exemplo n.º 4
0
 def test_keyUp_calls_decoder(self):
     """
     Keyer.keyUp calls decoder when all the keys are up and it
     clears the buffer.
     """
     calls = []
     def fake(t):
         calls.append(t)
     self.k = Keyer(fake)
     self.k.keyDown('A', 12000)
     self.k.keyDown('B', 1010101)
     self.k.keyUp('A', 10101)
     self.k.keyUp('B', 10102)
     self.assertEquals(calls, [('A','B')])
     self.assertEquals(self.k.buffer, [])
Exemplo n.º 5
0
 def setUp(self):
     self.k = Keyer(None)
     self.k.all_keys_up = lambda: False
Exemplo n.º 6
0
class TestKeyer(unittest.TestCase):
    def setUp(self):
        self.k = Keyer(None)
        self.k.all_keys_up = lambda: False


    def test_keyUp_basic(self):
        """
        Keyer.keyUp adds the key to the buffer and sets max to the
        key's timestamp.
        """
        self.k.keyUp('A', 1000)
        self.assertEquals(self.k.maxtime, 1000)
        self.assertEquals(self.k.buffer, ['A'])


    def test_keyUp_again(self):
        """
        Keyer.keyUp appends the key to the buffer and alters maxtime
        if timestamp is greater than the old maxtime.
        """
        self.k.keyUp('A', 1000)
        self.k.keyUp('B', 1001)
        self.k.keyUp('C', 1002)
        self.assertEquals(self.k.maxtime, 1002)
        self.assertEquals(self.k.buffer, ['A', 'B', 'C'])


    def test_keyDown_basic(self):
        """
        Keyer.keyDown appends to a keyDownbuffer.
        """
        self.k.keyDown('A', 1001)
        self.k.keyDown('B', 1002)
        self.assertEquals(self.k.keyDownbuffer, ['A', 'B'])


    def test_all_keys_up(self):
        """
        Keyer.all_keys_up is True if keyDownbuffer is empty.
        """
        self.k = Keyer(None)
        self.k.keyDownbuffer = [1,2,3]
        self.assertEquals(self.k.all_keys_up(), False)
        self.k.keyDownbuffer = []
        self.assertEquals(self.k.all_keys_up(), True)


    def test_keyUp_removes_keyDown(self):
        """
        Keyer.keyUp removes the corresponding key from keyDownbuffer.
        """
        self.k.keyDownbuffer = [1,2]
        self.k.keyUp(1, 1000)
        self.assertEquals(self.k.keyDownbuffer, [2])


    def test_threshold_init(self):
        """
        Keyer.__init__ takes an argument for threshold value or uses a default.
        """
        k = Keyer(None, threshold=0)
        self.assertEquals(k.threshold, 0)
        k = Keyer(None)
        self.assertNotEquals(k.threshold, None)


    def test_gt_threshold_removes_buffer(self):
        """
        Keyer.keyUp removes everything in the buffer if timestamp is
        greater maxtime by the threshold amount. 
        """
        self.k.threshold = 1
        self.k.keyUp('A', 1000)
        self.k.keyUp('CC', 1002)
        self.assertEquals(self.k.buffer, ['CC'])


    def test_under_threshold(self):
        """
        otherwise leaves it alone.
        """
        self.k.threshold = 99
        self.k.keyUp('A', 1000)
        self.k.keyUp('CC', 1099)
        self.assertEquals(self.k.buffer, ['A', 'CC'])


    def test_keyUp_calls_decoder(self):
        """
        Keyer.keyUp calls decoder when all the keys are up and it
        clears the buffer.
        """
        calls = []
        def fake(t):
            calls.append(t)
        self.k = Keyer(fake)
        self.k.keyDown('A', 12000)
        self.k.keyDown('B', 1010101)
        self.k.keyUp('A', 10101)
        self.k.keyUp('B', 10102)
        self.assertEquals(calls, [('A','B')])
        self.assertEquals(self.k.buffer, [])