#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(); void limitCurrChar(); char currchar = 'A'; char xpos=0, ypos=0; struct termios orig_termios; int main() { int fonth = askHeight(); clear(); drawWin(fonth); enableRawMode(); char c; limitCurrChar(); while(1) { c = getch(); // Q to exit if (c == 'q') { break; } // Handle arrows and stuff if (c == '[') { c = getch(); if (c == '5') { // PageUP currchar++; limitCurrChar(); continue; } if (c == '6') { // PageDOWN currchar--; limitCurrChar(); continue; } 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; } void limitCurrChar() { if (currchar < 32) { currchar = 32; } else if (currchar > 126) { currchar = 126; } gotoxy(12+currchar%16*2, 3+(currchar-32)/16); printf("\033[7m%c", currchar); gotoxy(12+(currchar-1)%16*2, 3+(currchar-1-32)/16); printf("\033[0m%c", currchar-1); gotoxy(12+(currchar+1)%16*2, 3+(currchar+1-32)/16); printf("\033[0m%c", currchar+1); gotoxy(12, 2); printf("\033[0mEditing \"%c\" / %d / 0x%X", currchar, currchar, currchar); gotoxy(0, 21); return; }