码迷,mamicode.com
首页 > 其他好文 > 详细

输入子系统分析 (二)

时间:2017-07-30 12:54:09      阅读:79      评论:0      收藏:0      [点我收藏+]

标签:ack   text   执行   dev   input   pre   and   bsp   eve   

输入子系统是由输入子系统核心层( 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就会将缓冲区中的数据读取出去。

 

 

输入子系统分析 (二)

标签:ack   text   执行   dev   input   pre   and   bsp   eve   

原文地址:http://www.cnblogs.com/zhulinhaibao/p/7258638.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!