PageRenderTime 49ms CodeModel.GetById 43ms app.highlight 3ms RepoModel.GetById 1ms app.codeStats 0ms

/commTools/getch.c

http://github.com/Yniold/liftsrc
C | 48 lines | 25 code | 6 blank | 17 comment | 4 complexity | a23357618cf3531ccce77d4dacd022cc MD5 | raw file
 1/*
 2* $RCSfile: getch.c,v $ last changed on $Date: 2006/09/04 11:53:29 $ by $Author: rudolf $
 3*
 4* $Log: getch.c,v $
 5* Revision 1.2  2006/09/04 11:53:29  rudolf
 6* Fixed warnings for GCC 4.03, added newline and CVS revision info
 7*
 8*
 9*
10*/
11#include <stdio.h>
12#include <stdlib.h>
13#include <termios.h>
14#include <unistd.h>
15
16static struct termios new_io;
17static struct termios old_io;
18
19/* Funktion schaltet das Terminal in den cbreak-Modus:        */
20/* Kontrollflag ECHO und ICANON auf 0 setzen                  */
21/* Steuerzeichen: Leseoperation liefert 1 Byte VMIN=1 VTIME=1 */
22int cbreak(int fd) {
23   /*Sichern unseres Terminals*/
24   if((tcgetattr(fd, &old_io)) == -1)
25      return -1;
26   new_io = old_io;
27   /*Wir ver�ndern jetzt die Flags f�r   den cbreak-Modus*/
28   new_io.c_lflag = new_io.c_lflag & ~(ECHO|ICANON);
29   new_io.c_cc[VMIN] = 0;
30   new_io.c_cc[VTIME]= 0;
31
32   /*Jetzt setzen wir den cbreak-Modus*/
33   if((tcsetattr(fd, TCSAFLUSH, &new_io)) == -1)
34      return -1;
35   return 1;
36}
37
38int restoreinput(void){
39   /*Alten Terminal-Modus wiederherstellen*/
40   tcsetattr(STDIN_FILENO, TCSANOW, &old_io);
41};
42
43int getch(void) {
44   int c;
45
46   c = getchar();
47   return c;
48}