/* shkeys.c */ /* compile me: cc -o shkeys shkeys.c */ #include #include #include #include #include #include int main (void) { struct termios oldtio, newtio; int rc, rdlen, c, i, leave; char buf [12]; char prbuff [128], *p; rc= tcgetattr (0, &oldtio); if (rc) { perror ("tcgetattr (0, &oldtio)"); return 4; } memcpy (&newtio, &oldtio, sizeof (newtio)); newtio.c_lflag &= ~(ISIG | ICANON | ECHO); newtio.c_iflag &= ~(INLCR | ICRNL | IXON | IXOFF); newtio.c_cflag &= ~(PARENB); newtio.c_cflag = (newtio.c_cflag & ~CSIZE) | CS8; newtio.c_cc[VMIN] = 1; rc= tcsetattr (0, TCSAFLUSH, &newtio); if (rc) { perror ("tcsetattr (0, TCSAFLUSH, &newtio)"); return 12; } printf ("Press any key to see codes, ctrl-D to terminate\n\n"); for (leave= 0; ! leave; ) { rdlen= read (0, buf, sizeof (buf)); if (rdlen<0) { perror ("read(0)"); leave= 1; /* error */ } else if (rdlen==0) { leave= 1; /* EOF */ } else { p= prbuff; for (i=0; i