博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
input子系统
阅读量:5862 次
发布时间:2019-06-19

本文共 881 字,大约阅读时间需要 2 分钟。

1、分层

设备驱动层:

本层要驱动开发者自己实现,可参考drivers/input/keyboard/key.c

1.结构体:

核心层:

内核已帮我们完成,在drivers/input/input.c

1.结构体:

事件处理层:

针对不同的类型,内核分别提供了三个事件处理:0-31       joystick  joydev.c 32----63   mouse     mousedev.c64----95   event     evdev.c

1.结构体:

2、步骤流程:

1.定义input_dev结构

方法1:struct input_dev dev;方法2:struct input_dev *dev ;struct input_dev __must_check *input_allocate_device(void);

2.初始化

1. 支持什么事件

set_bit(EV_KEY,input_dev.evbit);

2、支持什么子事件

set_bit(BTN_0,input_dev.keybit));

3、设置事件参数

3.注册:

int __must_check input_register_device(struct input_dev *);

4.在需要的地方上报事件

static inline void input_report_key(struct input_dev *dev, unsigned int code, int value)  例如: input_report_key(&input_dev,BTN_0,0); input_report_key(&input_dev,BTN_0,1); input_sync(&input_dev);

5.释放:

void input_unregister_device(struct input_dev *);

3、实例:

4、源码追踪:

更多细节见xmind思维导图。

转载于:https://www.cnblogs.com/xxg1992/p/6636376.html

你可能感兴趣的文章
二维码的生成细节和原理【转】
查看>>
Android 下载zip压缩文件并解压
查看>>
Windows Phone App的dump 文件分析
查看>>
Zen Coding support in WebStorm/PhpStorm
查看>>
EasyUI datagrid优化
查看>>
[Zend]设置ZendStudio编辑器配色
查看>>
获取主机共享文件夹 等
查看>>
socket通信简单介绍
查看>>
iPhone开发【一】从HelloWorld開始
查看>>
Map:比较新增加日期的和需要删除的日期 使用方法
查看>>
跟我学SharePoint 2013视频培训课程—— 版本控制以及内容审批(14)
查看>>
安全生产应急救援指挥系统之GIS一张图-flex/java
查看>>
H.264 Quantization
查看>>
MongoDB学习笔记<四>
查看>>
【ZOJ】1015 Fishing Net
查看>>
租房记
查看>>
TCP/IP数据包结构具体解释
查看>>
Pku1218
查看>>
8.cadence.CIS[原创]
查看>>
〖Groovy〗语言使用贴士(Tips)(转)
查看>>