问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何捕获android系统鼠标轨迹值和键盘值

发布网友 发布时间:2022-04-22 14:35

我来回答

1个回答

热心网友 时间:2022-05-17 16:28

  一、找出设备中,我用的是什么event?

  关于该设备打开的是哪个event,我们可以通过命令,cat /proc/bus/input/devices 来查看,执行这个命令后,你会看到您的设备上有多少eventX。

  root@lenovo-desktop:~# cat /proc/bus/input/devices

  I: Bus=0019 Vendor=0000 Proct=0001 Version=0000

  N: Name="Power Button"

  P: Phys=PNP0C0C/button/input0

  S: Sysfs=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input0

  U: Uniq=

  H: Handlers=kbd event0

  B: EV=3

  B: KEY=100000 0 0 0

  I: Bus=0019 Vendor=0000 Proct=0001 Version=0000

  N: Name="Power Button"

  P: Phys=LNXPWRBN/button/input0

  S: Sysfs=/devices/LNXSYSTM:00/LNXPWRBN:00/input/input1

  U: Uniq=

  H: Handlers=kbd event1

  B: EV=3

  B: KEY=100000 0 0 0

  I: Bus=0017 Vendor=0001 Proct=0001 Version=0100

  N: Name="Macintosh mouse button emulation"

  P: Phys=

  S: Sysfs=/devices/virtual/input/input2

  U: Uniq=

  H: Handlers=mouse0 event2

  B: EV=7

  B: KEY=70000 0 0 0 0 0 0 0 0

  B: REL=3

  I: Bus=0011 Vendor=0001 Proct=0001 Version=ab41

  N: Name="AT Translated Set 2 keyboard"

  P: Phys=isa0060/serio0/input0

  S: Sysfs=/devices/platform/i8042/serio0/input/input3

  U: Uniq=

  H: Handlers=kbd event3

  B: EV=120013

  B: KEY=4 2000000 3803078 f800d001 feffffdf ffefffff ffffffff fffffffe

  B: MSC=10

  B: LED=7

  I: Bus=0003 Vendor=17ef Proct=600e Version=0111

  N: Name="Lenovo Optical Mouse"

  P: Phys=usb-0000:00:1d.1-1/input0

  S: Sysfs=/devices/pci0000:00/0000:00:1d.1/usb3/3-1/3-1:1.0/input/input4

  U: Uniq=

  H: Handlers=mouse1 event4

  B: EV=17

  B: KEY=70000 0 0 0 0 0 0 0 0

  B: REL=103

  B: MSC=10

  ?..

  ?..

  我的ubunte系统上敲完这个命令后,能够看到event0—event7,共8个设备。

  如上面红色标记,可以很快找出该设备对应的输入设备,以及对应的eventX,跨入眼前视野的“Lenovo Optical Mouse” 这肯定是我鼠标啊,用的牌子就是这个Lenovo,背面上写着呢。

  二、对input_event数据结构的解释

  标准按键的编码的定义在 linux/input.h中

  struct input_event {

  struct timeval time; //按键时间

  __u16 type; //类型,在下面有定义

  __u16 code; //要模拟成什么按键

  __s32 value;//是按下还是释放

  };

  1、code:

  事件的代码.如果事件的类型代码是EV_KEY,该代码code为设备键盘代码. 代码植0~127为键盘上的按键代码,

  0x110~0x116 为鼠标上按键代码,

  其中0x110(BTN_ LEFT)为鼠标左键,

  0x111(BTN_RIGHT)为鼠标右键,

  0x112(BTN_ MIDDLE)为鼠标中键.

  如果事件的类型代码是EV_REL,code值表示轨迹的类型.如指示鼠标的X轴方向REL_X(代码为0x00),指示鼠标的Y轴方向REL_Y(代码 为0x01),指示鼠标中轮子方向REL_WHEEL(代码为0x08).

  其它代码含义请参看include/linux/input.h文件.

  2、type:

  EV_KEY,键盘

  EV_REL,相对坐标(轨迹球)

  EV_ABS,绝对坐标(鼠标)

  。。。

  /*

  *Event types参考值

  */

  #define EV_SYN 0x00

  #define EV_KEY 0x01 //按键

  #define EV_REL 0x02 //相对坐标(轨迹球)

  #define EV_ABS 0x03 //绝对坐标(鼠标)

  #define EV_MSC 0x04 //其他

  #define EV_SW 0x05

  #define EV_LED 0x11 //LED

  #define EV_SND 0x12//声音

  #define EV_REP 0x14//repeat

  #define EV_FF 0x15

  #define EV_PWR 0x16

  #define EV_FF_STATUS 0x17

  #define EV_MAX 0x1f

  #define EV_CNT (EV_MAX+1)

  3、value:

  事件的值.如果事件的类型代码是EV_KEY,当按键按下时值为1,松开时值为0; 如果事件的类型代码是EV_ REL,value的正数值和负数值分别代表两个不同方向的值.

  三、抓取event值的原理:

  对eventX进行read/write来抓取event的各种信息;

  1、打开event设备

  event0_fd = open(“/dev/input/event0”, O_RDWR);

  2、read 设备

  rd = read(event0_fd, &event0, sizeof(struct input_event) * 64);
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
The ___ of the food is very terrible, but it ___ very nice. Worm.Win32.Viking.k病毒描述 IM-Worm.Win32.VB.c清除方案 Worm.Win32.VB.nk 是什么样的蠕虫病毒啊,会怎么样你的电脑啊?_百度知 ... 蠕虫病毒Win32.Womble.C简介 email-worm.win32,vb,bk是什么病毒? Email-Worm.Win32.VB.bk,有谁知道这是什么病毒吗现在有些什么 病毒? Worm.Win32.Viking病毒描述 IM-Worm.Win32.VB.c病毒标签 贵州遵义到甘肃省天水市怎么走方便? 如何在AS3的as文件里面获取鼠标坐标 请问股票里的内盘和外盘是啥意思? android 如何通过onTouchEvent()方法来获取当前鼠标点击的坐标 股票的内盘外盘咋意思啊? android 怎么样获取鼠标点击的 坐标 股票外盘和内盘分别是什么意思 股票内盘外盘是什么意思 炒股票的内盘跟外盘是什么意思? 股票中内盘与外盘各是什么意思? 股票行情中内盘,外盘是什么意思 股票内盘外盘是啥意思? 股票内盘外盘什么意思 股票内盘,外盘啥意思 会cDR,AI和ps可以干什么工作? 怎样关掉借呗支付 豆腐炖鲫鱼怎么做好吃又简单 AI是干什么用的 AI是干什么的?? Adobe Illustrator 主要做什么?有什么用途 AI是干什么的 如何定位android系统中光标的位置 如何取得鼠标点击处的屏幕位置? android系统自身从Java层怎么获取鼠标事件 安卓开发如何获取当前鼠标点击位置的RGB值 如何用按键精灵获取当前鼠标位置 as2.0怎么获取鼠标坐标? android中edittext怎么获取光标 AS3语言,如何获取鼠标单击事件当前目标的坐标及对象(在线等) 上海市有几个仲裁委员会 上海有几个仲裁委员会? 上海市普陀区劳动争议仲裁委员会的地址和电话号码 上海市劳动人事争议仲裁委员会地址和电话 上海市劳动仲裁部门联系地址及电话号码? 请问上海有哪些仲裁委员会?关于保险 国内有几家比较厉害的仲裁机构以及如何选择? 处理海事仲裁的,上海有哪些机构或者法院或者仲裁院? 404 Not Found 一个城市的各区的劳动仲裁委员会的职能范围有没有区别? 上海市嘉定区劳动仲裁在什么地方? 上海市杨浦区劳动争议仲裁委员会 电话和地址