linux2.6 input subsystem中部分相关结构体的分析
   最近在做linux2.6的键盘驱动程序的工作,接触到了input subsystem这一概念,现把我对其中相关结构体的理解写出来。如果我的理解有错误,希望大家指正,谢谢!
1.input_dev

说明:输入子系统(input subsystem)的驱动层的核心结构。  

头文件:include/linux/input.h

成员说明

void *private;

//不清楚。

char *name;

//设备名字,如键盘名字。

char *phys;

//设备文件节点名,如input/kbd0。

char *uniq;

//全球唯一的ID号。

struct input_id id;

//后文作详细介绍。

unsigned long evbit[NBITS(EV_MAX);]

//该设备驱动所能支持的事件。

//EV_SYN      同步事件

//EV_KEY       键盘事件

//EV_REL       相对坐标事件,用于鼠标

//EV_ABS       绝对坐标事件,用于摇杆

//EV_MSC      其他事件

//EV_LED       LED灯事件

//EV_SND      声音事件

//EV_REP       重复按键事件

//EV_FF         受力事件

//EV_PWR      电源事件

//EV_FF_STATUS  受力状态事件

unsigned long keybit[NBITS(KEY_MAX)];

//键值存放表

unsigned long relbit[NBITS(REL_MAX)];

//用于存放相对坐标值等

unsigned long absbit[NBITS(ABS_MAX)];

//用于存放绝对坐标值等

unsigned long mscbit[NBITS(MSC_MAX)];

//存放其他事件类型

unsigned long ledbit[NBITS(LED_MAX)];

//存放表示各种状态的LED值

unsigned long sndbit[NBITS(SND_MAX)];

//存放各种事件的声音

unsigned long ffbit[NBITS(FF_MAX)];

//存放受力设备的属性

int ff_effects_max;

//显然与受力效果有关,具体作用还不大清楚。

unsigned int keycodemax;

unsigned int keycodesize;

void * keycode;

//这三个不是很清楚,有点模糊理解。

unsigned int repeat_key;

//存放重复按键时的键值

struct timer_list timer;

//定时器

struct pm_dev *pm_dev;

//考虑到有些设备可能有电源管理

struct pt_regs *regs;

//不清楚

int state;

//显然是表示一个状态,但不清楚具体是谁的状态

int sync;

//具体用于什么也不大清楚

int abs[ABS_MAX + 1];

//显然是与绝对坐标有关的,但具体的作用不清楚。

int rep[REP_MAX + 1];

//存放重复按键时的延时,系统依靠这个延时时间来判断重复按键

//rep[0]表示开始要重复按键时的延时时间,即第1个键与第2个键(开始重复按键)之间的延时

//rep[1]此后重复按键之前的延时时间,直到按键抬起

//通俗解释就是,假如我按了一个“a”,并且一直按着,那么在显示出来的第一个a与第二个a之间的时间延时为rep[0],而此后的相邻两个a之间的延时为rep[1]

unsigned long key[NBITS(KEY_MAX)];

unsigned long led[NBITS(LED_MAX)];

unsigned long snd[NBITS(SND_MAX)];

//不知道有什么用

int absmax[ABS_MAX + 1];

int absmin[ABS_MAX + 1];

int absfuzz[ABS_MAX + 1];

int absflat[ABS_MAX + 1];

//显然与绝对坐标值有关,但不知道具体作用

int (*open)(struct input_dev *dev);

void (*close)(struct input_dev *dev);

int (*accept)(struct input_dev *dev, struct file *file);

int (*flush)(struct input_dev *dev, struct file *file);

int (*event)(struct input_dev *dev, unsigned int type, unsigned int code, int value);

int (*upload_effect)(struct input_dev *dev, struct ff_effect *effect);

int (*erase_effect)(struct input_dev *dev, int effect_id);

//底层与硬件相关的一组操作,若有具体定义,则会在input core层被调用,具体看input.c。

struct input_handle *grab;

//该结构会在后文做具体介绍,这个指针用于占用输入设备用,如键盘

struct list_head h_list;

struct list_head node;

//h_list链表用于与input_handler相联系

//node链表:设备向输入子系统(input subsystem)注册后,会将该链表添加到系统维护的一个链表中去,从而系统可以管理这个设备

