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