#include #include #include #define ANSI_COLOR_RED "\x1b[31m" #define ANSI_COLOR_RESET "\x1b[0m" static struct termios term; static bool set_terminal_in_VT_mode(void) { if (tcgetattr(0, &term) != 0) return false; struct termios raw = term; raw.c_lflag &= ~ICANON; // disable buffered I/O raw.c_lflag &= ~ECHO; // disable echo mode return tcsetattr(0, TCSANOW, &raw) == 0; } static bool restore_terminal_mode(void) { return tcsetattr(0, TCSANOW, &term) == 0; } int main() { if (!set_terminal_in_VT_mode()) { perror(NULL); return -1; } puts("Type charakters (de ASCII code van elk karakter wordt voor het karakter in het rood geprint) (0 om te stoppen):"); char c; do { c = getchar(); printf(ANSI_COLOR_RED "0x%02x" ANSI_COLOR_RESET, c); putchar(c); } while (c != '0'); if (!restore_terminal_mode()) { perror(NULL); return -1; } return 0; }