def test_replace_tap(self): self.assertEqual(replace_with_tap([KeyDown(KC_A)]), [KeyDown(KC_A)]) self.assertEqual(replace_with_tap([KeyDown(KC_A), KeyUp(KC_A)]), [KeyTap(KC_A)]) self.assertEqual(replace_with_tap([KeyUp(KC_A), KeyDown(KC_A)]), [KeyUp(KC_A), KeyDown(KC_A)])
def test_remove_repeats(self): self.assertEqual(remove_repeats([KeyDown(KC_A), KeyDown(KC_A)]), [KeyDown(KC_A)]) self.assertEqual( remove_repeats([ KeyDown(KC_A), KeyDown(KC_B), KeyDown(KC_B), KeyDown(KC_C), KeyDown(KC_C) ]), [KeyDown(KC_A), KeyDown(KC_B), KeyDown(KC_C)]) # don't remove repeated taps self.assertEqual(remove_repeats([KeyTap(KC_A), KeyTap(KC_A)]), [KeyTap(KC_A), KeyTap(KC_A)])
def replace_with_tap(sequence): """ Replaces a sequence of Down/Up with a Tap """ out = [] sequence = sequence[:] while len(sequence) > 0: if len(sequence) >= 2 and isinstance(sequence[0], KeyDown) and isinstance(sequence[1], KeyUp) and \ sequence[0].keycode == sequence[1].keycode: key = KeyTap(sequence[0].keycode) out.append(key) sequence.pop(0) sequence.pop(0) else: out.append(sequence[0]) sequence.pop(0) return out
def test_replace_string(self): self.assertEqual(replace_with_string([KeyTap(KC_A), KeyTap(KC_B)]), [KeyString("ab")])