/*************************************************************************                      Linux 模拟 鼠标 键盘 事件* 说明:*     以前看到有些软件能够控制鼠标移动,键盘操作等功能,总想知道这些到底* 是怎么做到的,好像是2年前也尝试去做这件事,但那时候对知识的匮乏直接导致* 无法进行,早上突然想到这件事,于是又搜索了一下,鉴于目前经常接触Linux* 驱动,对这些东西的理解也就很容易。**                                     2016-2-27 深圳 南山平山村 曾剑锋***********************************************************************/一、参考文章:1. 交互系统的构建之(二)Linux下鼠标和键盘的模拟控制http://blog.csdn.net/zouxy09/article/details/7920253
    2. 在Linux中模拟击键和鼠标移动http://os.51cto.com/art/201409/450283.htm

二、cat /proc/bus/input/devices:......I: Bus=0011 Vendor=0001 Product=0001 Version=ab41N: Name="AT Translated Set 2 keyboard"P: Phys=isa0060/serio0/input0S: Sysfs=/devices/platform/i8042/serio0/input/input1U: Uniq=H: Handlers=sysrq kbd event1        ---> keyboardB: PROP=0B: EV=120013B: KEY=402000000 3803078f800d001 feffffdfffefffff fffffffffffffffeB: MSC=10B: LED=7......I: Bus=0003 Vendor=0e0f Product=0003 Version=0110N: Name="VMware VMware Virtual USB Mouse"P: Phys=usb-0000:02:00.0-1/input1S: Sysfs=/devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb2/2-1/2-1:1.1/input/input3U: Uniq=H: Handlers=mouse1 event3           ---> mouseB: PROP=0B: EV=17B: KEY=ffff0000 0 0 0 0B: REL=143B: MSC=10......三、权限修改:myzr@myzr:/dev/input$ ls -altotal 0drwxr-xr-x  4 root root    280 Feb 27 08:49 .drwxr-xr-x 15 root root   4260 Feb 27 08:49 ..drwxr-xr-x  2 root root    120 Feb 27 08:49 by-iddrwxr-xr-x  2 root root    180 Feb 27 08:49 by-pathcrw-r-----  1 root root 13, 64 Feb 27 08:49 event0crw-r-----  1 root root 13, 65 Feb 27 08:49 event1crw-r-----  1 root root 13, 66 Feb 27 08:49 event2crw-r-----  1 root root 13, 67 Feb 27 08:49 event3crw-r-----  1 root root 13, 68 Feb 27 08:49 event4crw-r--r--  1 root root 13,  0 Feb 27 08:49 js0crw-r-----  1 root root 13, 63 Feb 27 08:49 micecrw-r-----  1 root root 13, 32 Feb 27 08:49 mouse0crw-r-----  1 root root 13, 33 Feb 27 08:49 mouse1crw-r-----  1 root root 13, 34 Feb 27 08:49 mouse2myzr@myzr:/dev/input$ sudo chmod 666 * 四、example code:#include <stdio.h>#include <linux/input.h>#include <fcntl.h>#include <sys/time.h>#include <unistd.h>#include <string.h>//按键模拟,按键包含按下和松开两个环节void simulate_key(int fd, int kval){struct input_event event;gettimeofday(&event.time, 0);//按下kval键event.type = EV_KEY;event.value = 1;event.code = kval;write(fd, &event, sizeof(event));//同步,也就是把它报告给系统event.type = EV_SYN;event.value = 0;event.code = SYN_REPORT;write(fd, &event, sizeof(event));memset(&event, 0, sizeof(event));gettimeofday(&event.time, 0);//松开kval键event.type = EV_KEY;event.value = 0;event.code = kval;write(fd, &event, sizeof(event));//同步,也就是把它报告给系统event.type = EV_SYN;event.value = 0;event.code = SYN_REPORT;write(fd, &event, sizeof(event));}//鼠标移动模拟void simulate_mouse(int fd, int rel_x, int rel_y){struct input_event event;gettimeofday(&event.time, 0);//x轴坐标的相对位移event.type = EV_REL;event.value = rel_x;event.code = REL_X;write(fd, &event, sizeof(event));//y轴坐标的相对位移event.type = EV_REL;event.value = rel_y;event.code = REL_Y;write(fd, &event, sizeof(event));//同步event.type = EV_SYN;event.value = 0;event.code = SYN_REPORT;write(fd, &event, sizeof(event));}int main(int argc, char **argv){int fd_mouse = -1;int fd_kbd = -1;int i = 0;// 请保证该设备节点有写的权限fd_kbd = open("/dev/input/event1", O_RDWR);if(fd_kbd <= 0) {printf("Can not open keyboard input file\n");return -1;}// 请保证该设备节点有写的权限fd_mouse = open("/dev/input/event3", O_RDWR);if(fd_mouse <= 0) {printf("Can not open mouse input file\n");return -1;}for (i = 0; i < 50; i++) {//simulate_key(fd_mouse, BTN_LEFT);   //模拟按下鼠标左键//simulate_key(fd_mouse, BTN_RIGHT);  //模拟按下鼠标左键if (i % 3 == 0)simulate_key(fd_kbd, KEY_A);    //模拟按下键盘A键//模拟鼠标相对上次x和y轴相应移动10个像素//simulate_mouse(fd_mouse, 20, 20);                  sleep(1);}close(fd_kbd);close(fd_mouse);}

