diff options
author | Tobias Klauser <tklauser@distanz.ch> | 2008-01-27 11:37:44 +0100 |
---|---|---|
committer | Tobias Klauser <tklauser@xenon.tklauser.home> | 2008-01-27 11:37:44 +0100 |
commit | 7e0f021a9aec35fd8e6725e87e3313b101d26f5e (patch) | |
tree | b1cacc4b24393f517aeb4610e9e1021f954307a8 /reference/C/EXAMPLES/keyboard.c |
Initial import (2.0.2-6)2.0.2-6
Diffstat (limited to 'reference/C/EXAMPLES/keyboard.c')
-rw-r--r-- | reference/C/EXAMPLES/keyboard.c | 51 |
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"); +} |