Exemplo n.º 1
0
 def test31_merge_switching_modifiers(self):
     self.parser.key_map.side_effect = lambda p, r: (('M', 'N'), 'Q')
     list(map(self.parser, parse_events('px py pa ra ry')))
     self.assertEqual('pm pn pq rq s', self.kbd.events)
     
     self.parser.key_map.side_effect = lambda p, r: (('M',), 'R')
     list(map(self.parser, parse_events('pb rb rx')))
     self.assertEqual('pm pn pq rq s rn pr rr s rm s', self.kbd.events)
Exemplo n.º 2
0
    def test25_missing_key_map(self, warn):
        self.parser.send_unknown_chord = False
        self.parser.key_map.side_effect = lambda p, r: ((), None)
        list(map(self.parser, parse_events('px pa ra rx')))
        self.assertEqual('', self.kbd.events)

        self.parser.key_map.side_effect = lambda p, r: None
        list(map(self.parser, parse_events('px pa ra rx')))
        self.assertEqual('', self.kbd.events)
Exemplo n.º 3
0
 def test72_on_off_switch_unexpected_key_release(self, warn):
     self.parser.key_map.return_value = ((), 'Q')
     
     self.parser.on_off_key = 'ESC'
     list(map(self.parser, parse_events('pesc pa resc pesc ra pa pb resc rb ra')))
     self.assertEqual('pa s ra s pq rq s', self.kbd.events)
     warn.assert_called_once_with('Unexpected key release: RELEASE A')
Exemplo n.º 4
0
 def test9_do_not_send_unrecognized_chord(self, warn):
     self.parser.send_unknown_chord = False
     self.parser.key_map.return_value = None 
     
     list(map(self.parser, parse_events('pa pb rb ra')))
     self.assertEqual('', self.kbd.events)
     warn.assert_called_once_with("Unknown chord: ['A', 'B']")
Exemplo n.º 5
0
    def test41_missing_key_mapping(self, warn):
        self.parser.send_unknown_chord = False
        self.parser.key_map.return_value = ()

        list(map(self.parser, parse_events('pa ra')))
        self.assertEqual('', self.kbd.events)
        warn.assert_called_once_with("Unknown chord: ['A']")
Exemplo n.º 6
0
 def test14_three_keys_pabc_rbac(self):
     self.key_map.side_effect = return_chord
     
     list(map(self.parser, parse_events('px pb pc rb rx rc')))
     # Two calls to key_map:
     # First mod=x, key=b returns <x+b>
     # Second mod=None, key=c returns <c>
     self.assertEqual('px pb rb s rx s pc rc s', self.kbd.events)
Exemplo n.º 7
0
    def test91_do_send_unrecognized_chord(self, info):
        self.parser.send_unknown_chord = True
        self.parser.key_map.return_value = None 
        
        list(map(self.parser, parse_events('pa pb rb')))        
        self.assertEqual('pa pb s rb s', self.kbd.events)

        self.parser(Event('ra'))
        self.assertEqual('pa pb s rb s ra s', self.kbd.events)
        info.assert_called_once_with("Unknown chord: ['A', 'B']")
Exemplo n.º 8
0
    def test12_two_interleaved_keys_pab_rab(self):
        self.key_map.side_effect = return_released_key
        
        list(map(self.parser, parse_events('pa pb')))
        self.key_map.assert_not_called()
        self.assertEqual(['A', 'B'], self.parser.pressed_keys)
        self.assertEqual('', self.kbd.events)
        
        self.parser(Event('ra'))
        self.assertEqual(['B'], self.parser.pressed_keys)
        self.assertEqual('pa ra s', self.kbd.events)

        # NOTE: Event order is NOT preserved
        self.parser(Event('rb'))
        self.assertEqual([], self.parser.pressed_keys)
        self.assertEqual('pa ra s pb rb s', self.kbd.events)
Exemplo n.º 9
0
 def test23_key_mapped_with_two_modifiers(self):
     self.parser.key_map.return_value = (('X', 'Y'), 'Q')
     list(map(self.parser, parse_events('pa ra')))
     self.assertEqual('px py pq rq rx ry s', self.kbd.events) 
