diff --git a/curtsies/curtsieskeys.py b/curtsies/curtsieskeys.py index 7fb87a0..e8a179e 100644 --- a/curtsies/curtsieskeys.py +++ b/curtsies/curtsieskeys.py @@ -129,9 +129,9 @@ b"\x1b[1;3H": '', # alt-home b"\x1b[1;3F": '', # alt-end b"\x1b[1;2C": '', - b"\x1b[1;2B": '', - b"\x1b[1;2D": '', - b"\x1b[1;2A": '', + b"\x1b[1;2B": '', + b"\x1b[1;2D": '', + b"\x1b[1;2A": '', b"\x1b[3;2~": '', b"\x1b[5;2~": '', b"\x1b[6;2~": '', diff --git a/tests/test_events.py b/tests/test_events.py index 146923b..522dce1 100644 --- a/tests/test_events.py +++ b/tests/test_events.py @@ -145,3 +145,35 @@ def test_simple(self): class TestPPEvent(unittest.TestCase): def test(self): self.assertEqual(events.pp_event("a"), "a") + + +class TestShiftArrowMappings(unittest.TestCase): + def test_curtsies_names(self): + self.assertEqual(events.CURTSIES_NAMES[b"\x1b[1;2A"], "") + self.assertEqual(events.CURTSIES_NAMES[b"\x1b[1;2B"], "") + self.assertEqual(events.CURTSIES_NAMES[b"\x1b[1;2C"], "") + self.assertEqual(events.CURTSIES_NAMES[b"\x1b[1;2D"], "") + + def test_get_key_sequences(self): + # Ensure get_key resolves complete Shift+Arrow sequences + seq_up = [b"\x1b", b"[", b"1", b";", b"2", b"A"] + seq_down = [b"\x1b", b"[", b"1", b";", b"2", b"B"] + seq_right = [b"\x1b", b"[", b"1", b";", b"2", b"C"] + seq_left = [b"\x1b", b"[", b"1", b";", b"2", b"D"] + + self.assertEqual( + [events.get_key(seq_up[:i], encoding="utf8") for i in range(1, len(seq_up) + 1)], + [None, None, None, None, None, ""] + ) + self.assertEqual( + [events.get_key(seq_down[:i], encoding="utf8") for i in range(1, len(seq_down) + 1)], + [None, None, None, None, None, ""] + ) + self.assertEqual( + [events.get_key(seq_right[:i], encoding="utf8") for i in range(1, len(seq_right) + 1)], + [None, None, None, None, None, ""] + ) + self.assertEqual( + [events.get_key(seq_left[:i], encoding="utf8") for i in range(1, len(seq_left) + 1)], + [None, None, None, None, None, ""] + )