aboutsummaryrefslogtreecommitdiff
path: root/desktop/term.cc
diff options
context:
space:
mode:
author3gg <3gg@shellblade.net>2021-12-04 22:22:47 -0800
committer3gg <3gg@shellblade.net>2021-12-04 22:22:47 -0800
commite62be3b12d3c94d709a77d89f52c31f7c4ac475d (patch)
treebb351f85960443086730f0354f829958b2d03190 /desktop/term.cc
parent48481ba9032689e1bceba05c98bc69972e1a2d3b (diff)
Initial commit.
Diffstat (limited to 'desktop/term.cc')
-rwxr-xr-xdesktop/term.cc28
1 files changed, 28 insertions, 0 deletions
diff --git a/desktop/term.cc b/desktop/term.cc
new file mode 100755
index 0000000..a72f1e9
--- /dev/null
+++ b/desktop/term.cc
@@ -0,0 +1,28 @@
1#include "term.h"
2
3#include <cstdio>
4#include <unistd.h> //_getch*/
5#include <termios.h> //_getch*/
6
7char getch ()
8{
9 char buf=0;
10 struct termios old={0};
11 fflush(stdout);
12 if(tcgetattr(0, &old)<0)
13 perror("tcsetattr()");
14 old.c_lflag&=~ICANON;
15 old.c_lflag&=~ECHO;
16 old.c_cc[VMIN]=1;
17 old.c_cc[VTIME]=0;
18 if(tcsetattr(0, TCSANOW, &old)<0)
19 perror("tcsetattr ICANON");
20 if(read(0,&buf,1)<0)
21 perror("read()");
22 old.c_lflag|=ICANON;
23 old.c_lflag|=ECHO;
24 if(tcsetattr(0, TCSADRAIN, &old)<0)
25 perror ("tcsetattr ~ICANON");
26 printf("%c\n",buf);
27 return buf;
28 }