<结构体>

  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输入子系统相关推荐

  1. [arm 驱动]Linux输入子系统分析

    首先说明一下,本文是基于Linux-2.6.38版本内核来分析Linux输入子系统架构和原理的.这阵子本来没有打算花时间来分析Linux input system的,然而当在研究S3C6410触摸屏驱 ...

  2. 《Linux 驱动:输入子系统》

    前言 输入子系统作为一个模块存在,向上,为用户层提供调用接口:向下,为驱动层程序提供统一的注册接口.这样,就能够使输入设备的事件通过输入子系统发送给用户层应用程序,用户层应用程序也可以通过输入子系统通 ...

  3. Linux 输入子系统原理理解(原创)

    linux    输入子系统原理理解(原创) 以前学了单独的按键设备驱动以及鼠标驱动,实际上,在linux中实现这些设备驱动,有一种更为推荐的方法,就是input输入子系统.平常我们的按键,触摸屏,鼠 ...

  4. Linux的input输入子系统:设备驱动之按键驱动

    环境:kernel-2.6.30.4,arm-linux-gcc-4.3.3,目标板TQ2440 一.设备层驱动程序: #include <linux/module.h> #include ...

  5. linux input输入子系统分析《三》:S3C2440的触摸屏驱动实例

    1.1    本节阅读前提 本节的说明建立在前两节的基础之上,需要先阅读如下两篇章: linux input输入子系统分析<一>:初识input输入子系统 linux input输入子系统 ...

  6. linux input输入子系统分析《二》:s3c2440的ADC简单驱动实例分析

    1      mini2440的ADC驱动实例 这节与输入子系统无关,出现在这里是因为后面的章节会讲到触摸屏输入子系统驱动,由于触摸屏也使用ADC,因此本节是为了说明ADC通过驱动代码是如何控制的. ...

  7. 输入子系统--按键驱动

    输入子系统 一.输入子系统 二.设备申请与成员赋值 1.申请设备空间 2.设备结构体赋值 3.设置设备事件 4.gpio与gpio中断 三.注册设备 四.注销设备 五.按键驱动实现 一.输入子系统 l ...

  8. Linux驱动:input输入子系统

    input输入子系统 1.input输入子系统 1.1 简介 1.2 相关API函数 1.3 使用流程(驱动框架) 2.驱动示例 3.测试程序 4.测试结果 5.内核自带的input按键驱动 附:对应 ...

  9. Linux驱动开发(十)---树莓派输入子系统学习(红外接收)

    前文回顾 <Linux驱动开发(一)-环境搭建与hello world> <Linux驱动开发(二)-驱动与设备的分离设计> <Linux驱动开发(三)-设备树> ...

最新文章

  1. SAP HUM 使用HU02将几个HU打包到一个外层新的HU号码里
  2. 数据运算,条件测试,if选择结构
  3. 用栈实现括号匹配的检验
  4. TensorFlow基础笔记(5) VGGnet_test
  5. (转) 一步一步学习ASP.NET 5 (四)- ASP.NET MVC 6四大特性
  6. android EditText使用详解,29.Android EditText使用详解
  7. jdbctemplate无where条件查询_多表查询
  8. android c vector用法,c – 使用std:vector作为低级缓冲区
  9. 斐波那契数列的第N项
  10. HTML中包含地图和筛选条件,如何实现DedeCMS多条件筛选并以筛选词为标题
  11. 一套键鼠同时控制三台电脑?罗技无线键鼠为办公效率加速
  12. 赴微软 软件开发测试工程师。
  13. 分享一个能对java代码进行“tokenize”的python库
  14. centos 配置证书_如何在CentOS 8上设置和配置证书颁发机构(CA)
  15. 一套优秀的MES系统必须具备这3种核心功能
  16. 计算机游戏物体运动代码,Flash游戏教程:控制物体运动三法 -电脑资料
  17. 如何写好 5000 行的 SQL 代码
  18. 详解卷积神经网络的卷积过程--简单明了
  19. 计算机专业学生的自我介绍英语翻译,大学生自我介绍英文版带翻译.doc
  20. 19.0 vue3 ref,reactive请求后的赋值问题以及解决方法

热门文章

  1. 发布会预告 | 多账号管控与网络安全集中化管理能力升级
  2. Apache RocketMQ 4.8.0,DLedger 模式全面提升!
  3. 马云、马斯克同台谈AI:人工智能拯救世界?
  4. OGEngine基于java支持跨平台的手游开发开源引擎
  5. 经验分享:聊聊多人游戏同步那点事
  6. 小游戏掉帧卡顿启动慢运行内存不足……这些问题有解吗?
  7. 阿里内部mysql规范40条
  8. MYSQL慢日志探索
  9. mongoDB add user in v3.0 问题的解决(Property 'addUser' of object admin is not a func)
  10. 如何诊断RAC数据库上的“IPC Send timeout”问题?