Input Handler层负责处理输入事件。每个输入设备会绑定一个或多个Input Handler。输入设备向输入子系统提交的事件会送给Input Handler层处理。同样应用层提交给输入节点的事件也先送给Input Handler层处理,最终分发给输入设备。
Linux核心定义了一个Input Handler链表:
static LIST_HEAD(input_handler_list);
input_handler的注册、注销函数定义如下:
int input_register_handler(struct input_handler*handler);
void input_unregister_handler(struct input_handler*handler);
input_register_handler函数将新的input_handler插入到input_handler_list中,并将其绑定到相应的设备上:(www.xing528.com)
input_attach_handler函数匹配相应的输入设备,并将handle与设备连接起来:
input_handler结构的一个重要成员id_table为input_device_id结构类型,用来表示该input_handler匹配的设备特征:
其中flag设置匹配的类型。input_register_device函数会调用input_attach_handler,进而调用input_match_device函数为输入设备驱动匹配input_handler:
input_inject_event函数用于从input handle发出事件,而输入设备(input_dev)的event接口会处理这个事件。
void input_inject_event(struct input_handle*handle,unsigned int type,unsigned int code,int value)
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。