-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathesc.h
More file actions
156 lines (136 loc) · 5.26 KB
/
Copy pathesc.h
File metadata and controls
156 lines (136 loc) · 5.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
#ifndef ESCAPE_H
#define ESCAPE_H 1
#include <stdio.h>
#define ESC_CSI "\e["
#define ESC_SS2 "\eN"
#define ESC_SS3 "\eO"
#define ESC_SCI "\eZ"
#define ESC_ROI "\e%"
#define ESC_SAVE ESC_CSI "s"
#define ESC_RESTORE ESC_CSI "u"
#define ESC_HOME ESC_CSI "H"
#define ESC_CLRSCR ESC_CSI "1J"
#define ESC_CLEAR ESC_CSI "2K"
#define ESC_UP ESC_CSI "A"
#define ESC_DOWN ESC_CSI "B"
#define ESC_FRWD ESC_CSI "C"
#define ESC_BKWD ESC_CSI "D"
#define ESC_END ESC_CSI "F"
#define ESC_INSERT ESC_CSI "2~"
#define ESC_DELETE ESC_CSI "3~"
#define ESC_PGUP ESC_CSI "5~"
#define ESC_PGDOWN ESC_CSI "6~"
// F1 to F4 are special
#define ESC_F1 ESC_SS3 "P"
#define ESC_F2 ESC_SS3 "Q"
#define ESC_F3 ESC_SS3 "R"
#define ESC_F4 ESC_SS3 "S"
#define ESC_S_F1 ESC_CSI "1;2P"
#define ESC_S_F2 ESC_CSI "1;2Q"
#define ESC_S_F3 ESC_CSI "1;2R"
#define ESC_S_F4 ESC_CSI "1;2S"
#define ESC_C_F1 ESC_CSI "1;5P"
#define ESC_C_F2 ESC_CSI "1;5Q"
#define ESC_C_F3 ESC_CSI "1;5R"
#define ESC_C_F4 ESC_CSI "1;5S"
#define ESC_F5 ESC_CSI "15~"
#define ESC_F6 ESC_CSI "17~"
#define ESC_F7 ESC_CSI "18~"
#define ESC_F8 ESC_CSI "19~"
#define ESC_F9 ESC_CSI "20~"
#define ESC_F10 ESC_CSI "21~"
#define ESC_F11 ESC_CSI "23~"
#define ESC_F12 ESC_CSI "24~"
#define ESC_S_F5 ESC_CSI "15;2~"
#define ESC_S_F6 ESC_CSI "17;2~"
#define ESC_S_F7 ESC_CSI "18;2~"
#define ESC_S_F8 ESC_CSI "19;2~"
#define ESC_S_F9 ESC_CSI "20;2~"
#define ESC_S_F10 ESC_CSI "21;2~"
#define ESC_S_F11 ESC_CSI "23;2~"
#define ESC_S_F12 ESC_CSI "24;2~"
#define ESC_C_F5 ESC_CSI "15;5~"
#define ESC_C_F6 ESC_CSI "17;5~"
#define ESC_C_F7 ESC_CSI "18;5~"
#define ESC_C_F8 ESC_CSI "19;5~"
#define ESC_C_F9 ESC_CSI "20;5~"
#define ESC_C_F10 ESC_CSI "21;5~"
#define ESC_C_F11 ESC_CSI "23;5~"
#define ESC_C_F12 ESC_CSI "24;5~"
#define ESC_HIDE ESC_CSI "?25l"
#define ESC_SHOW ESC_CSI "?25h"
#define ESC_NORMAL ESC_CSI "0m"
#define ESC_BOLD ESC_CSI "1m"
#define ESC_UNDERL ESC_CSI "4m"
#define ESC_BLINK ESC_CSI "5m"
#define ESC_INVERS ESC_CSI "7m"
#define ESC_FRAMED ESC_CSI "51m"
#define ESC_CIRCLED ESC_CSI "52m"
#define ESC_OVERL ESC_CSI "53m"
#define ESC_TBLACK ESC_CSI "30m"
#define ESC_TRED ESC_CSI "38;2;255;0;0m"
#define ESC_TGREEN ESC_CSI "38;2;0;255;0m"
#define ESC_TYELLOW ESC_CSI "38;2;255;255;0m"
#define ESC_TBLUE ESC_CSI "38;2;0;0;255m"
#define ESC_TMAGENTA ESC_CSI "38;2;255;0;255m"
#define ESC_TCYAN ESC_CSI "38;2;0;255;255m"
#define ESC_TWHITE ESC_CSI "37m"
#define ESC_BBLACK ESC_CSI "40m"
#define ESC_BRED ESC_CSI "48;2;255;0;0m"
#define ESC_BGREEN ESC_CSI "48;2;0;255;0m"
#define ESC_BYELLOW ESC_CSI "48;2;255;255;0m"
#define ESC_BBLUE ESC_CSI "48;2;0;0;255m"
#define ESC_BMAGENTA ESC_CSI "48;2;255;0;255m"
#define ESC_BCYAN ESC_CSI "48;2;0;255;255m"
#define ESC_BWHITE ESC_CSI "47m"
#define ESC_BLIGHTGREY ESC_CSI "48;2;220;220;220m"
#define ESC_BGREY ESC_CSI "48;2;128;128;128m"
enum { esc_top = 1, esc_bottom = 2, esc_left = 4, esc_right = 8, };
#define ESC_BORDER \
((char const*const[]){ \
[0] = " ", \
[esc_top] = "━", \
[esc_bottom] = "━", \
[esc_bottom | esc_top] = "━", \
[esc_left] = "┃", \
[esc_left | esc_top] = "┏", \
[esc_left | esc_bottom] = "┗", \
[esc_left | esc_bottom | esc_top] = "┣", \
[esc_right] = "┃", \
[esc_right | esc_top] = "┓", \
[esc_right | esc_bottom] = "┛", \
[esc_right | esc_bottom | esc_top] = "┫", \
[esc_right | esc_left] = "┃", \
[esc_right | esc_left | esc_top] = "┳", \
[esc_right | esc_left | esc_bottom] = "┻", \
[esc_right | esc_left | esc_bottom | esc_top] = "╋", \
})
enum { esc_nw = 1, esc_ne = 2, esc_sw = 4, esc_se = 8, };
#define ESC_BLOCK \
((char const*const[]){ \
[0] = " ", \
[esc_nw] = "▘", \
[esc_ne] = "▝", \
[esc_ne | esc_nw] = "▀", \
[esc_sw] = "▖", \
[esc_sw | esc_nw] = "▌", \
[esc_sw | esc_ne] = "▞", \
[esc_sw | esc_ne | esc_nw] = "▛", \
[esc_se] = "▗", \
[esc_se | esc_nw] = "▚", \
[esc_se | esc_ne] = "▐", \
[esc_se | esc_ne | esc_nw] = "▜", \
[esc_se | esc_sw] = "▄", \
[esc_se | esc_sw | esc_nw] = "▙", \
[esc_se | esc_sw | esc_ne] = "▟", \
[esc_se | esc_sw | esc_ne | esc_nw] = "█", \
})
/**
** @brief relative cursor movement
**/
void esc_move(FILE* f, int vert, int hori);
/**
** @brief asolute cursor movement
**/
void esc_goto(FILE* f, unsigned vert, unsigned hori);
#endif