diff --git a/libConsole/cross_getch.c b/libConsole/cross_getch.c new file mode 100644 --- /dev/null +++ b/libConsole/cross_getch.c @@ -0,0 +1,41 @@ +#include +#include +#include + +#ifdef WIN32 +#include + +int cross_getch () +{ + int ch = -1; + + while (!kbhit ()) { + ch = getch (); + } + + return ch; +} + +#else +#include + +int cross_getch () +{ + int ch = -1, fd = 0; + struct termios neu, alt; + + fd = fileno (stdin); + tcgetattr (fd, &alt); + neu = alt; + neu.c_lflag &= ~(ICANON | ECHO); + tcsetattr (fd, TCSANOW, &neu); + ch = getchar (); + tcsetattr (fd, TCSANOW, &alt); + return ch; +} +#endif + +JNIEXPORT jint JNICALL Java_Console_getch (JNIEnv * env, jclass lass) +{ + return cross_getch (); +}