Terminal++ 3.1.0.4
A C++ library for interacting with ANSI terminal windows
Loading...
Searching...
No Matches
csi.hpp
1#pragma once
2
3#include "terminalpp/core.hpp"
4#include "terminalpp/detail/ascii.hpp"
5
6//* =========================================================================
10//* =========================================================================
11namespace terminalpp::ansi::csi {
12
13// clang-format off
14// Insert N blank characters
15inline constexpr byte insert_blank = terminalpp::detail::ascii::at;
16// Move the cursor up N rows.
17inline constexpr byte cursor_up = terminalpp::detail::ascii::uppercase_a;
18// Move the cursor down N rows.
19inline constexpr byte cursor_down = terminalpp::detail::ascii::uppercase_b;
20// Move the cursor right N columns.
21inline constexpr byte cursor_forward = terminalpp::detail::ascii::uppercase_c;
22// Move the cursor left N columns.
23inline constexpr byte cursor_backward = terminalpp::detail::ascii::uppercase_d;
24
25// Move the cursor to the beginning of the line that is N lines down.
26inline constexpr byte cursor_next_line = terminalpp::detail::ascii::uppercase_e;
27// Move the cursor to the beginning of the line that is N lines up.
28inline constexpr byte cursor_previous_line = terminalpp::detail::ascii::uppercase_f;
29// During input, this can also mean END.
30inline constexpr byte cursor_end = terminalpp::detail::ascii::uppercase_f;
31// Move to a specific column.
32inline constexpr byte cursor_horizontal_absolute = terminalpp::detail::ascii::uppercase_g;
33// Move to a specific cursor position (row,column).
34inline constexpr byte cursor_position = terminalpp::detail::ascii::uppercase_h;
35// During input, this can also mean HOME.
36inline constexpr byte cursor_home = terminalpp::detail::ascii::uppercase_h;
37// Move forward N tabs
38inline constexpr byte cursor_tabulation = terminalpp::detail::ascii::uppercase_i;
39
40// Erase data.
41// 0 - (Default) Clear from the cursor to the end of the screen.
42// 1 - Clear from the cursor to the beginning of the screen.
43// 2 - Clear the entire screen (cursor position is indeterminate).
44inline constexpr byte erase_in_display = terminalpp::detail::ascii::uppercase_j;
45 inline constexpr byte erase_in_display_below = terminalpp::detail::ascii::zero;
46 inline constexpr byte erase_in_display_above = terminalpp::detail::ascii::one;
47 inline constexpr byte erase_in_display_all = terminalpp::detail::ascii::two;
48
49// Selective Erase In Display
50// - Requires ? extender
51// - Uses same constants as Erase In Display.
52inline constexpr byte selective_erase_in_display = terminalpp::detail::ascii::uppercase_j;
53
54// Erase line
55// 0 - (Default) Clear from the cursor to the end of the line.
56// 1 - Clear from the cursor to the beginning of the line.
57// 2 - Clear entire line (cursor position remains the same).
58inline constexpr byte erase_in_line = terminalpp::detail::ascii::uppercase_k;
59 inline constexpr byte erase_in_line_right = terminalpp::detail::ascii::zero;
60 inline constexpr byte erase_in_line_left = terminalpp::detail::ascii::one;
61 inline constexpr byte erase_in_line_all = terminalpp::detail::ascii::two;
62
63// Selective Erase In Line
64// - Requires ? extender
65// - Uses same constants as Erase In Line.
66inline constexpr byte selective_erase_in_line = terminalpp::detail::ascii::uppercase_k;
67
68// Insert N lines
69inline constexpr byte insert_line = terminalpp::detail::ascii::uppercase_l;
70
71// Delete N lines
72inline constexpr byte delete_line = terminalpp::detail::ascii::uppercase_m;
73
74// Delete N characters
75inline constexpr byte delete_characters = terminalpp::detail::ascii::uppercase_p;
76
77// Sixel/ReGIS graphics
78// - Requires ? extender
79inline constexpr byte sixel_graphics = terminalpp::detail::ascii::uppercase_s;
80
81// Scroll up by N lines
82inline constexpr byte scroll_up = terminalpp::detail::ascii::uppercase_s;
83
84// Scroll down by N lines
85inline constexpr byte scroll_down = terminalpp::detail::ascii::uppercase_t;
86
87// Initiate Highlight Mouse Tracking
88inline constexpr byte highlight_mouse_tracking = terminalpp::detail::ascii::uppercase_t;
89
90// Reset Title Mode Feature
91// - Requires > extender
92inline constexpr byte reset_title_mode_feature = terminalpp::detail::ascii::uppercase_t;
93
94// Horizontal and Vertical position - as Cursor Position
95inline constexpr byte horizontal_and_vertical_position = terminalpp::detail::ascii::lowercase_f;
96
97// Select graphics rendition - see graphics namespace
98inline constexpr byte select_graphics_rendition = terminalpp::detail::ascii::lowercase_m;
99
100// Mouse Tracking - see mouse namespace
101inline constexpr byte mouse_tracking = terminalpp::detail::ascii::uppercase_m;
102
103// Device status report - request requires parameter of 6, response
104// requires parameters of row,column.
105inline constexpr byte device_status_report = terminalpp::detail::ascii::lowercase_n;
106inline constexpr byte device_status_report_reply = terminalpp::detail::ascii::uppercase_r;
107
108// Save cursor position
109inline constexpr byte save_cursor_position = terminalpp::detail::ascii::lowercase_s;
110
111// Restore (unsave) cursor
112inline constexpr byte restore_cursor_position = terminalpp::detail::ascii::lowercase_u;
113
114// Erase Characters
115inline constexpr byte erase_character = terminalpp::detail::ascii::uppercase_x;
116
117// Tab backwards
118inline constexpr byte cursor_backward_tabulation = terminalpp::detail::ascii::uppercase_z;
119
120// Cursor Position Absolute
121inline constexpr byte cursor_position_absolute = terminalpp::detail::ascii::grave;
122
123// Cursor Position Relative
124inline constexpr byte cursor_position_relative = terminalpp::detail::ascii::lowercase_a;
125
126// Repeat Preceding Character
127inline constexpr byte repeat_preceding_character = terminalpp::detail::ascii::lowercase_b;
128
129// Send Device Attributes
130// - Primary Attributes has no extender
131// - Primary Response has ? extender
132// - Secondary Attributes has > extender
133inline constexpr byte send_device_attributes = terminalpp::detail::ascii::lowercase_c;
134
135// Line Position Absolute
136inline constexpr byte line_position_absolute = terminalpp::detail::ascii::lowercase_d;
137
138// Line Position Relative
139inline constexpr byte line_position_relative = terminalpp::detail::ascii::lowercase_e;
140
141// Line Position
142inline constexpr byte line_position = terminalpp::detail::ascii::lowercase_f;
143
144// Tab Clear
145inline constexpr byte tab_clear = terminalpp::detail::ascii::lowercase_g;
146 inline constexpr byte tab_clear_current_column = terminalpp::detail::ascii::zero;
147 inline constexpr byte tab_clear_all = terminalpp::detail::ascii::three;
148
149// Set Mode
150inline constexpr byte set_mode = terminalpp::detail::ascii::lowercase_h;
151
152// Reset Mode
153inline constexpr byte reset_mode = terminalpp::detail::ascii::lowercase_l;
154
155// Keypad buttons / Function keys
156inline constexpr byte keypad_function = terminalpp::detail::ascii::tilde;
157 inline constexpr byte keypad_home = 1;
158 inline constexpr byte keypad_insert = 2;
159 inline constexpr byte keypad_del = 3;
160 inline constexpr byte keypad_end = 4;
161 inline constexpr byte keypad_pgup = 5;
162 inline constexpr byte keypad_pgdn = 6;
163 inline constexpr byte keypad_f1 = 11;
164 inline constexpr byte keypad_f2 = 12;
165 inline constexpr byte keypad_f3 = 13;
166 inline constexpr byte keypad_f4 = 14;
167 inline constexpr byte keypad_f5 = 15;
168 inline constexpr byte keypad_f6 = 17; // Skip 16.
169 inline constexpr byte keypad_f7 = 18;
170 inline constexpr byte keypad_f8 = 19;
171 inline constexpr byte keypad_f9 = 20;
172 inline constexpr byte keypad_f10 = 21;
173 inline constexpr byte keypad_f11 = 23; // Skip 22.
174 inline constexpr byte keypad_f12 = 24;
175
176// The following modifiers can apply to all keypad/function key controls.
177 inline constexpr byte modifier_shift = 2;
178 inline constexpr byte modifier_alt = 3;
179 inline constexpr byte modifier_shift_alt = 4;
180 inline constexpr byte modifier_ctrl = 5;
181 inline constexpr byte modifier_shift_ctrl = 6;
182 inline constexpr byte modifier_alt_ctrl = 7;
183 inline constexpr byte modifier_shift_alt_ctrl = 8;
184 inline constexpr byte modifier_meta = 9;
185 inline constexpr byte modifier_meta_shift = 10;
186 inline constexpr byte modifier_meta_alt = 11;
187 inline constexpr byte modifier_meta_shift_alt = 12;
188 inline constexpr byte modifier_meta_ctrl = 13;
189 inline constexpr byte modifier_meta_shift_ctrl = 14;
190 inline constexpr byte modifier_meta_alt_ctrl = 15;
191 inline constexpr byte modifier_meta_shift_alt_ctrl = 16;
192
193// DEC Private Mode
194// - Require ? extenders
195inline constexpr byte decset = terminalpp::detail::ascii::lowercase_h;
196inline constexpr byte decrst = terminalpp::detail::ascii::lowercase_l;
197 inline constexpr byte cursor_state[] = {terminalpp::detail::ascii::two,
198 terminalpp::detail::ascii::five, 0};
199
200// Soft Reset
201// - Requires ! extender
202inline constexpr byte soft_reset = terminalpp::detail::ascii::exclamation_mark;
203// clang-format on
204
205} // namespace terminalpp::ansi::csi
Contains all of the constants for the commands that begin with the Control Sequence Introducer sequen...