summaryrefslogtreecommitdiff
path: root/reference/C/EXAMPLES/keyboard.c
diff options
context:
space:
mode:
Diffstat (limited to 'reference/C/EXAMPLES/keyboard.c')
-rw-r--r--reference/C/EXAMPLES/keyboard.c51
1 files changed, 51 insertions, 0 deletions
diff --git a/reference/C/EXAMPLES/keyboard.c b/reference/C/EXAMPLES/keyboard.c
new file mode 100644
index 0000000..61ced2c
--- /dev/null
+++ b/reference/C/EXAMPLES/keyboard.c
@@ -0,0 +1,51 @@
+/****************************************************************************
+ *
+ * Purpose: Reset the keyboard from line mode to character mode and
+ * suppress the echo when a key is entered. This allow the
+ * program to get a character without the user pressing ENTER.
+ *
+ * This is for UNIX systems. DOS users have getch and getche.
+ * Unix programers can also use curses.
+ *
+ * Author: M.J. Leslie.
+ * Date: 30-Mar-97
+ *
+ ****************************************************************************/
+
+void SetKeyboard (void);
+void ResetKeyboard(void);
+
+main()
+{
+ char Characters[1024];
+ int Inc=0;
+
+ memset(Characters, 0, 1024);
+
+ printf("Press a load of characters (q=exit)\n");
+
+ SetKeyboard();
+
+ for(Inc = 0; (Characters[Inc] = getchar()) != 'q'; Inc++);
+
+ ResetKeyboard();
+
+ printf("You Pressed %s\n", Characters);
+}
+
+/* Set the keyboard. */
+
+void SetKeyboard(void)
+{
+ system("stty raw -echo");
+}
+
+/* Return the keyboard to its original state. If this is not called
+ * before the program ends, the keyboard will remain in its reconfigured
+ * state.
+ */
+
+void ResetKeyboard(void)
+{
+ system("stty -raw echo");
+}