android按键精灵。C++编写。-创新互联
可以记录屏幕键盘等传感器对系统的输入。
网页题目:android按键精灵。C++编写。-创新互联
文章URL:http://hbruida.cn/article/iiipo.html
上一篇文章做的那个稍微有点复杂了,还需要把板子的输出拿回电脑处理再倒回去。这个就简单多了用法如下
建网站原本是网站策划师、网络程序员、网页设计师等,应用各种网络程序开发技术和网页设计技术配合操作的协同工作。创新互联专业提供成都网站设计、做网站、成都外贸网站建设公司,网页设计,网站制作(企业站、响应式网站建设、电商门户网站)等服务,从网站深度策划、搜索引擎友好度优化到用户体验的提升,我们力求做到极致!usage:
event record /path/file1
event replay /path/file1
给我女友写的程序直接搬过来了,所以注释有些冗余。
"stdafx.h"
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
struct input_event {
timeval time;
__u16 type;
__u16 code;
__s32 value;
};
struct myinputevent:public input_event
//继承了16字节的数据结构,添加了一个deviceID{
int deviceID;
};
main.cpp
#include "stdafx.h"void record(char* filename);
void replay(char* filename);
int main(int argc, char *argv[])
{
if(argc!=3 || (strcmp(argv[1],"record") & strcmp(argv[1],"replay")))
{
std::cout<<
"usage:"<
replay.cpp
#include "stdafx.h"//#define DEBUGint timedif(timeval& a,timeval& b)
//这是个计算时间差的函数,对于一个timeval的数据结构,前面4字节秒,后面4字节微秒
//这个函数接受两个这样的结构,返回一个微秒单位的时间差{
return (b.tv_sec-a.tv_sec)*1000000+(b.tv_usec-a.tv_usec);
}
void replay(char* filename)
{
int fi = open(filename,O_RDONLY);
if(fi==-1)
{
std::cout<
record.cpp
#include "stdafx.h"#define DEBUG
inlinebool eventcmp(const myinputevent& a,const myinputevent& b)
//这个比较函数为了之后排序用,因为两个自定义的数据结构,你用标准排序函数,排序肯定不知道你这俩结构应该怎么比大小
//定义了我的数据结构之间如果做小于比较时,时间小就算小。
//这样就可以采用标准排序函数对事件进行排序了。{
if(a.time.tv_secb.time.tv_sec)
return 0;
if(a.time.tv_usec AllRecordedEvent;
//这里有个数组,用来添加所有录制到的eventchar fn[200];
void afterstop(int x)
//按下ctrl+c和回车之后,录制停止,做数据整理和保存工作
//主要是按时间顺序对事件排序,然后保存{
#ifdef DEBUG
std::cout<<"Recorded events:"<code;
my.type=p->type;
my.value=p->value;
my.time=p->time;
my.deviceID=i;
AllRecordedEvent.push_back(my);
//这里可能难理解,buffer里存储了大量16字节的event,所以让指针p是数据结构指针,然后16字节16字节的挪动
//我有一个自己的数据结构叫myinputevent,比这个16字节来说,尾部添加了一个4字节的int,存储设备的event号
//你可以在stdafx.h中看到这些数据结构
//把那16字节的原封不动的放到我的数据结构中,再把我自己的设备号赋值,就完成了这一个事件的录制。
//然后就存储到AllRecordedEvent里面去。 }
}
}
}
}
网页题目:android按键精灵。C++编写。-创新互联
文章URL:http://hbruida.cn/article/iiipo.html