linux下如何模拟按键输入和模拟鼠标

linux下如何模拟按键输入和模拟鼠标

ID:16397106

大小:64.50 KB

页数:17页

时间:2018-08-09

linux下如何模拟按键输入和模拟鼠标_第1页
linux下如何模拟按键输入和模拟鼠标_第2页
linux下如何模拟按键输入和模拟鼠标_第3页
linux下如何模拟按键输入和模拟鼠标_第4页
linux下如何模拟按键输入和模拟鼠标_第5页
资源描述:

《linux下如何模拟按键输入和模拟鼠标》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、linux下如何模拟按键输入和模拟鼠标查看/dev/input/eventX是什么类型的事件,cat/proc/bus/input/devices设备有着自己特殊的按键键码,我需要将一些标准的按键,比如0-9,X-Z等模拟成标准按键,比如KEY_0,KEY-Z等,所以需要用到按键模拟,具体方法就是操作/dev/input/event1文件,向它写入个input_event结构体就可以模拟按键的输入了。linux/input.h中有定义,这个文件还定义了标准按键的编码等structinput_event{structtimeva

2、ltime;//按键时间__u16type;//类型,在下面有定义__u16code;//要模拟成什么按键__s32value;//是按下还是释放};code:事件的代码.如果事件的类型代码是EV_KEY,该代码code为设备键盘代码.代码植0~127为键盘上的按键代码,0x110~0x116为鼠标上按键代码,其中0x110(BTN_LEFT)为鼠标左键,0x111(BTN_RIGHT)为鼠标右键,0x112(BTN_MIDDLE)为鼠标中键.其它代码含义请参看include/linux/input.h文件.如果事件的类型代码

3、是EV_REL,code值表示轨迹的类型.如指示鼠标的X轴方向REL_X(代码为0x00),指示鼠标的Y轴方向REL_Y(代码为0x01),指示鼠标中轮子方向REL_WHEEL(代码为0x08).type:EV_KEY,键盘EV_REL,相对坐标EV_ABS,绝对坐标value:事件的值.如果事件的类型代码是EV_KEY,当按键按下时值为1,松开时值为0;如果事件的类型代码是EV_REL,value的正数值和负数值分别代表两个不同方向的值./**Eventtypes*/#defineEV_SYN0x00#defineEV_KE

4、Y0x01//按键#defineEV_REL0x02//相对坐标(轨迹球)#defineEV_ABS0x03//绝对坐标#defineEV_MSC0x04//其他#defineEV_SW0x05#defineEV_LED0x11//LED#defineEV_SND0x12//声音#defineEV_REP0x14//repeat#defineEV_FF0x15#defineEV_PWR0x16#defineEV_FF_STATUS0x17#defineEV_MAX0x1f#defineEV_CNT(EV_MAX+1)1。模拟按

5、键输入//其中0表示释放,1按键按下,2表示一直按下//0forEV_KEYforrelease,1forkeypressand2forautorepeat.voidsimulate_key(intfd,intvalue){structinput_eventevent;event.type=EV_KEY;//event.code=KEY_0;//要模拟成什么按键event.value=value;//是按下还是释放按键或者重复gettimeofday(&event.time,0);if(write(fd,&event,size

6、of(event))<0){dprintk("simulatekeyerror~~~");return;}}2。模拟鼠标输入(轨迹球)voidsimulate_mouse(intfd,charbuf[4]){intrel_x,rel_y;staticstructinput_eventevent,ev;//buf[0],buf[2],小于0则为左移,大于0则为右移//buf[1],buf[3],小于0则为下移,大于0则为上移dprintk("MOUSETOUCH:x1=%d,y1=%d,x2=%d,y2=%d",buf[

7、0],buf[1],buf[2],buf[3]);rel_x=(buf[0]+buf[2])/2;rel_y=-(buf[1]+buf[3])/2;//和我们的鼠标是相反的方向,所以取反event.type=EV_REL;event.code=REL_X;event.value=rel_x;gettimeofday(&event.time,0);if(write(fd,&event,sizeof(event))!=sizeof(event))dprintk("rel_xerror~~~:%s",strerror(errno

8、));event.code=REL_Y;event.value=rel_y;gettimeofday(&event.time,0);if(write(fd,&event,sizeof(event))!=sizeof(event))dprintk("rel_yerror~~~:

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。