input驱动12种事件类型Event types的含义
最近在做linux2.6的键盘驱动程序的工作,接触到了input subsystem这一概念,现把我对其中相关结构体的理解写出来。如果我的理解有错误,希望大家指正,谢谢!
说明:输入子系统(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的含义相关推荐
- input的23种type类型
目录 概述 全部类型 传统类型 新增类型 概述 随着html5的出现,input标签新增了多种类型,用以接收各种类型的用户输入.其中传统输入控件有10种,新增输入控件有13种. 全部类型 text 定 ...
- echarts的词云图表类型有哪些_数据可视化之常见12种图表类型分析
数据可视化有众多展现方式,不同的数据类型要选择适合的展现方法,今天友创云天就整理分析了几种常见的类型,给大家提供参考. 1.饼图 饼图是一个划分为几个扇形的圆形统计图表.每个扇形的弧长(以及圆心角和面 ...
- html dom节点类型,浅谈Javascript中的12种DOM节点类型
前言 DOM的作用是将网页转为一个javascript对象,从而可以使用javascript对网页进行各种操作(比如增删内容).浏览器会根据DOM模型,将HTML文档解析成一系列的节点,再由这些节点组 ...
- 深入理解DOM节点类型第一篇——12种DOM节点类型概述
前面的话 DOM是javascript操作网页的接口,全称为文档对象模型(Document Object Model).它的作用是将网页转为一个javascript对象,从而可以使用javascrip ...
- Nat.Commun.|使用基于注意力机制的多标签神经网络预测并解释12种RNA修饰
今天介绍来自西交利物浦大学和福建医科大学的Zitao Song, Daiyun Huang等人六月份发表在Nature Communication的文章"Attention-based mu ...
- 事件数据库Event Databse (ICEWS GDELT)
目录 1 综合危机预警系统 Integrated Crisis Early Warning System (ICEWS) 2 全球事件.语言和语气数据库 (GDELT) 3 冲突与调解事件观察分类法C ...
- 论文解读:《基于注意力的多标签神经网络用于12种广泛存在的RNA修饰的综合预测和解释》
论文解读:<Attention-based multi-label neural networks for integrated prediction and interpretation of ...
- 数据可视化图表类型_数据可视化中12种最常见的图表类型
数据可视化图表类型 In the current era of large amounts of information in the form of numbers available everyw ...
- Android 4.0 事件输入(Event Input)系统
1. TouchScreen功能在Android4.0下不工作 原来在Android2.3.5下能正常工作的TouchScreen功能,移植到Android 4.0就不能正常工作了.凭直觉,Andro ...
最新文章
- 层展开/关闭 - 运动缓冲效果
- Dockerfiles基础语法
- 技术人员应该如何培养
- qt连接mysql创建表_Qt编译mysql以及创建表后进行导入操作
- 【LeetCode 总结】Leetcode 题型分类总结、索引与常用接口函数
- 【Git】Python项目依赖库过大无法提交的问题
- 1.10 编程基础之简单排序 04 奖学金 7分 python
- 大数据 Hive spark Flink 关系
- oracle 里数据的编码格式,oracle 数据的编码格式
- auto cad 打印颜色变浅_CAD制图软件中如何设置CAD打印样式表(CTB)?
- IntelliJ Idea工作笔记004---IDEA中在Run DashBoard中添加项目
- 一些知名科技公司的开源机器学习框架/平台
- Android系统启动过程详解
- Redis单台的安装部署及集群部署
- Python多线程(threading模块)
- 数据展现DataList控件(26)
- ssm基于Java web的校园滴滴代驾管理系统毕业设计源码260839
- idea svn切换分支,合并分支
- Java注解:@IntDef 替换 Emum
- Python-实现九宫格
热门文章
- 卸载MySQL Connector NET无法卸载
- 002_模板 + 数据模型 = 输出
- mysql pricing amp; licensing_Global Pricing and Licensing
- 生成pojo mysql_通过数据库表反向生成pojo类
- Java基础:JDK、JRE、JVM的区别与联系
- Android CardView 开发过程中要注意的细节
- XMind2020的一些使用小技巧
- java求数列的最大子段和_天下无双的公考必考题 数量关系: 最值问题②(构造数列)...
- hub设备_USB不够用,一个HUB全部搞定!ORICO 群控USB扩展器
- 圆柱属于能滚动的物体吗_中班科学活动教案:滚动的物体教案(附教学反思)