Listing 3 keycode
/* * Listing 3: keycode: * When a key is pressed, this program displays the key and its value * in decimal, octal, and hexadecimal values. */ #include <stdio.h> #include <sys/types.h> #include <termio.h> #define EOT 004 #define BEL 007 #define BS 010 #define LF 012 #define ESC 033 #define DEL 0177 int main(argc, argv) int argc; char *argv[]; { char ch; struct termio tty, oldtty; if (ioctl(0, TCGETA, &tty)) { perror("ioctl"); exit(1); } /* save current terminal settings */ oldtty = tty; /* turn off canonical mode, echo, etc */ oldtty.c_iflag &= ~IXON; oldtty.c_iflag &= ~IXOFF; oldtty.c_lflag &= ~ISIG; oldtty.c_lflag &= ~ICANON; oldtty.c_lflag &= ~ECHO; oldtty.c_oflag &= ~OPOST; oldtty.c_cc[VTIME] = 30; oldtty.c_cc[VMIN] = 1; ioctl(0, TCSETA, &oldtty); printf("Enter keys to display in dec, octal, and hex. press control-d to \ quit\n\r"); do { printf("keycode> "); ch=getc(stdin); switch (ch) { case ESC : printf("<ESC>"); break; case EOT : printf("<EOT>"); break; case DEL : printf("<DEL>"); break; case LF : printf("<LF> "); break; case BS : printf("<BS> "); break; default : printf(" "); break; } printf(" %c %4d 0%-4o 0x%-4x\n\r",ch, ch, ch, ch); } while ((ch != EOT)); ioctl(0, TCSETA, &tty); exit(0); }