...
1 package ansiterm
2
3 const LogEnv = "DEBUG_TERMINAL"
4
5
6
7
8
9
10
11
12
13
14
15 const (
16
17
18
19
20
21 ANSI_SGR_RESET = 0
22 ANSI_SGR_BOLD = 1
23 ANSI_SGR_DIM = 2
24 _ANSI_SGR_ITALIC = 3
25 ANSI_SGR_UNDERLINE = 4
26 _ANSI_SGR_BLINKSLOW = 5
27 _ANSI_SGR_BLINKFAST = 6
28 ANSI_SGR_REVERSE = 7
29 _ANSI_SGR_INVISIBLE = 8
30 _ANSI_SGR_LINETHROUGH = 9
31 _ANSI_SGR_FONT_00 = 10
32 _ANSI_SGR_FONT_01 = 11
33 _ANSI_SGR_FONT_02 = 12
34 _ANSI_SGR_FONT_03 = 13
35 _ANSI_SGR_FONT_04 = 14
36 _ANSI_SGR_FONT_05 = 15
37 _ANSI_SGR_FONT_06 = 16
38 _ANSI_SGR_FONT_07 = 17
39 _ANSI_SGR_FONT_08 = 18
40 _ANSI_SGR_FONT_09 = 19
41 _ANSI_SGR_FONT_10 = 20
42 _ANSI_SGR_DOUBLEUNDERLINE = 21
43 ANSI_SGR_BOLD_DIM_OFF = 22
44 _ANSI_SGR_ITALIC_OFF = 23
45 ANSI_SGR_UNDERLINE_OFF = 24
46 _ANSI_SGR_BLINK_OFF = 25
47 _ANSI_SGR_RESERVED_00 = 26
48 ANSI_SGR_REVERSE_OFF = 27
49 _ANSI_SGR_INVISIBLE_OFF = 28
50 _ANSI_SGR_LINETHROUGH_OFF = 29
51 ANSI_SGR_FOREGROUND_BLACK = 30
52 ANSI_SGR_FOREGROUND_RED = 31
53 ANSI_SGR_FOREGROUND_GREEN = 32
54 ANSI_SGR_FOREGROUND_YELLOW = 33
55 ANSI_SGR_FOREGROUND_BLUE = 34
56 ANSI_SGR_FOREGROUND_MAGENTA = 35
57 ANSI_SGR_FOREGROUND_CYAN = 36
58 ANSI_SGR_FOREGROUND_WHITE = 37
59 _ANSI_SGR_RESERVED_01 = 38
60 ANSI_SGR_FOREGROUND_DEFAULT = 39
61 ANSI_SGR_BACKGROUND_BLACK = 40
62 ANSI_SGR_BACKGROUND_RED = 41
63 ANSI_SGR_BACKGROUND_GREEN = 42
64 ANSI_SGR_BACKGROUND_YELLOW = 43
65 ANSI_SGR_BACKGROUND_BLUE = 44
66 ANSI_SGR_BACKGROUND_MAGENTA = 45
67 ANSI_SGR_BACKGROUND_CYAN = 46
68 ANSI_SGR_BACKGROUND_WHITE = 47
69 _ANSI_SGR_RESERVED_02 = 48
70 ANSI_SGR_BACKGROUND_DEFAULT = 49
71
72
73 ANSI_MAX_CMD_LENGTH = 4096
74
75 MAX_INPUT_EVENTS = 128
76 DEFAULT_WIDTH = 80
77 DEFAULT_HEIGHT = 24
78
79 ANSI_BEL = 0x07
80 ANSI_BACKSPACE = 0x08
81 ANSI_TAB = 0x09
82 ANSI_LINE_FEED = 0x0A
83 ANSI_VERTICAL_TAB = 0x0B
84 ANSI_FORM_FEED = 0x0C
85 ANSI_CARRIAGE_RETURN = 0x0D
86 ANSI_ESCAPE_PRIMARY = 0x1B
87 ANSI_ESCAPE_SECONDARY = 0x5B
88 ANSI_OSC_STRING_ENTRY = 0x5D
89 ANSI_COMMAND_FIRST = 0x40
90 ANSI_COMMAND_LAST = 0x7E
91 DCS_ENTRY = 0x90
92 CSI_ENTRY = 0x9B
93 OSC_STRING = 0x9D
94 ANSI_PARAMETER_SEP = ";"
95 ANSI_CMD_G0 = '('
96 ANSI_CMD_G1 = ')'
97 ANSI_CMD_G2 = '*'
98 ANSI_CMD_G3 = '+'
99 ANSI_CMD_DECPNM = '>'
100 ANSI_CMD_DECPAM = '='
101 ANSI_CMD_OSC = ']'
102 ANSI_CMD_STR_TERM = '\\'
103
104 KEY_CONTROL_PARAM_2 = ";2"
105 KEY_CONTROL_PARAM_3 = ";3"
106 KEY_CONTROL_PARAM_4 = ";4"
107 KEY_CONTROL_PARAM_5 = ";5"
108 KEY_CONTROL_PARAM_6 = ";6"
109 KEY_CONTROL_PARAM_7 = ";7"
110 KEY_CONTROL_PARAM_8 = ";8"
111 KEY_ESC_CSI = "\x1B["
112 KEY_ESC_N = "\x1BN"
113 KEY_ESC_O = "\x1BO"
114
115 FILL_CHARACTER = ' '
116 )
117
118 func getByteRange(start byte, end byte) []byte {
119 bytes := make([]byte, 0, 32)
120 for i := start; i <= end; i++ {
121 bytes = append(bytes, byte(i))
122 }
123
124 return bytes
125 }
126
127 var toGroundBytes = getToGroundBytes()
128 var executors = getExecuteBytes()
129
130
131
132 var intermeds = getByteRange(0x20, 0x2F)
133
134
135
136 var csiParams = getByteRange(0x30, 0x3F)
137
138 var csiCollectables = append(getByteRange(0x30, 0x39), getByteRange(0x3B, 0x3F)...)
139
140
141 var upperCase = getByteRange(0x40, 0x5F)
142
143
144 var lowerCase = getByteRange(0x60, 0x7E)
145
146
147 var alphabetics = append(upperCase, lowerCase...)
148
149 var printables = getByteRange(0x20, 0x7F)
150
151 var escapeIntermediateToGroundBytes = getByteRange(0x30, 0x7E)
152 var escapeToGroundBytes = getEscapeToGroundBytes()
153
154
155
156
157 func getEscapeToGroundBytes() []byte {
158 escapeToGroundBytes := getByteRange(0x30, 0x4F)
159 escapeToGroundBytes = append(escapeToGroundBytes, getByteRange(0x51, 0x57)...)
160 escapeToGroundBytes = append(escapeToGroundBytes, 0x59)
161 escapeToGroundBytes = append(escapeToGroundBytes, 0x5A)
162 escapeToGroundBytes = append(escapeToGroundBytes, 0x5C)
163 escapeToGroundBytes = append(escapeToGroundBytes, getByteRange(0x60, 0x7E)...)
164 return escapeToGroundBytes
165 }
166
167 func getExecuteBytes() []byte {
168 executeBytes := getByteRange(0x00, 0x17)
169 executeBytes = append(executeBytes, 0x19)
170 executeBytes = append(executeBytes, getByteRange(0x1C, 0x1F)...)
171 return executeBytes
172 }
173
174 func getToGroundBytes() []byte {
175 groundBytes := []byte{0x18}
176 groundBytes = append(groundBytes, 0x1A)
177 groundBytes = append(groundBytes, getByteRange(0x80, 0x8F)...)
178 groundBytes = append(groundBytes, getByteRange(0x91, 0x97)...)
179 groundBytes = append(groundBytes, 0x99)
180 groundBytes = append(groundBytes, 0x9A)
181 groundBytes = append(groundBytes, 0x9C)
182 return groundBytes
183 }
184
185
186
187
188
189
View as plain text