驱动_Input输入子系统
<结构体>
struct input_dev {
const char *name;
const char *phys;
const char *uniq;
struct input_id id;
//位表
unsigned long evbit[BITS_TO_LONGS(EV_CNT)]; //表示能够产生哪种类型的数据:EV_KEY,EV_ABS
unsigned long keybit[BITS_TO_LONGS(KEY_CNT)]; //表示能够产生哪些按键数据
unsigned long relbit[BITS_TO_LONGS(REL_CNT)]; //表示能够产生哪些相对坐标数据
unsigned long absbit[BITS_TO_LONGS(ABS_CNT)]; //表示能够产生哪些绝对坐标数据
unsigned long mscbit[BITS_TO_LONGS(MSC_CNT)];
unsigned long ledbit[BITS_TO_LONGS(LED_CNT)];
unsigned long sndbit[BITS_TO_LONGS(SND_CNT)];
unsigned long ffbit[BITS_TO_LONGS(FF_CNT)];
unsigned long swbit[BITS_TO_LONGS(SW_CNT)];
struct device dev; //父类
struct list_head h_list;
struct list_head node; //链表的节点
};
struct input_event { //上报给用户的输入设备的数据包的类型
struct timeval time; //时间戳
__u16 type; //读到的数据类型:EV_KEY,EV_ABS,EV_REL
__u16 code; //编码值
__s32 value; //状态
};
<笔记>
1.input handler 用户交互,不知数据,只知上传
2.input_core 维护了两个链表,为上下层提供接口,他不是总线!!
3.input device 硬件交互,知道数据,不知上传
4.编程:
1,分配一个 input device对象
2,初始化input device对象
3,注册input device对象
4,硬件初始化,获取到硬件的数据,上报给input handler
5.代码:
key:https://www.cnblogs.com/panda-w/p/10943249.html
ts :https://www.cnblogs.com/panda-w/p/10949993.html
6.input_core层也实现了一个fops,但只实现了open,就回到了input_handler层,所以他第一个打开
7.一个设备对应一个connect方法,对应一个设备节点,对应一个event对象,对应一个input_handle,对应一个event_client缓冲队列,所以数据上报不会混乱
8.应用程序会根据设备号找到对应的缓冲队列
转载于:https://www.cnblogs.com/panda-w/p/10922744.html
驱动_Input输入子系统相关推荐
- [arm 驱动]Linux输入子系统分析
首先说明一下,本文是基于Linux-2.6.38版本内核来分析Linux输入子系统架构和原理的.这阵子本来没有打算花时间来分析Linux input system的,然而当在研究S3C6410触摸屏驱 ...
- 《Linux 驱动:输入子系统》
前言 输入子系统作为一个模块存在,向上,为用户层提供调用接口:向下,为驱动层程序提供统一的注册接口.这样,就能够使输入设备的事件通过输入子系统发送给用户层应用程序,用户层应用程序也可以通过输入子系统通 ...
- Linux 输入子系统原理理解(原创)
linux 输入子系统原理理解(原创) 以前学了单独的按键设备驱动以及鼠标驱动,实际上,在linux中实现这些设备驱动,有一种更为推荐的方法,就是input输入子系统.平常我们的按键,触摸屏,鼠 ...
- Linux的input输入子系统:设备驱动之按键驱动
环境:kernel-2.6.30.4,arm-linux-gcc-4.3.3,目标板TQ2440 一.设备层驱动程序: #include <linux/module.h> #include ...
- linux input输入子系统分析《三》:S3C2440的触摸屏驱动实例
1.1 本节阅读前提 本节的说明建立在前两节的基础之上,需要先阅读如下两篇章: linux input输入子系统分析<一>:初识input输入子系统 linux input输入子系统 ...
- linux input输入子系统分析《二》:s3c2440的ADC简单驱动实例分析
1 mini2440的ADC驱动实例 这节与输入子系统无关,出现在这里是因为后面的章节会讲到触摸屏输入子系统驱动,由于触摸屏也使用ADC,因此本节是为了说明ADC通过驱动代码是如何控制的. ...
- 输入子系统--按键驱动
输入子系统 一.输入子系统 二.设备申请与成员赋值 1.申请设备空间 2.设备结构体赋值 3.设置设备事件 4.gpio与gpio中断 三.注册设备 四.注销设备 五.按键驱动实现 一.输入子系统 l ...
- Linux驱动:input输入子系统
input输入子系统 1.input输入子系统 1.1 简介 1.2 相关API函数 1.3 使用流程(驱动框架) 2.驱动示例 3.测试程序 4.测试结果 5.内核自带的input按键驱动 附:对应 ...
- Linux驱动开发(十)---树莓派输入子系统学习(红外接收)
前文回顾 <Linux驱动开发(一)-环境搭建与hello world> <Linux驱动开发(二)-驱动与设备的分离设计> <Linux驱动开发(三)-设备树> ...
最新文章
- SAP HUM 使用HU02将几个HU打包到一个外层新的HU号码里
- 数据运算,条件测试,if选择结构
- 用栈实现括号匹配的检验
- TensorFlow基础笔记(5) VGGnet_test
- (转) 一步一步学习ASP.NET 5 (四)- ASP.NET MVC 6四大特性
- android EditText使用详解,29.Android EditText使用详解
- jdbctemplate无where条件查询_多表查询
- android c vector用法,c – 使用std:vector作为低级缓冲区
- 斐波那契数列的第N项
- HTML中包含地图和筛选条件,如何实现DedeCMS多条件筛选并以筛选词为标题
- 一套键鼠同时控制三台电脑?罗技无线键鼠为办公效率加速
- 赴微软 软件开发测试工程师。
- 分享一个能对java代码进行“tokenize”的python库
- centos 配置证书_如何在CentOS 8上设置和配置证书颁发机构(CA)
- 一套优秀的MES系统必须具备这3种核心功能
- 计算机游戏物体运动代码,Flash游戏教程:控制物体运动三法 -电脑资料
- 如何写好 5000 行的 SQL 代码
- 详解卷积神经网络的卷积过程--简单明了
- 计算机专业学生的自我介绍英语翻译,大学生自我介绍英文版带翻译.doc
- 19.0 vue3 ref,reactive请求后的赋值问题以及解决方法
热门文章
- 发布会预告 | 多账号管控与网络安全集中化管理能力升级
- Apache RocketMQ 4.8.0,DLedger 模式全面提升!
- 马云、马斯克同台谈AI:人工智能拯救世界?
- OGEngine基于java支持跨平台的手游开发开源引擎
- 经验分享:聊聊多人游戏同步那点事
- 小游戏掉帧卡顿启动慢运行内存不足……这些问题有解吗?
- 阿里内部mysql规范40条
- MYSQL慢日志探索
- mongoDB add user in v3.0 问题的解决(Property 'addUser' of object admin is not a func)
- 如何诊断RAC数据库上的“IPC Send timeout”问题?