0
|
1 |
/**
|
|
2 |
* $Id: keyboard.c 53 2008-01-10 00:19:41Z mbroeker $
|
|
3 |
* $URL: http://localhost/svn/c/VirtualReader/trunk/src/keyboard.c $
|
|
4 |
*/
|
|
5 |
|
|
6 |
#include <keyboard.h>
|
|
7 |
|
|
8 |
char getSingleKey ()
|
|
9 |
{
|
|
10 |
// read and return single key with 1 second timeout
|
|
11 |
|
|
12 |
struct termios new_settings;
|
|
13 |
struct termios stored_settings;
|
|
14 |
int timeout = 1; // 1 sec timeout
|
|
15 |
char c;
|
|
16 |
|
|
17 |
tcgetattr (0, &stored_settings);
|
|
18 |
new_settings = stored_settings;
|
|
19 |
|
|
20 |
new_settings.c_lflag &= ~(ICANON | ECHO);
|
|
21 |
|
|
22 |
new_settings.c_cc[VTIME] = timeout * 10;
|
|
23 |
new_settings.c_cc[VMIN] = 0;
|
|
24 |
tcsetattr (0, TCSANOW, &new_settings);
|
|
25 |
|
|
26 |
fflush (stdout);
|
|
27 |
c = getchar ();
|
|
28 |
|
|
29 |
tcsetattr (0, TCSANOW, &stored_settings);
|
|
30 |
|
|
31 |
#ifdef DEBUG
|
|
32 |
if (isalpha (c))
|
|
33 |
printf ("received keypress: %c\n", c);
|
|
34 |
#endif
|
|
35 |
return c;
|
|
36 |
}
|