libConsole/cross_getch.c
changeset 53 6b3d7e3418c1
child 69 b5912e5f899f
new file mode 100644
--- /dev/null
+++ b/libConsole/cross_getch.c
@@ -0,0 +1,41 @@
+#include <stdio.h>
+#include <jni.h>
+#include <Console.h>
+
+#ifdef WIN32
+#include <conio.h>
+
+int cross_getch ()
+{
+    int ch = -1;
+
+    while (!kbhit ()) {
+        ch = getch ();
+    }
+
+    return ch;
+}
+
+#else
+#include <termios.h>
+
+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 ();
+}