手机万能驱动工具(usb万能驱动安卓手机版操作)


1、Input驱动程序是Linux输入设备的驱动程序,分成游戏杆(joystick)、鼠标(mouse和mice)和事件设备(Event queue)3种驱动程序。其中事件驱动程序是目前通用的驱动程序,可支持键盘、鼠标、触摸屏等多种输入设备。Android系统级深入开发——input驱动程序

支持的输入设备

2、Input驱动程序的主设备号是13,3种驱动程序的设备号分配如下所示:

joystick游戏杆:0~31

mouse鼠标:32~62

mice鼠标:63

事件设备(Event):64~95

实际上,每一种IInput设备占用5位,因此每种设备包含的个数是32个。

3、Event设备在用户空间大多使用read、ioctl、poll等文件系统的接口进行操作,read用于读取输入信息,ioctl用于获取和设置信息,poll调用可以进行用户空间的阻塞,当内核有按键中断时,通过在中断中唤醒poll的内核实现,这样在用户空间poll调用也可以返回。

Event设备在文件系统中的设备节点为:/dev/input/eventX。Android系统级深入开发——input驱动程序

Input设备节点

主设备号为13,次设备号递增生成,为64~95,各个具体的设备在misc、touchscreen、keyboard等目录中。

4、Event输入驱动的架构图如下所示:Android系统级深入开发——input驱动程序

Event输入驱动的架构图

输入设备驱动程序的头文件:include/linux/input.h。

输入设备驱动程序的核心和Event部分代码分别是:drivers/input/input.c和drivers/input/evdev.c。

input.h中定义了struct input_dev结构,它表示Input驱动程序的各种信息,对于Event设备分为同步设备、键盘、相对设备(鼠标)、绝对设备(触摸屏)等。

input_dev中定义归纳了各种设备的信息,例如按键,相对设备、绝对设备、杂项设备、LED、声音设备、强制反馈设备、开关设备等。Android系统级深入开发——input驱动程序

input_dev结构体

Android系统级深入开发——input驱动程序
Android系统级深入开发——input驱动程序

在具体的Event驱动程序的实现中,如果得到按键的事件,通常需要通过以下的接口向上进行通知,这些内容也是在input.h中定义的,如下所示:

Android系统级深入开发——input驱动程序
Android系统级深入开发——input驱动程序
Android系统级深入开发——input驱动程序

5、对不同设备内容的报告均是通过input_event()函数来完成的,选择使用了不同参数而已。在手机系统中经常使用的键盘(keyboard)和小键盘(keypad)属于按键设备EV_KEY,轨迹球属于相对设备EV_REL,触摸屏属于绝对设备ABS。

关于按键数值的定义片段如下所示:

Android系统级深入开发——input驱动程序

6、可以使用getevent对Event设备进行调试。Android系统级深入开发——input驱动程序

geteventAndroid系统级深入开发——input驱动程序

getevent -l

点击鼠标,出现以上信息:第一列为设备节点,第二列为输入设备类型,第三列为按键扫描码,第四列为附加信息(按下、抬起、移动等)。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发表评论

登录后才能评论