linux 模拟鼠标事件 qt

本文详细介绍了如何使用Linux设备文件模拟鼠标移动,并通过解释/dev/input/mice和/dev/input/event2的区别,展示了如何精确地控制鼠标事件。包括设备文件的获取与写入操作,以及关键步骤的实现细节。
摘要由CSDN通过智能技术生成

模拟鼠标移动:

1."/dev/input/event2"为USB鼠标对应的事件设备文件,可以通过cat /proc/bus/input/devices查看;

2."/dev/input/mice"和"/dev/input/event2"的区别,mice是所有鼠标的集合,即所有鼠标的事件都会被发送到这个设备文件中,

   而event2仅仅是某个鼠标的事件,向event2和mice写数据是不一样的,数据格式会被转换。所以只能通过event模拟鼠标事件;

void simulate_mouse(int x,int y)

{
    int fd;
    int rel_x,rel_y;
    static struct input_event event,ev;

    fd = open("/dev/input/event2",O_RDWR);
    if(fd<0){
        debug_error("open mouse fails: fd=%d,errno=%d,%s\n",fd,errno,(char*)strerror(errno));
        goto error;
    }

    rel_x = x;
    rel_y = y;

    event.type = EV_REL;
    event.code = REL_X;
    event.value = rel_x;

    gettimeofday(&event.time,0);

    if( write(fd,&event,sizeof(event))!=sizeof(event)){
        debug_error("write rel_x fails: errno=%d,%s\n",errno,(char*)strerror(errno));
    }

    event.code = REL_Y;
    event.value = rel_y;

    gettimeofday(&event.time,0);

    if( write(fd,&event,sizeof(event))!=sizeof(event)){
        debug_error("write rel_y fails: errno=%d,%s\n",errno,(char*)strerror(errno));
    }

    /*clear*/
    write(fd,&ev,sizeof(ev));

error:
    if(fd>=0){
        close(fd);
        fd = -1;
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值