aboutsummaryrefslogtreecommitdiffstats
path: root/utils.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'utils.cpp')
-rw-r--r--utils.cpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/utils.cpp b/utils.cpp
new file mode 100644
index 0000000..f118fc5
--- /dev/null
+++ b/utils.cpp
@@ -0,0 +1,27 @@
+#include "utils.h"
+#include <unistd.h> //_getch
+#include <termios.h> //_getch
+#include <stdio.h>
+
+/* Thanks to StackOverflow user mf_ */
+char Utils::getch(){
+ char buf=0;
+ struct termios old={0};
+ fflush(stdout);
+ if(tcgetattr(0, &old)<0)
+ perror("tcsetattr()");
+ old.c_lflag&=~ICANON;
+ old.c_lflag&=~ECHO;
+ old.c_cc[VMIN]=1;
+ old.c_cc[VTIME]=0;
+ if(tcsetattr(0, TCSANOW, &old)<0)
+ perror("tcsetattr ICANON");
+ if(read(0,&buf,1)<0)
+ perror("read()");
+ old.c_lflag|=ICANON;
+ old.c_lflag|=ECHO;
+ if(tcsetattr(0, TCSADRAIN, &old)<0)
+ perror ("tcsetattr ~ICANON");
+ //printf("%c\n",buf);
+ return buf;
+ }