linux eventx 模拟鼠标 单击和双击的方法

 

网上有很多模拟键盘和鼠标的例子,单单击和双击的很少

 

linux/input.h中有定义,这个文件还定义了标准按键的编码等

struct input_event {
    struct timeval time;  //按键时间
    __u16 type; //类型,在下面有定义
    __u16 code; //要模拟成什么按键
    __s32 value;//是按下还是释放
};

code:
事件的代码.如果事件的类型代码是EV_KEY,该代码code为设备键盘代码.代码植0~127为键盘上的按键代码, 0x110~0x116 为鼠标上按键代码,其中0x110(BTN_ LEFT)为鼠标左键,0x111(BTN_RIGHT)为鼠标右键,0x112(BTN_ MIDDLE)为鼠标中键.其它代码含义请参看include/linux /input.h文件. 如果事件的类型代码是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的正数值和负数值分别代表两个不同方向的值.

 

           event.type = EV_KEY;

           event.code = BTN_LEFT;

           event.value = 1;

           write(fd, &event, sizeof(event));

如果 

type 设为键   code 设为左键   按 俩下  再放开  不就是双击了吗  实了下 真的可行。

如下函数 simulate_mousedoubleclick 就可以双击双击左键了。

当然  按一下再放开 就是单击时间。


      

 

 

 

 

void simulate_mousedoubleclick(int fd)

{

    struct input_event event;

        memset(&event, 0, sizeof(event));

        gettimeofday(&event.time, NULL);

 

            event.type = EV_KEY;

           event.code = BTN_LEFT;

           event.value = 1;

           write(fd, &event, sizeof(event));

 

           event.type = EV_KEY;

                     event.code = BTN_LEFT;

                     event.value = 1;

                     write(fd, &event, sizeof(event));

 

 

           event.type = EV_SYN;

                  event.code = SYN_REPORT;

                  event.value = 0;

                  write(fd, &event, sizeof(event));

 

 

                  event.type = EV_KEY;

                                      event.code = BTN_LEFT;

                                      event.value = 0;

                                      write(fd, &event, sizeof(event));

 

 

 

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值