Exemplo n.º 10
0
 def test82_passthrough_modifier_and_key(self):
     self.parser.key_map.side_effect = return_chord
     
     self.parser.passthrough_keys = set('shift'.upper().split())
     list(map(self.parser, parse_events('pa pshift ra rshift pb rb')))
     self.assertEqual('pa s pshift s ra s rshift s pb rb s', self.kbd.events)
Exemplo n.º 11
0
 def test81_passthrough_keys(self):
     self.parser.key_map.side_effect = return_chord
     
     self.parser.passthrough_keys = set('shift'.upper().split())
     list(map(self.parser, parse_events('pshift pa rshift pb rb ra')))
     self.assertEqual('pshift s pa s rshift s pb rb s ra s', self.kbd.events)
Exemplo n.º 12
0
 def test23_key_chord_modifiers_are_silenced(self):
     self.parser.key_map.side_effect = lambda p, r: ((), 'Q')
     list(map(self.parser, parse_events('px py pb rb rx ry')))
     self.assertEqual('pq rq s', self.kbd.events) 
Exemplo n.º 13
0
 def test22_key_mapped_with_one_modifier(self):
     self.parser.key_map.return_value = (('X',), 'Q')
     list(map(self.parser, parse_events('pa ra')))
     self.assertEqual('px pq rq rx s', self.kbd.events) 
Exemplo n.º 14
0
 def test13_modifier_not_pressed(self):
     list(map(self.parser, parse_events('pa pb ra rb')))
     self.assertEqual('pa ra s pb rb s', self.kbd.events)
Exemplo n.º 15
0
 def test11_chord_not_pressed(self):
     list(map(self.parser, parse_events('px pb rx rb')))
     self.assertEqual('px rx s pb rb s', self.kbd.events)
Exemplo n.º 16
0
 def test24_key_chord_modifier_order_independence(self):
     self.parser.key_map.side_effect = lambda p, r: ((), 'Q')
     list(map(self.parser, parse_events('px py pb rb ry rx')))
     self.assertEqual('pq rq s', self.kbd.events)
Exemplo n.º 17
0
    def test31_merge_single_modifier(self):
        self.parser.key_map.side_effect = lambda p, r: (('M',), 'Q')

        list(map(self.parser, parse_events('px pa ra pb rb rx')))
        self.assertEqual('pm pq rq s pq rq s rm s', self.kbd.events)
Exemplo n.º 18
0
 def test12_chord_pressed(self):
     list(map(self.parser, parse_events('px pb rb rx')))
     self.assertEqual('pc rc s', self.kbd.events)
Exemplo n.º 19
0
 def test42_unexpected_release_event_is_passed_on_and_logged_again(self, warn):
     self.parser.key_map.side_effect = return_released_key
     
     list(map(self.parser, parse_events('pa rb ra')))
     self.assertEqual('rb s pa ra s', self.kbd.events)
     warn.assert_called_once_with('Unexpected key release: RELEASE B')
Exemplo n.º 20
0
 def test14_modifier_pressed(self):
     list(map(self.parser, parse_events('pa pb rb ra')))
     self.assertEqual('pshift pb rb s rshift s', self.kbd.events)
Exemplo n.º 21
0
    def test6_misc_combinations(self):
        self.parser.key_map.side_effect = return_chord

        # Press abc, release ca, press d, release b
        list(map(self.parser, parse_events('pa pb pc rc ra pd rd rb')))
        self.assertEqual('pa pb pc rc s ra pd rd s rb s', self.kbd.events)
Exemplo n.º 22
0
 def test71_on_off_switch1(self):
     self.parser.on_off_key = 'ESC'
     list(map(self.parser, parse_events('pesc pa resc pb ra rb')))
     self.assertEqual('pa s pb s ra s rb s', self.kbd.events)
Exemplo n.º 23
0
 def test21_key_map(self):
     self.parser.key_map.return_value = ((), 'Q')
     
     list(map(self.parser, parse_events('pa ra')))
     self.assertEqual('pq rq s', self.kbd.events)