input驱动12种事件类型Event types的含义相关推荐

  1. input的23种type类型

    目录 概述 全部类型 传统类型 新增类型 概述 随着html5的出现,input标签新增了多种类型,用以接收各种类型的用户输入.其中传统输入控件有10种,新增输入控件有13种. 全部类型 text 定 ...

  2. echarts的词云图表类型有哪些_数据可视化之常见12种图表类型分析

    数据可视化有众多展现方式,不同的数据类型要选择适合的展现方法,今天友创云天就整理分析了几种常见的类型,给大家提供参考. 1.饼图 饼图是一个划分为几个扇形的圆形统计图表.每个扇形的弧长(以及圆心角和面 ...

  3. html dom节点类型,浅谈Javascript中的12种DOM节点类型

    前言 DOM的作用是将网页转为一个javascript对象,从而可以使用javascript对网页进行各种操作(比如增删内容).浏览器会根据DOM模型,将HTML文档解析成一系列的节点,再由这些节点组 ...

  4. 深入理解DOM节点类型第一篇——12种DOM节点类型概述

    前面的话 DOM是javascript操作网页的接口,全称为文档对象模型(Document Object Model).它的作用是将网页转为一个javascript对象,从而可以使用javascrip ...

  5. Nat.Commun.|使用基于注意力机制的多标签神经网络预测并解释12种RNA修饰

    今天介绍来自西交利物浦大学和福建医科大学的Zitao Song, Daiyun Huang等人六月份发表在Nature Communication的文章"Attention-based mu ...

  6. 事件数据库Event Databse (ICEWS GDELT)

    目录 1 综合危机预警系统 Integrated Crisis Early Warning System (ICEWS) 2 全球事件.语言和语气数据库 (GDELT) 3 冲突与调解事件观察分类法C ...

  7. 论文解读:《基于注意力的多标签神经网络用于12种广泛存在的RNA修饰的综合预测和解释》

    论文解读:<Attention-based multi-label neural networks for integrated prediction and interpretation of ...

  8. 数据可视化图表类型_数据可视化中12种最常见的图表类型

    数据可视化图表类型 In the current era of large amounts of information in the form of numbers available everyw ...

  9. Android 4.0 事件输入(Event Input)系统

    1. TouchScreen功能在Android4.0下不工作 原来在Android2.3.5下能正常工作的TouchScreen功能,移植到Android 4.0就不能正常工作了.凭直觉,Andro ...

最新文章

  1. 层展开/关闭 - 运动缓冲效果
  2. Dockerfiles基础语法
  3. 技术人员应该如何培养
  4. qt连接mysql创建表_Qt编译mysql以及创建表后进行导入操作
  5. 【LeetCode 总结】Leetcode 题型分类总结、索引与常用接口函数
  6. 【Git】Python项目依赖库过大无法提交的问题
  7. 1.10 编程基础之简单排序 04 奖学金 7分 python
  8. 大数据 Hive spark Flink 关系
  9. oracle 里数据的编码格式,oracle 数据的编码格式
  10. auto cad 打印颜色变浅_CAD制图软件中如何设置CAD打印样式表(CTB)?
  11. IntelliJ Idea工作笔记004---IDEA中在Run DashBoard中添加项目
  12. 一些知名科技公司的开源机器学习框架/平台
  13. Android系统启动过程详解
  14. Redis单台的安装部署及集群部署
  15. Python多线程(threading模块)
  16. 数据展现DataList控件(26)
  17. ssm基于Java web的校园滴滴代驾管理系统毕业设计源码260839
  18. idea svn切换分支,合并分支
  19. Java注解:@IntDef 替换 Emum
  20. Python-实现九宫格

热门文章

  1. 卸载MySQL Connector NET无法卸载
  2. 002_模板 + 数据模型 = 输出
  3. mysql pricing amp; licensing_Global Pricing and Licensing
  4. 生成pojo mysql_通过数据库表反向生成pojo类
  5. Java基础:JDK、JRE、JVM的区别与联系
  6. Android CardView 开发过程中要注意的细节
  7. XMind2020的一些使用小技巧
  8. java求数列的最大子段和_天下无双的公考必考题 数量关系: 最值问题②(构造数列)...
  9. hub设备_USB不够用,一个HUB全部搞定!ORICO 群控USB扩展器
  10. 圆柱属于能滚动的物体吗_中班科学活动教案:滚动的物体教案(附教学反思)