Android中Input型输入设备驱动原理分析
2015-06-19 13:47
597 查看
话说Android中Event输入设备驱动原理分析还不如说Linux输入子系统呢,反正这个是没变的,在android的底层开发中对于Linux的基本驱动程序设计还是没变的,当然Android底层机制也增加几个属于android自己的机制。典型的IPC
Android中的input设备驱动主要包括:游戏杆(joystick)、鼠标(mouse)和事件设备(Event)。
1、Input输入子系统的构架,在网上找到两幅灰常漂亮的图。
下面这幅更漂亮,更直观的能看出input型输入子系统究竟是什么咚咚,更能够体现出,用户空间,内核空间,驱动程序是怎么关联起来的。。。
Input驱动同样也是字符设备,主设备号是13,次设备号是64~95之间自动生成的,这个Input驱动程序那是相当相当的复杂。在android内核中主要需要关注一下几个文件
a)include/linux/input.h(驱动头文件)
b)driver/input/input.c (驱动核心实现,包含大量的操作接口)
c)driver/input/event.c
(事件驱动)
d)driver/input/joydev.c(游戏杆驱动)
e)driver/input/mousedev.c(鼠标驱动)
其实上面这些东西都不要我们自己去实现内核已经帮我们实现好了,不过我们在写硬件驱动的时候需要和Inputcore交互,所以需要用到上面这些函数中的接口,也就是说上面这些函数是透明的。
2、Event事件驱动原理及其实现
在内核中,用input_dev来描述一个Input设备,该结构的定义如下,
其中内核中使用input_register_device(struct input_dev *dev)来注册一个input设备
这个结构体好长,所以就列了几个。。。。它的定义在input.h当中
struct input_dev {
。。。。。。。。。。。
struct input_id id;/*指向input_id结构*/
bool sync;
struct device dev;/**这些设备都归属总线设备模型*/
struct list_head h_list; //
struct list_head node; //input_handle链表的list节点
};
用input_handler表示input设备的接口,使用input_register_handler(structinput_handler *handler)注册
struct input_handler {
void *private;
。。。。。。。。。。
int (*connect)(struct input_handler *handler, struct input_dev *dev, const struct input_device_id *id);
void (*disconnect)(struct input_handle *handle);
void (*start)(struct input_handle *handle);
const struct file_operations *fops;
int minor;
const char *name;
const struct input_device_id *id_table;
struct list_head h_list;
struct list_head node;
};
本文转自:http://wodamazi.iteye.com/blog/1293963
Android中的input设备驱动主要包括:游戏杆(joystick)、鼠标(mouse)和事件设备(Event)。
1、Input输入子系统的构架,在网上找到两幅灰常漂亮的图。
下面这幅更漂亮,更直观的能看出input型输入子系统究竟是什么咚咚,更能够体现出,用户空间,内核空间,驱动程序是怎么关联起来的。。。
Input驱动同样也是字符设备,主设备号是13,次设备号是64~95之间自动生成的,这个Input驱动程序那是相当相当的复杂。在android内核中主要需要关注一下几个文件
a)include/linux/input.h(驱动头文件)
b)driver/input/input.c (驱动核心实现,包含大量的操作接口)
c)driver/input/event.c
(事件驱动)
d)driver/input/joydev.c(游戏杆驱动)
e)driver/input/mousedev.c(鼠标驱动)
其实上面这些东西都不要我们自己去实现内核已经帮我们实现好了,不过我们在写硬件驱动的时候需要和Inputcore交互,所以需要用到上面这些函数中的接口,也就是说上面这些函数是透明的。
2、Event事件驱动原理及其实现
在内核中,用input_dev来描述一个Input设备,该结构的定义如下,
其中内核中使用input_register_device(struct input_dev *dev)来注册一个input设备
这个结构体好长,所以就列了几个。。。。它的定义在input.h当中
struct input_dev {
。。。。。。。。。。。
struct input_id id;/*指向input_id结构*/
bool sync;
struct device dev;/**这些设备都归属总线设备模型*/
struct list_head h_list; //
struct list_head node; //input_handle链表的list节点
};
用input_handler表示input设备的接口,使用input_register_handler(structinput_handler *handler)注册
struct input_handler {
void *private;
。。。。。。。。。。
int (*connect)(struct input_handler *handler, struct input_dev *dev, const struct input_device_id *id);
void (*disconnect)(struct input_handle *handle);
void (*start)(struct input_handle *handle);
const struct file_operations *fops;
int minor;
const char *name;
const struct input_device_id *id_table;
struct list_head h_list;
struct list_head node;
};
本文转自:http://wodamazi.iteye.com/blog/1293963
相关文章推荐
- Android判断应用程序是否已安装
- Android第三十八期 - 评价标签FlowLayout
- Android第三十八期 - 评价标签FlowLayout
- Android Studio代码设置不区分大小写
- Android文件下载(实现断点续传)
- Android图片与旋转
- AndroidDevTools收集整理Android开发所需的Android SDK、开发中用到的工具、Android开发教程、Android设计规范,免费的设计素材
- Android版本和API Level对应关系
- android 三种定位方式
- 我的Android Studio习惯
- android 仿google play效果,ListView/GridView下拉刷新,上拉加载更多,自动加载异步请求数据以及分页数据
- 解决Android中Handler警告、SimpleDateFormat警告、"String".toUpperCase()警告
- Android使用 LruCache 缓存图片
- Android 中 有趣味的GridView
- 精确监听 Android ListView 滑动到底部
- android.graphics.Camera实现图像的旋转、缩放
- Android 实时视频采集—Cameara预览采集
- Android中在控件上显示倒计时
- Android系统时间制式的获取(24钟头制式/12小时制式)及UTC与本地时间的转换
- 【PullToRefresh 系列基本用法】 Android装上拉下拉刷新控制具体的解释