#include #include #include char *control_chars[] = { "^@ NUL", "^A SOH", "^B STX", "^C ETX", "^D EOT", "^E ENQ", "^F ACK", "^G BEL", "^H BS ", "^I HT ", "^J NL ", "^K VT ", "^L NP ", "^M CR ", "^N SO ", "^O SI ", "^P DLE", "^Q DC1", "^R DC2", "^S DC3", "^T DC4", "^U NAK", "^V SYN", "^W ETB", "^X CAN", "^Y EM ", "^Z SUB", "^[ ESC", "^\\ FS ", "^] GS ", "^^ RS ", "^_ US " }; main() { int c; int exitcnt=0; FILE *fp; struct termio term,oldterm; fprintf(stderr,"Press ~ three times to exit\n"); ioctl(0,TCGETA,&oldterm); ioctl(0,TCGETA,&term); term.c_lflag = 0; term.c_iflag = 0; term.c_cc[VMIN] = 1; term.c_cc[VTIME] = 0; ioctl(0,TCSETA,&term); while ( exitcnt < 3 ) { c = getchar(); if ( c == '~' ) exitcnt++; else exitcnt = 0; if ( c >= ' ' ) printf("Dec=%-3d Oct=%03o Hex=%02x ASCII=%c\n", c,c,c,c); else printf("Dec=%-3d Oct=%03o Hex=%02x ASCII=%s\n", c,c,c,control_chars[c]); } ioctl(0,TCSETA,&oldterm); }