Linux 模拟 鼠标 键盘 事件相关推荐

  1. java 模拟鼠标键盘_使用SWT模拟鼠标键盘事件

    二.使用SWT中的鼠标键盘事件 在SWT的snippets中有两个例子用来介绍这两个方法的使用,如下: (1).模拟鼠标事件 * UI Automation (for testing tools) s ...

  2. Python - selenium_WebDriver 鼠标键盘事件

    from selenium import webdriver #引入ActionChains类 提供了鼠标的操作方法 from selenium.webdriver.common.action_cha ...

  3. Delphi下利用WinIo模拟鼠标键盘详解

    本文最早在编程论坛上发表,文章地址:http://programbbs.com/bbs/view12-17207-1.htm,相关文件可以在上述地址的页面中下载.转载时请注明出处. 前言 一日发现Se ...

  4. python 模拟鼠标键盘_python之模拟鼠标键盘动作

    上个月就打算开发个还算好玩的项目,但是一直没时间.这篇是此项目用到的一部分, 处理好此部分基本还差通信等方面的了.首先模拟鼠标键盘按下释放的动作,本人利用X11 这个库,所以要了解X11编程;其次,本 ...

  5. python模拟鼠标键盘原理_Python-模拟鼠标键盘动作

    引 在使用电脑的时候,偶尔有需求要模拟鼠标键盘,进行一些机械重复的操作(刷新网页.抢票.某些小游戏等).如果为此专门下载一个按键精灵,总感觉杀鸡用牛刀,所以就开始探索一些轻量级解决方案.本人电脑上配置 ...

  6. 模拟鼠标键盘操作,含硬件模拟技术。

    键盘是我们使用计算机的一个很重要的输入设备了,即使在鼠标大行其道的今天,很多程序依然离不开键盘来操作.但是有时候,一些重复性的,很繁琐的键盘操作总会让人疲惫,于是就有了用程序来代替人们按键的方法,这样 ...

  7. 模拟鼠标键盘操作,含硬件模拟技术。[转]

    模拟鼠标键盘操作,含硬件模拟技术. 键盘是我们使用计算机的一个很重要的输入设备了,即使在鼠标大行其道的今天,很多程序依然离不开键盘来操作.但是有时候,一些重复性的,很繁琐的键盘操作总会让人疲惫,于是就 ...

  8. 模拟鼠标键盘操作,含硬件模拟技术

    键盘是我们使用计算机的一个很重要的输入设备了,即使在鼠标大行其道的今天,很多程序依然离不开键盘来操作.但是有时候,一些重复性的,很繁琐的键盘操作总会让人疲惫,于是就有了用程序来代替人们按键的方法,这样 ...

  9. python录制鼠标动作_python之模拟鼠标键盘动作具体实现

    导读热词 上个月就打算开发个还算好玩的项目,但是一直没时间.这篇是此项目用到的一部分, 处理好此部分基本还差通信等方面的了.首先模拟鼠标键盘按下释放的动作,本人利用X11 这个库,所以要了解X11编程 ...

最新文章

  1. LiveVideoStackCon 音视频技术大会 2022 上海站日程发布啦!
  2. 蒙特卡洛树搜索_蒙特卡洛树是什么算法?
  3. 使用OpenCV进行身份证号码字符进行分割
  4. 明天是你的生日~~~
  5. 机器人学习--智能移动机器人的有关技术演讲(浙大-熊蓉教授-2018年)
  6. iOS之获取手机的系统信息
  7. java基础---流程控制
  8. 各种排序算法的C++实现
  9. echarts label加边框_echarts 添加自定义label标签
  10. mybatis笔记之一次插入多条数据sql语句写法
  11. 性能优化(7):教你正确使用css选择器
  12. linux查看服务端口号、查看端口(netstat、lsof)
  13. 10无法勾选隐藏的项目_3ds max一直卡在启动页面无法进入
  14. 矩阵分析 第二章 lambda矩阵和Jordan标准型
  15. Tsinsen A1517. 动态树 树链剖分,线段树,子树操作
  16. Linux 如何将eth1网卡修改为eth0
  17. datagrid.columns有没有图片图片属性_天龙八部:86四属性神器在线求超越,原来逍遥扇子还能这么洗...
  18. [2018.07.31 T2] 第二题
  19. Java加密算法库BouncyCastle
  20. g5500服务器装系统,联想G50笔记本U盘重装win10系统教程

热门文章

  1. WPF MultiSelect模式下ListBox 实现多个ListBoxItem拖拽
  2. gitee提交代码_在Gitee获8.5k Star,做微信小程序商城看这一个开源项目就够了
  3. hdu1316 大数
  4. 【Linux 内核】实时调度类 ③ ( 实时调度类 rt_sched_class 源码 | 调度类 sched_class 源码 )
  5. 【Android NDK 开发】Android NDK 下载 ( 下载指定历史版本 NDK | Android NDK r10e - 2015 年 5 月 )
  6. 【数字信号处理】LTI 系统因果性与稳定性示例 ( 示例一 | 示例二 )
  7. 【错误记录】Android Studio 编译报错 ( Error:Connection timed out: connect | 更新配置依赖仓库方式 )
  8. 【音乐理论】音与音高 ( 音域 | 音符表示 )
  9. 【Netty】Netty 入门案例分析 ( Netty 线程模型 | Netty 案例需求 | IntelliJ IDEA 项目导入 Netty 开发库 )
  10. 【Android NDK 开发】在 C 代码中获取 Android 系统信息 ( NDK 项目创建 | NDK 配置 | 获取 Android 系统版本号 )