
input子系统
文章平均质量分 91
linux 输入子系统流程梳理
-佩奇的爸爸
分享开发经验
展开
-
input subsystem (六) getevent源码分析
getevent命令链接到toolbox,那么入口函数就是toolbox的main函数了,就从toolbox的main函数开始讲起。events_buf是inotify_event的数组指针,读取事件的数量取决于数组的长度,BUF_LEN。创建完上面的watch后,当/dev/input/下的设备节点发生创建和删除操作时,都会将相应。它是一个二元组,包括监听目标和事件。码则表示了需要需要监听的事件类型,掩码中的每一位代表一种事件。过回调的方式通知事件,而需要使用者主动从inotify对象中进行事件读取。转载 2023-06-09 22:56:17 · 771 阅读 · 1 评论 -
input subsystem (五) CTP多点触摸协议
如果追踪到的触摸点数量多于当前上报的数量,驱动程序使用 BTN_TOOL_TAP 事件来通知用户空间当前追踪到的触摸点总数量,然后调用 input_mt_report_pointer_emulation 函数将use_count 参数设置为 false,否则的话将 use_count 参数设置为 true。和协议A相比没有SYN_MT_REPORT,那么它用什么来跟踪当前点属于哪一条线呢,用 的就是ABS_MT_TRACKING_ID,当前序列中。转载 2023-06-08 21:10:25 · 889 阅读 · 0 评论 -
input subsystem (四) 内核中的多点触摸协议文档 Multi-touch (MT) Protocol
zh] [1]通过扩展的 ABS_MT_APPROACH_X 和 ABS_MT_APPROACH_Y 消息,可以传递 触摸工具的坐标位置信息。[zh] 最小的组合是ABS_MT_POSITION_X和ABS_MT_POSITION_Y消息,用于跟踪多个触摸点的位置。[zh] ABS_MT_TOUCH_MAJOR / ABS_MT_WIDTH_MAJOR 的比值用来估计压力的大小。[zh] ABS_MT_TOUCH_MAJOR / ABS_MT_WIDTH_MAJOR 的值就能反映压力的大小,转载 2023-06-08 20:56:55 · 750 阅读 · 0 评论 -
input subsystem (三) input子系统事件处理层(evdev)的环形缓冲区
在evdev_open()函数中完成了对evdev_client对象的构造以及初始化,每一个打开input设备节点的用户都在内核中维护了一个evdev_client对象,这些evdev_client对象通过evdev_attach_client()函数注册在evdev1对象的内核链表上。为避免计算代价高昂的“求余”操作,使内核运作更高效,input子系统的环形缓冲区采用了“求与”算法,这要求bufsize必须为2的幂,在后文中可以看到bufsize的值实际上是为64或者8的n倍,符合“求与”运算的要求。转载 2023-06-08 20:48:16 · 216 阅读 · 0 评论 -
input subsystem (二) input子系统相关流程
input_event_to_user函数是将此事件copy到应用层,input_event_size函数是用来获取一个input_event事件的大小,循环复制client->buffer中的事件到应用层的buffer中。list_for_each_entry(handler, &input_handler_list, node) //通过遍历input_handler_list与所有的input_handler进行匹配。//添加到input_dev_list全局链表。转载 2023-06-08 20:27:34 · 148 阅读 · 0 评论 -
input subsystem (一) input device, input handler, input handle结构体之间的关系
input子系统原创 2023-06-01 22:01:03 · 649 阅读 · 0 评论