Repair cursor on exit for posix
parent
cf71b4d57d
commit
22d3cdeb43
|
@ -4,8 +4,10 @@
|
|||
#ifdef _WIN32
|
||||
#include <conio.h>
|
||||
#define getch _getch
|
||||
inline int getchInit(void) { return 0; }
|
||||
#else
|
||||
int getch(void);
|
||||
int getchInit(void);
|
||||
#endif /* _WIN32 */
|
||||
|
||||
#endif /* __GETCH_H__ */
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
|
||||
ThreadR input(void *vargp)
|
||||
{
|
||||
getchInit();
|
||||
int *out = ((InputArgs *)vargp)->out;
|
||||
bool *alive = ((InputArgs *)vargp)->alive;
|
||||
|
||||
|
|
|
@ -2,11 +2,14 @@
|
|||
#include <unistd.h>
|
||||
#include <termios.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
static struct termios DefaultState = {0};
|
||||
|
||||
int getch(void)
|
||||
{
|
||||
char buf = 0;
|
||||
struct termios old = { 0 };
|
||||
struct termios old = {0};
|
||||
fflush(stdout);
|
||||
if (tcgetattr(0, &old) < 0) perror("tcsetattr()");
|
||||
old.c_lflag &= ~ICANON; // local modes = Non Canonical mode
|
||||
|
@ -21,4 +24,15 @@ int getch(void)
|
|||
return (int)buf;
|
||||
}
|
||||
|
||||
static void resetTerminalState(void)
|
||||
{
|
||||
tcsetattr(0, TCSANOW, &DefaultState);
|
||||
}
|
||||
|
||||
int getchInit(void)
|
||||
{
|
||||
tcgetattr(0, &DefaultState);
|
||||
return atexit(resetTerminalState);
|
||||
}
|
||||
|
||||
#endif /* !_WIN32 */
|
||||
|
|
Loading…
Reference in New Issue