Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #include <stdio.h>
00016 #include <stdlib.h>
00017 #include <string.h>
00018 #include <termios.h>
00019 #include <unistd.h>
00020
00021 #include <sys/ioctl.h>
00022 #include <termios.h>
00023
00024
00025 #ifndef STDIN_FILENO
00026 #define STDIN_FILENO 0
00027 #endif
00028
00029
00030 static struct termios OldTermattr;
00031
00032
00033 void UtilCleanup(void);
00034
00035
00036 int UtilInit(void)
00037 {
00038 struct termios termattr;
00039
00040 if (tcgetattr(STDIN_FILENO, &OldTermattr) < 0)
00041 return(-1);
00042
00043 memcpy(&termattr, &OldTermattr, sizeof(struct termios));
00044
00045 termattr.c_lflag &= ~(ECHO | ICANON | IEXTEN | ISIG);
00046 termattr.c_iflag &= ~(BRKINT | ICRNL | INPCK | ISTRIP | IXON);
00047 termattr.c_cflag &= ~(CSIZE | PARENB);
00048 termattr.c_cflag |= CS8;
00049 termattr.c_oflag &= ~(OPOST);
00050
00051 termattr.c_cc[VMIN] = 1;
00052 termattr.c_cc[VTIME] = 0;
00053
00054 if (tcsetattr (STDIN_FILENO, TCSANOW, &termattr) < 0)
00055 return(-1);
00056 return(atexit(UtilCleanup));
00057 }
00058
00059
00060 void UtilCleanup(void)
00061 {
00062 tcsetattr(STDIN_FILENO, TCSAFLUSH, &OldTermattr);
00063 }
00064
00065
00066
00067 int KeyHit(void)
00068 {
00069 int bytes_waiting;
00070
00071 ioctl(STDIN_FILENO, FIONREAD, &bytes_waiting);
00072 return(bytes_waiting);
00073 }
00074
00075