1 use anes::parser::{KeyCode, KeyModifiers, Sequence};
2
3 use crate::test_sequences;
4
5 #[test]
esc_o_f_keys()6 fn esc_o_f_keys() {
7 test_sequences!(
8 b"\x1BOP",
9 Sequence::Key(KeyCode::F(1), KeyModifiers::empty()),
10 b"\x1BOQ",
11 Sequence::Key(KeyCode::F(2), KeyModifiers::empty()),
12 b"\x1BOR",
13 Sequence::Key(KeyCode::F(3), KeyModifiers::empty()),
14 b"\x1BOS",
15 Sequence::Key(KeyCode::F(4), KeyModifiers::empty()),
16 );
17 }
18
19 #[test]
csi_key_codes()20 fn csi_key_codes() {
21 test_sequences!(
22 b"\x1B[A",
23 Sequence::Key(KeyCode::Up, KeyModifiers::empty()),
24 b"\x1B[B",
25 Sequence::Key(KeyCode::Down, KeyModifiers::empty()),
26 b"\x1B[C",
27 Sequence::Key(KeyCode::Right, KeyModifiers::empty()),
28 b"\x1B[D",
29 Sequence::Key(KeyCode::Left, KeyModifiers::empty()),
30 b"\x1B[H",
31 Sequence::Key(KeyCode::Home, KeyModifiers::empty()),
32 b"\x1B[F",
33 Sequence::Key(KeyCode::End, KeyModifiers::empty()),
34 b"\x1B[Z",
35 Sequence::Key(KeyCode::BackTab, KeyModifiers::empty()),
36 );
37 }
38
39 #[test]
csi_arrow_key_modifiers()40 fn csi_arrow_key_modifiers() {
41 test_sequences!(
42 b"\x1B[50A",
43 Sequence::Key(KeyCode::Up, KeyModifiers::SHIFT),
44 b"\x1B[53A",
45 Sequence::Key(KeyCode::Up, KeyModifiers::CONTROL),
46 );
47 }
48
49 #[test]
csi_tilde_key_modifiers()50 fn csi_tilde_key_modifiers() {
51 test_sequences!(
52 b"\x1B[1~",
53 Sequence::Key(KeyCode::Home, KeyModifiers::empty()),
54 b"\x1B[1;0~",
55 Sequence::Key(KeyCode::Home, KeyModifiers::empty()),
56 b"\x1B[1;1~",
57 Sequence::Key(KeyCode::Home, KeyModifiers::empty()),
58 b"\x1B[1;2~",
59 Sequence::Key(KeyCode::Home, KeyModifiers::SHIFT),
60 b"\x1B[1;3~",
61 Sequence::Key(KeyCode::Home, KeyModifiers::ALT),
62 b"\x1B[1;4~",
63 Sequence::Key(KeyCode::Home, KeyModifiers::SHIFT | KeyModifiers::ALT),
64 b"\x1B[1;5~",
65 Sequence::Key(KeyCode::Home, KeyModifiers::CONTROL),
66 b"\x1B[1;6~",
67 Sequence::Key(KeyCode::Home, KeyModifiers::SHIFT | KeyModifiers::CONTROL),
68 b"\x1B[1;7~",
69 Sequence::Key(KeyCode::Home, KeyModifiers::ALT | KeyModifiers::CONTROL),
70 b"\x1B[1;8~",
71 Sequence::Key(
72 KeyCode::Home,
73 KeyModifiers::SHIFT | KeyModifiers::ALT | KeyModifiers::CONTROL
74 ),
75 b"\x1B[1;9~",
76 Sequence::Key(KeyCode::Home, KeyModifiers::META),
77 b"\x1B[1;10~",
78 Sequence::Key(KeyCode::Home, KeyModifiers::META | KeyModifiers::SHIFT),
79 b"\x1B[1;11~",
80 Sequence::Key(KeyCode::Home, KeyModifiers::META | KeyModifiers::ALT),
81 b"\x1B[1;12~",
82 Sequence::Key(
83 KeyCode::Home,
84 KeyModifiers::META | KeyModifiers::SHIFT | KeyModifiers::ALT
85 ),
86 b"\x1B[1;13~",
87 Sequence::Key(KeyCode::Home, KeyModifiers::META | KeyModifiers::CONTROL),
88 b"\x1B[1;14~",
89 Sequence::Key(
90 KeyCode::Home,
91 KeyModifiers::META | KeyModifiers::SHIFT | KeyModifiers::CONTROL
92 ),
93 b"\x1B[1;15~",
94 Sequence::Key(
95 KeyCode::Home,
96 KeyModifiers::META | KeyModifiers::ALT | KeyModifiers::CONTROL
97 ),
98 b"\x1B[1;16~",
99 Sequence::Key(
100 KeyCode::Home,
101 KeyModifiers::META | KeyModifiers::SHIFT | KeyModifiers::ALT | KeyModifiers::CONTROL
102 ),
103 b"\x1B[1;17~",
104 Sequence::Key(KeyCode::Home, KeyModifiers::empty()),
105 );
106 }
107
108 #[test]
csi_tilde_f_keys()109 fn csi_tilde_f_keys() {
110 test_sequences!(
111 b"\x1B[11~",
112 Sequence::Key(KeyCode::F(1), KeyModifiers::empty()),
113 b"\x1B[12~",
114 Sequence::Key(KeyCode::F(2), KeyModifiers::empty()),
115 b"\x1B[13~",
116 Sequence::Key(KeyCode::F(3), KeyModifiers::empty()),
117 b"\x1B[14~",
118 Sequence::Key(KeyCode::F(4), KeyModifiers::empty()),
119 b"\x1B[15~",
120 Sequence::Key(KeyCode::F(5), KeyModifiers::empty()),
121 b"\x1B[17~",
122 Sequence::Key(KeyCode::F(6), KeyModifiers::empty()),
123 b"\x1B[18~",
124 Sequence::Key(KeyCode::F(7), KeyModifiers::empty()),
125 b"\x1B[19~",
126 Sequence::Key(KeyCode::F(8), KeyModifiers::empty()),
127 b"\x1B[20~",
128 Sequence::Key(KeyCode::F(9), KeyModifiers::empty()),
129 b"\x1B[21~",
130 Sequence::Key(KeyCode::F(10), KeyModifiers::empty()),
131 b"\x1B[23~",
132 Sequence::Key(KeyCode::F(11), KeyModifiers::empty()),
133 b"\x1B[24~",
134 Sequence::Key(KeyCode::F(12), KeyModifiers::empty()),
135 );
136 }
137
138 #[test]
csi_tilde_key_codes()139 fn csi_tilde_key_codes() {
140 test_sequences!(
141 b"\x1B[1~",
142 Sequence::Key(KeyCode::Home, KeyModifiers::empty()),
143 b"\x1B[2~",
144 Sequence::Key(KeyCode::Insert, KeyModifiers::empty()),
145 b"\x1B[3~",
146 Sequence::Key(KeyCode::Delete, KeyModifiers::empty()),
147 b"\x1B[4~",
148 Sequence::Key(KeyCode::End, KeyModifiers::empty()),
149 b"\x1B[5~",
150 Sequence::Key(KeyCode::PageUp, KeyModifiers::empty()),
151 b"\x1B[6~",
152 Sequence::Key(KeyCode::PageDown, KeyModifiers::empty()),
153 b"\x1B[7~",
154 Sequence::Key(KeyCode::Home, KeyModifiers::empty()),
155 b"\x1B[8~",
156 Sequence::Key(KeyCode::End, KeyModifiers::empty()),
157 );
158 }
159