输入子系统分析
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了输入子系统分析 相关的知识,希望对你有一定的参考价值。
输入子系统是由输入子系统核心层( Input Core ),驱动层和事件处理层(Event Handler)三部份组成。一个输入事件,如鼠标移动,键盘按键按下,joystick的移动等等通过 input driver -> Input core -> Event handler -> userspace 到达用户空间传给应用程序。
input子系统的3个基本的数据结构
struct input_dev
{
struct list_head h_list; //h_list是一个链表头,用来把handle挂载在这个上
struct list_head node; //这个node是用来连到input_dev_list上的
}
struct input_handler
{
struct list_head h_list; //h_list是一个链表头,用来把handle挂载在这个上
struct list_head node; //这个node是用来连到input_handler_list上的
}
struct input_handle
struct input_handle { void *private; int open; const char *name; struct input_dev *dev; //指向input_dev struct input_handler *handler; //指向input_handler struct list_head d_node; //连到input_dev的h_list上 struct list_head h_node; //连到input_handler的h_list上 };
input输入子系统如何工作?
当我们按下鼠标左键的时候就会触发中断(中断是早就注册好的),就会去执行中断所绑定的处理函数,在函数中就会去读取硬件寄存器来判断按下的是哪个按键和状态 ---->
将按键信息上报给input core层 ---> input core层处理好了之后就会上报给input event层,在这里会将我们的输入事件封装成一个input_event结构体放入一个缓冲区中 ---> 应用层read就会将缓冲区中的数据读取出去。
以上是关于输入子系统分析 的主要内容,如果未能解决你的问题,请参考以下文章
Android 逆向整体加固脱壳 ( DEX 优化流程分析 | DexPrepare.cpp 中 dvmOptimizeDexFile() 方法分析 | /bin/dexopt 源码分析 )(代码片段
片段(Java) | 机试题+算法思路+考点+代码解析 2023
Android 事件分发事件分发源码分析 ( Activity 中各层级的事件传递 | Activity -> PhoneWindow -> DecorView -> ViewGroup )(代码片段
Android 插件化VirtualApp 源码分析 ( 目前的 API 现状 | 安装应用源码分析 | 安装按钮执行的操作 | 返回到 HomeActivity 执行的操作 )(代码片段