`

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));

 

 

 

}

分享到:
评论

相关推荐

    linux 模拟鼠标和按键输入

    ### Linux 下模拟鼠标和按键输入 #### 知识点概览 在Linux系统中,模拟鼠标和按键输入是一项常见的需求,特别是在自动化测试、脚本控制等场景中。本文将详细介绍如何通过C语言来实现这一功能,并对涉及到的关键概念...

    [evtest.c]Linux下测试input/event设备

    在Linux下面使用的程序,可以用来测试event设备,这些设备通常位于/dev/input/下。它支持很多的设备类型,对于调试非常有帮助。 编译方法: gcc evtest.c -o evtest 使用方法: su ./evtest /dev/input/eventX 注:...

    linux 输入子系统驱动资料

    Linux 输入子系统是操作系统内核中的一个重要组成部分,它负责处理来自各种输入设备的事件,如键盘、鼠标、触摸屏等。这个系统的设计使得内核能够有效地抽象化不同类型的输入设备,提供统一的接口给用户空间的应用...

    基于linux的2048小游戏

    在Linux中,触摸屏通常作为一个输入设备被驱动,其事件通过/dev/input/eventX节点传递。开发者可能使用了libinput库或直接读取这些事件节点来处理用户的触摸操作。触摸算法会解析这些事件,识别滑动和点击,然后将...

    linux按键驱动 轮询input上报可做linux 矩阵键盘的按键驱动

    本教程将深入讲解如何利用轮询机制实现一个Linux矩阵键盘的按键驱动,并通过`devinputeventx`接收和处理这些事件,进而使Qt应用程序能够模拟键盘输入。 首先,让我们了解Linux中的input子系统。Input子系统是Linux...

    android linux 捕获按键

    - 编写C/C++代码,使用`#include <linux/input.h>`头文件,通过`open()`, `read()`, 和`close()`等系统调用来读取`/dev/input/eventX`文件中的按键事件。 - 使用`ndk-build`或Android Studio的CMake插件编译源代码...

    linux根目录详解

    了解根目录下的各个子目录及其功能,对于管理和维护Linux系统至关重要。以下是对这些子目录的详细解释: 1. **/bin**:这个目录包含了许多基本的、必需的命令,这些命令对所有用户都可用,无论他们是否具有管理员...

    ILITEK_LINUX_HID_MULTITOUCH_DRIVER_CHS_V2.0.pdf

    这份文档主要介绍了在Linux平台上安装和配置ILITEK触摸屏驱动的方法,特别是对于支持多点触控的HID设备。文档内容包括了驱动安装的详细步骤、如何为Android操作系统加入特定的idc文件以及一些常见的问题及其解决办法...

    Linux内核Input子系统初始化驱动架构.pdf

    在Linux系统中,Input子系统负责处理来自不同输入设备(如键盘、鼠标、触摸屏等)的输入事件,并提供统一的接口供用户空间程序使用。本文将深入分析Linux内核Input子系统的框架、逻辑关系以及驱动模型。 首先,...

    嵌入式linux输入子系统触摸屏.rar_busj3r_replacefzk_嵌入式linux_触摸屏

    嵌入式Linux输入子系统是Linux内核中用于处理各种输入设备,如键盘、鼠标以及触摸屏的关键组件。在这个特定的场景中,我们关注的是触摸屏的使用和驱动开发。在嵌入式系统中,触摸屏是用户与设备交互的重要接口,因此...

    Linux测试event设备

    在Linux下面使用的程序,可以用来测试event设备,这些设备通常位于/dev/input/下。它支持很多的设备类型,对于调试非常有帮助。 编译方法: gcc evtest.c -o evtest 使用方法: su ./evtest /dev/input/eventX 注:...

    LinuxIIC触摸屏通信程序

    在Linux系统中,I2C(Inter-Integrated Circuit)是一种串行通信协议,常用于连接微控制器和其他设备,如传感器、显示屏、触摸屏等。在这个主题中,"Linux IIC触摸屏通信程序"是一个关键概念,它涉及到如何通过I2C...

    输入设备应用编程-I.MX6U嵌入式Linux C应用编程学习笔记基于正点原子阿尔法开发板

    输入设备编程涉及用户与系统交互的硬件设备,如鼠标、键盘和触摸屏。Linux系统通过input子系统管理这些设备,提供统一框架和接口,屏蔽硬件差异。设备注册成功后,会在/dev/input目录生成eventX节点,应用程序通过...

    STM32MP135实现input子系统【支持STM32MP1系列单片机_Linux驱动】.zip

    7. **用户空间接口**:通过/dev/input/eventX接口,用户空间应用程序可以订阅和读取由驱动程序上报的事件,从而实现对输入设备的控制。 8. **编译与部署**:项目中的代码需要在Linux环境中编译,并最终加载到STM32...

    linux_Input子系统键盘驱动详解

    ### Linux Input 子系统键盘驱动详解 #### 一、Input 子系统概述 **什么是 Input 子系统** Input 子系统是 Linux 内核中用于处理来自各种输入设备的信号的核心模块。它提供了统一的接口,使得不同类型的输入设备...

    linux获取键盘时间

    在Linux系统中,获取键盘输入通常涉及到终端交互和事件处理。多线程在这个场景下用于同时处理用户输入和其他系统任务,提升程序效率。本篇文章将详细介绍如何在Linux环境下利用多线程来获取并打印键盘按键状态。 ...

    arm linux移植触摸屏驱动

    在嵌入式Linux系统开发中,移植触摸屏驱动是一项关键任务,特别是在ARM架构的设备上。这个过程涉及到多个层面,包括硬件接口理解、内核驱动编写、用户空间库的集成以及系统配置。以下是对"arm linux移植触摸屏驱动...

Global site tag (gtag.js) - Google Analytics