Mercurial Hosting > harelet
comparison linuxconio.h @ 7:1bb981516d87
Automated Vimcurial commmit
author | VilyaemKenyaz |
---|---|
date | Sat, 09 Sep 2023 17:11:20 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
6:ec82c868b8b0 | 7:1bb981516d87 |
---|---|
1 #ifndef CONIO_H | |
2 #define CONIO_H | |
3 | |
4 #include <termios.h> | |
5 #include <unistd.h> | |
6 #include <stdio.h> | |
7 #include <fcntl.h> | |
8 #include <stdlib.h> | |
9 #include <string.h> | |
10 | |
11 #define cprintf printf | |
12 #define cscanf scanf | |
13 #define cgets gets | |
14 | |
15 #define CLEAR "\x1b[2J" | |
16 #define SET11 "\x1b[1;1f" | |
17 #define CURSOR_UP "\x1b[1A" | |
18 #define ERASE_LINE "\x1b[2K" | |
19 #define BLINK_SLOW "\x1b[5m" | |
20 #define BLINK_RAPID "\x1b[6m" | |
21 #define CC_CLEAR "\x1b[0m" | |
22 | |
23 #define BLACK "\x1b[30m" | |
24 #define RED "\x1b[31m" | |
25 #define GREEN "\x1b[32m" | |
26 #define YELLOW "\x1b[33m" | |
27 #define BLUE "\x1b[34m" | |
28 #define MAGENTA "\x1b[35m" | |
29 #define CYAN "\x1b[36m" | |
30 #define WHITE "\x1b[37m" | |
31 | |
32 #define IBLACK "\x1b[30;1m" | |
33 #define IRED "\x1b[31;1m" | |
34 #define IGREEN "\x1b[32;1m" | |
35 #define IYELLOW "\x1b[33;1m" | |
36 #define IBLUE "\x1b[34;1m" | |
37 #define IMAGENTA "\x1b[35;1m" | |
38 #define ICYAN "\x1b[36;1m" | |
39 #define IWHITE "\x1b[37;1m" | |
40 | |
41 #define BGC_BLACK "\x1b[40m" | |
42 #define BGC_RED "\x1b[41m" | |
43 #define BGC_GREEN "\x1b[42m" | |
44 #define BGC_YELLOW "\x1b[43m" | |
45 #define BGC_BLUE "\x1b[44m" | |
46 #define BGC_MAGENTA "\x1b[45m" | |
47 #define BGC_CYAN "\x1b[46m" | |
48 #define BGC_WHITE "\x1b[47m" | |
49 | |
50 #define BGC_IBLACK "\x1b[40;1m" | |
51 #define BGC_IRED "\x1b[41;1m" | |
52 #define BGC_IGREEN "\x1b[42;1m" | |
53 #define BGC_IYELLOW "\x1b[43;1m" | |
54 #define BGC_IBLUE "\x1b[44;1m" | |
55 #define BGC_IMAGENTA "\x1b[45;1m" | |
56 #define BGC_ICYAN "\x1b[46;1m" | |
57 #define BGC_IWHITE "\x1b[47;1m" | |
58 | |
59 static struct termios oldterm, newterm; | |
60 | |
61 void initTermios(int echo) | |
62 { | |
63 tcgetattr(0, &oldterm); | |
64 newterm = oldterm; | |
65 newterm.c_lflag &= ~ICANON; | |
66 newterm.c_lflag &= echo ? ECHO : ~ECHO; | |
67 tcsetattr(0, TCSANOW, &newterm); | |
68 } | |
69 void resetTermios(void) | |
70 { | |
71 tcsetattr(0, TCSANOW, &oldterm); | |
72 } | |
73 | |
74 int getch_(int echo) | |
75 { | |
76 int ch; | |
77 initTermios(echo); | |
78 ch = getchar(); | |
79 resetTermios(); | |
80 return ch; | |
81 } | |
82 | |
83 void cagxy(unsigned int x, unsigned int y) | |
84 { | |
85 printf("%s\x1b[%d;%df", CLEAR, y, x); | |
86 } | |
87 | |
88 void clrscr() | |
89 { | |
90 printf("%s%s",CLEAR, SET11); | |
91 } | |
92 | |
93 int getch(void) | |
94 { | |
95 return getch_(0); | |
96 } | |
97 | |
98 int getche(void) | |
99 { | |
100 return getch_(1); | |
101 } | |
102 | |
103 void gotox(unsigned int x) | |
104 { | |
105 printf("\x1b[%dG", x); | |
106 } | |
107 | |
108 void gotoxy(unsigned int x, unsigned int y) | |
109 { | |
110 printf("\x1b[%d;%df", y, x); | |
111 } | |
112 | |
113 void nocursor() | |
114 { | |
115 printf("\x1b[?25l"); | |
116 } | |
117 | |
118 void reset_video() | |
119 { | |
120 printf("\x1b[0m"); | |
121 } | |
122 | |
123 void showcursor() | |
124 { | |
125 printf("\x1b[?25h"); | |
126 } | |
127 | |
128 void textcolor(char *color) | |
129 { | |
130 printf("%s",color); | |
131 } | |
132 | |
133 void textbackground(char color[11]) | |
134 { | |
135 char col[11]; | |
136 strcpy(col,color); | |
137 col[2]='4'; | |
138 printf("%s",col); | |
139 } | |
140 | |
141 void delline() | |
142 { | |
143 printf("%s%s", ERASE_LINE, CURSOR_UP); | |
144 } | |
145 | |
146 void clreol() | |
147 { | |
148 printf("%s",CLEAR); | |
149 } | |
150 int putch(const char c) | |
151 { | |
152 printf("%c",c); | |
153 return (int)c; | |
154 } | |
155 | |
156 int cputs(const char*str) | |
157 { | |
158 printf(str); | |
159 return 0; | |
160 } | |
161 | |
162 | |
163 int wherexy(int *x, int *y) | |
164 { | |
165 printf("\033[6n"); | |
166 if(getch() != '\x1B') return 0; | |
167 if(getch() != '\x5B') return 0; | |
168 int in; | |
169 int ly = 0; | |
170 while((in = getch()) != ';') | |
171 ly = ly * 10 + in - '0'; | |
172 int lx = 0; | |
173 while((in = getch()) != 'R') | |
174 lx = lx * 10 + in - '0'; | |
175 *x = lx; | |
176 *y = ly; | |
177 } | |
178 int wherex() | |
179 { | |
180 int x=0,y=0; | |
181 wherexy(&x, &y); | |
182 return x; | |
183 } | |
184 | |
185 int wherey() | |
186 { | |
187 int x=0,y=0; | |
188 wherexy(&x, &y); | |
189 return y; | |
190 } | |
191 | |
192 int kbhit() | |
193 { | |
194 struct termios oldt, newt; | |
195 int ch; | |
196 int oldf; | |
197 | |
198 tcgetattr(STDIN_FILENO, &oldt); | |
199 newt = oldt; | |
200 newt.c_lflag &= ~(ICANON | ECHO); | |
201 tcsetattr(STDIN_FILENO, TCSANOW, &newt); | |
202 oldf = fcntl(STDIN_FILENO, F_GETFL, 0); | |
203 fcntl(STDIN_FILENO, F_SETFL, oldf | O_NONBLOCK); | |
204 | |
205 ch = getchar(); | |
206 | |
207 tcsetattr(STDIN_FILENO, TCSANOW, &oldt); | |
208 fcntl(STDIN_FILENO, F_SETFL, oldf); | |
209 | |
210 if(ch != EOF) | |
211 { | |
212 ungetc(ch, stdin); | |
213 return 1; | |
214 } | |
215 return 0; | |
216 } | |
217 #endif | |
218 |