IMS:键盘鼠标事件
IMS:键盘鼠标事件
android11-release
IMS:键盘鼠标接入判断
键盘鼠标接入EventHub
可查看IMS:EventHub 设备添加和InputDevice转化、IMS:键盘鼠标接入判断
- 鼠标名称:MI Mouse BT3.0
- 分配的DeviceId:11
- 分配的设备节点:/dev/input/event8
- classes=0x80000008、sources=0x00002002
- INPUT_DEVICE_CLASS_CURSOR:经 EventHub、InputDevice 处理后,添加 CursorInputMapper
CursorInputMapper事件处理
frameworks\native\services\inputflinger\reader\mapper\CursorInputMapper.cpp
- mEventHub->getEvents获取设备节点
/dev/input/event8
事件
/** A raw event as retrieved from the EventHub.*/
struct RawEvent {nsecs_t when;int32_t deviceId;int32_t type;int32_t code;int32_t value;
};
InputReader::processEventsForDeviceLocked
->InputDevice::process
->CursorInputMapper::process
鼠标按键事件
frameworks\native\services\inputflinger\reader\mapper\accumulator\CursorButtonAccumulator.cpp
external\kernel-headers\original\uapi\linux\input-event-codes.h
- 日志输出:鼠标左键
BTN_LEFT 0x110
、鼠标右键BTN_RIGHT 0x111
、鼠标中键BTN_MIDDLE 0x112
等
鼠标按键前后添加AKEY_EVENT_ACTION_DOWN、AKEY_EVENT_ACTION_UP事件
void CursorInputMapper::sync(nsecs_t when) {int32_t lastButtonState = mButtonState;int32_t currentButtonState = mCursorButtonAccumulator.getButtonState();mButtonState = currentButtonState;// ... ... ... ...// Synthesize key down from buttons if needed.synthesizeButtonKeys(getContext(), AKEY_EVENT_ACTION_DOWN, when, getDeviceId(), mSource,displayId, policyFlags, lastButtonState, currentButtonState);// ... ... ... ..// Synthesize key up from buttons if needed.synthesizeButtonKeys(getContext(), AKEY_EVENT_ACTION_UP, when, getDeviceId(), mSource,displayId, policyFlags, lastButtonState, currentButtonState);// ... ... ... ...
}
- synthesizeButtonKeys 只有在AMOTION_EVENT_BUTTON_BACK\AMOTION_EVENT_BUTTON_FORWARD(即
BTN_BACK 0x116\BTN_FORWARD 0x115
)添加
鼠标悬停、滑动事件
- 鼠标悬停 AMOTION_EVENT_ACTION_HOVER_MOVE:
motionEventAction == AMOTION_EVENT_ACTION_UP && (mSource == AINPUT_SOURCE_MOUS
- 鼠标滑动 AMOTION_EVENT_ACTION_SCROLL:
bool scrolled = vscroll != 0 || hscroll != 0;
CursorInputMapper最终添加NotifyMotionArgs
CursorInputMapper::sync
添加的NotifyMotionArgs,最总socket发送connection->inputPublisher.publishMotionEvent
( 除了BTN_BACK 0x116\BTN_FORWARD 0x115
)
connection->inputPublisher.publishMotionEvent
发送frameworks\native\libs\input\InputTransport.cpp
时序图
IMS:键盘鼠标事件相关推荐
- [转载]C#模拟键盘鼠标事件-SendKeys
C#模拟键盘鼠标事件-SendKeys 2007-09-18 15:138596人阅读评论(1)收藏举报 1.模拟键盘事件 System.Windows.Forms.SendKeys以下是 Sen ...
- 模拟键盘鼠标事件有两种方法
实现一个鼠标或者键盘模拟器,可以完成很多功能,比如做一个简单的游戏外挂^_^.通常,模拟键盘鼠标事件有两种方法: 1.keybd_event, mouse_event 2.SendMessage, P ...
- Python ctypes 调用API函数模拟键盘鼠标事件
在Python编程中, 有时需要模拟键盘或鼠标事件, 自动操作计算机, 比如玩游戏等. 本文介绍使用ctypes模块调用API函数, 模拟键盘鼠标事件的方法. 目录 1.导入ctypes模块 2.通过 ...
- pynput 键盘鼠标事件抑制(拦截输出)
pynput 键盘鼠标事件抑制 前言 最近想用pynput做一个键盘映射,但是遇到的了一些问题,键盘映射有时需要抑制原输出.本人在CSDN找了很久,但是发现没有相关的文章.在查找了官方文档,并做了一些 ...
- win32键盘输入python_windows下python捕捉键盘鼠标事件 pywin32 | 学步园
最近学习python中, 需要调用gui的wincom组件,网上搜罗了很多相关资料.但是大部分资料都有问题.也许跟python的开源和版本问题有关. 下面我就把网上罗列出来最多的捕捉键盘鼠标事件的代码 ...
- python鼠标事件 详解_Python selenium键盘鼠标事件实现过程详解
引言 ----在实际的web测试工作中,需要配合键盘按键来操作,webdriver的 keys()类提供键盘上所有按键的操作,还可以模拟组合键Ctrl+a,Ctrl+v等. 举例: #cording= ...
- 7、osg中响应键盘鼠标事件以及鼠标和键盘编码表
1.首先定义一个类,该类继承与osgGA::GUIEventHandler,在此类中存在一个handle函数,所有的事件都在此函数中进行处理,如下类的代码: //声明类UseEventHandler, ...
- 曲鸟全栈UI自动化教学(五):Selenium的键盘鼠标事件详解
一.前言 在之前的教学中对于页面的操作只涉及到了两个:点击.输入:其实Selenium的键盘鼠标操作还有很多,现在就为你一一讲解. [Python测试交流群:8140 78962] 文章目录 一.前言 ...
- selenium使用篇_键盘鼠标事件
大家好,我是bug郭,一名双非科班的在校大学生.对C/JAVA.数据结构.Spring系列框架.测试开发.Linux及MySql.算法等领域感兴趣,喜欢将所学知识写成博客记录下来. 希望该文章对你有所 ...
最新文章
- Qt5.7 + VS2015 环境搭建
- Windows Server 2008 R2 搭建DNS服务器(转)
- 2.27 18种定位方法总结
- pythonuiautomator2教程_UIAutomator2 + Python 入门使用总结
- mfc如何将一个数组中的字节数据用串口发送出去_RS232串口多机通信
- 协作机器人 ai算法_如果我们希望人工智能为我们服务而不是不利于我们,我们需要协作设计...
- textarea如何在文字后面_FLASH如何制作风吹文字的效果
- 接口使用jwt返回token_Java中使用JWT生成Token进行接口鉴权实现方法
- 使用Python实现电子邮件群发功能
- “ ModuleNotFoundError: No module named ‘tkinter‘ “的解决方法
- 【渝粤教育】国家开放大学2019年春季 45烹饪原料学(1) 参考试题
- 前端ajax token,jQury Ajax使用Token验证身份实例代码_白江_前端开发者
- 今日制造怎么安装solidworks插件_PS插件安装后出现了登陆界面,无法使用怎么解决?保证一招搞定...
- 服务器时间和系统时间不同步,电脑时间不同步怎么办 电脑时间同步不了的解决方法【详解】...
- 【整理】1、C网和G网双模手机是否可同时支持C网和G网上网?2、上网的同时是否可以打电话?3、呼叫等待和呼叫保持的概念与“双通”手机
- 微信小程序实现多页面
- 基于图像算法的透明容器液面液位识别算法
- Recurrent Filter Learning for Visual Tracking(RFL)论文笔记
- 苹果电脑如何设置开启远程控制?
- 使用 MEAN 进行全栈开发基础篇——4、接着前面玩儿添加