#include #include #include #include #define clear() printf("\033[H\033[J") #define gotoxy(x,y) printf("\033[%d;%dH", (y), (x)) int getch(); void enableRawMode(); void disableRawMode(); void drawWin(int fonth); int askHeight(); struct termios orig_termios; int main() { int fonth = askHeight(); clear(); drawWin(fonth); enableRawMode(); char c; while(1) { c = getch(); // Q to exit if (c == 'q') { break; } // Handle arrows and stuff if (c == '[') { c = getch(); if (c == 'A') { printf("^"); continue; } if (c == 'B') { printf("v"); continue; } if (c == 'C') { printf(">"); continue; } if (c == 'D') { printf("<"); continue; } } } disableRawMode(); return 0; } void drawWin(int fonth) { clear(); printf("Kaari - Binarier font editor\r\n"); printf("+--------+\r\n"); int cstart=32; int cperline=16; int cmax=126; for (int y=0; y 16) { printf("This should be 8 - 16.\r\n"); return askHeight(); } return fonth; } void disableRawMode() { tcsetattr(STDIN_FILENO, TCSAFLUSH, &orig_termios); } void enableRawMode() { tcgetattr(STDIN_FILENO, &orig_termios); atexit(disableRawMode); struct termios raw = orig_termios; raw.c_lflag &= ~(ECHO | ICANON); tcsetattr(STDIN_FILENO, TCSAFLUSH, &raw); } int getch() { struct termios oldt, newt; int ch; tcgetattr(STDIN_FILENO, &oldt); newt = oldt; newt.c_lflag &= ~(ICANON | ECHO); tcsetattr(STDIN_FILENO, TCSANOW, &newt); ch = getchar(); tcsetattr(STDIN_FILENO, TCSANOW, &oldt); return ch; }