码迷,mamicode.com
首页 > 系统相关 > 详细

linux记录键盘

时间:2014-11-16 17:14:24      阅读:135      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   io   color   ar   os   sp   div   

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<string.h>
 4 #include<termios.h>
 5 #include<term.h>
 6 #include<curses.h>
 7 #include<unistd.h>
 8 static struct termios initial_settings,new_settings;
 9 static int peek_character=-1;
10 void init_keyboard();
11 void close_keyboard();
12 int check_keyboard();
13 int readch();
14 int main()
15 {
16     int ch=0;
17     init_keyboard();
18     while(ch!=q)
19     {
20         printf("looping\n");
21         sleep(1);    
22         if(check_keyboard())
23         {
24         ch=readch();
25     ///    scanf("%c",&ch);
26         printf("You hit %c\n",ch);
27         }
28     }
29     close_keyboard();
30     exit(0);
31 }
32 
33 int readch()
34 {
35     char ch;
36     if(peek_character!=-1)
37     {
38         ch=peek_character;
39         peek_character=-1;
40         return ch;
41     }
42     read(0,&ch,1);
43     return ch;
44 } 
45 
46 void init_keyboard()
47 {
48     tcgetattr(0,&initial_settings);
49     new_settings=initial_settings;
50     new_settings.c_lflag &=~ICANON;
51     new_settings.c_lflag &=~ECHO;
52     new_settings.c_lflag &=~ISIG;
53     new_settings.c_cc[VTIME]=0;
54     new_settings.c_cc[VMIN]=1;
55     tcsetattr(0,TCSANOW,&new_settings);
56 }
57 
58 void close_keyboard()
59 {
60     tcsetattr(0,TCSANOW,&initial_settings);
61 }
62 
63 int check_keyboard()
64 {
65     char ch;
66     int nread;
67     if(peek_character!=-1)
68     {
69         return 1;
70     }
71     new_settings.c_cc[VMIN]=0;
72     tcsetattr(0,TCSANOW,&new_settings);
73     nread=read(0,&ch,1);
74     new_settings.c_cc[VMIN]=1;
75     tcsetattr(0,TCSANOW,&new_settings);
76     if(nread==1)
77     {
78     peek_character=ch;
79     return 1;
80     }
81     return 0;
82 }

bubuko.com,布布扣

如图所示,按q退出

linux记录键盘

标签:des   style   blog   io   color   ar   os   sp   div   

原文地址:http://www.cnblogs.com/newworldcom/p/4101566.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!