linux记录键盘

 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 }

如图所示,按q退出

时间: 2024-10-05 02:51:40

linux记录键盘的相关文章

Linux GPIO键盘驱动开发记录_OMAPL138

Linux GPIO键盘驱动开发记录_OMAPL138 Linux基本配置完毕了,这几天开始着手Linux驱动的开发,从一个最简单的键盘驱动开始,逐步的了解开发驱动的过程有哪些.看了一下Linux3.3内核文件下的driver目录,点开里面的C文件,感觉底层的Linux驱动机制还是很复杂的,还需要一段漫长时间的学习.现在开发的也不能说是叫做驱动,也只能说是驱动的应用,我们学习驱动也从应用逐步开始,往里面深入吧. 0.开发准备 内核源文件(当时我们编译内核时候的目录,很重要,编译驱动的时候需要依赖

Linux 用键盘操作窗口

以下是我从各处搜集来的关于用键盘操作窗口信息,操作可能不是最简或者最好的,当然也可能不是最全的,以后遇到新的操作,我会即使添加,如果你有我没有列出的操作,希望你能提出,我可以加上! 我实验的操作系统是ubuntu14.04,其他不清楚 1. 用键盘移动窗口 1)ALT+F7 快捷键, 然后用上.下.左.右键移动窗口 2)ALT+space(空格键),然后按m键,进入移动模式,然后用上.下.左.右键移动窗口 2.改变窗口大小 1)ALT+F8 快捷键, 然后用上.下.左.右键改变窗口大小 2)AL

Linux 记录所有用户登录和操作的详细日志

1.起因 最近linux服务器上一些文件呗篡改,想追查已经查不到记录了,所以得想个办法记录下所有用户的操作记录. 一般大家通常会采用history来记录,但是history有个缺陷就是默认是1000行,当然你也可以vim /etc/profile将1000修改成1000000行,但是这只是比较笼统的做法,看不到详细的用户来源已经操作记录,比如来源ip地址.操作时间.操作用户等. 所以我们不得不自己写代码来实现这样的功能. 2.自动记录脚本 编写脚本如下: history USER=`whoami

linux记录登录ip方法

PS:Linux用户操作记录一般通过命令history来查看历史记录,但是如果因为某人误操作了删除了重要的数据,这种情况下history命令就不会有什么作用了.以下方法可以实现通过记录登陆IP地址和所有用户登录所操作的日志记录! 在/etc/profile配置文件的末尾加入以下脚本代码就可以实现,通过上面的代码可以看出来,在系统的/tmp新建个history目录(这个目录可以自定义),在目录中记录了所有的登陆过系统的用户和IP地址,这也是监测系统安全的方法之一. PS1="`whoami`@`h

linux 处理键盘 鼠标事件

Linux下鼠标和键盘的模拟控制,也就是为手势和语音控制鼠标和键盘部分服务的. 有关于本系统构建的文章结构都会由三个部分来组织,一是该功能模块的介绍和在Linux下简单应用程序的实现:二是将该功能模块整合到交互系统(先以TLD为地基)中去:三是分析目前存在的问题与未来的解决构思. 一.input子系统和模拟程序编写: Linux 输入子系统是 Linux内核用于管理各种输入设备(键盘,鼠标,遥控杆,书写板等等)的.输入子系统分为三块: input core, drivers和 event han

linux记录----date使用初记

linux中的系统时间的显示及设置可以用date命令. 我们直接输入date,则会有如下显示 >>date Thu Jul 30 18:49:55 PDT 2015 它有许多参数,下面只是几个笔者参数的个人记录. -s     设置时间 如 >>date -s 2015-07-31      #这往往把时间设置为00:00:00 Fri Jul 31 00:00:00 PDT 2015 >> date -s 20150730 Thu Jul 30 00:00:00 PD

Linux 记录所有用户的操作记录

随着时代的发展,我们生活中了解计算机的越来越多,黑客也越来越多:为了安全起见,我们需要记录所用户的登录及操作日志:我们需要清楚服务器上每个用户登录后都做了哪些操作,我们需要记录下每个用户的操作命令. 下面的内容设置可以实现在Linux下所有用户,不管是远程还是本地登陆,在本机的所有操作都会记录下来,并生成包含"用户/IP/时间/操作指令"的文件存放在指定位置. 1.添加以下信息到/etc/profile文件里 ################## 记录信息开始 ############

最小化安装Linux记录

挂载点: /boot 挂载点  100M swap 交换分区 / 根分区 最小化安装: 基本--基本.兼容库.调试工具 开发--开发工具 修改hostname 永久设置:/etc/sysconfig/network 临时设置:hostname myhosts01 配置主机IP: setup,如果有需要,可以配置DNS,配置完成后,重启网络: 如果是克隆的虚拟机,需要删除rm -rf /etc/udev/rules.d/70-persistent-net.rules 删除ifcfg-eth0 uu

Linux记录用户账户的登陆时间和行为信息

??? 公司审计部门要求我们对所有的主机系统添加用户行为审计功能,记录用户账户的登陆时间和行为信息,我这边用了一个简单的方法实现以下,下面我简单介绍一下实现的方法 实施步骤: 1.创建用户行为日志存放目录/var/audit,目录赋予777权限(因为所有用户都要向这个目录写入文件) mkdir?-p?/var/audit;chmod?777?/var/audit ? ? 2.修改系统环境变量文件/etc/profile,文件新增用户登录记录信息,添加如下内容 #Add?log?user?beha