文档章节

Android Input系统之触摸屏

kingsOSZT
 kingsOSZT
发布于 2015/10/22 14:22
字数 383
阅读 195
收藏 0

最近开始在TI平台调试触摸屏,之前研究过Android的Event输入设备驱动,对键盘比较了解。Input驱动程序包含游戏杆、鼠标和事件设备3中驱动,而键盘和触摸屏都输入事件设备。

Input驱动程序的主设备号是13,3种驱动程序的设备号分配是:

  • 游戏杆:0~31

  • 鼠标:32~62

  • mice鼠标:63

  • 事件设备:64~95

每种Input设备占用5位,每种设备个数是32。Event设备在文件系统中的设备节点是:/dev/input/eventX。

Android针对输入子系统设备有一套统一的架构,基本层次结构:

其详细结构:

触摸屏驱动分析:

Host端通过IIC总线,从芯片读出需要的数据,一般为X,Y的绝对坐标,还有数据的标志位。采用的触摸屏最多支持五点触摸,因此驱动代码相对单点触摸相对复杂些。

在probe函数的设备初始化阶段的input_set_abs_params()函数设置方式不同:

  1. #ifdef CONFIG_MULTITOUCH

  2.     set_bit(ABS_MT_TOUCH_MAJOR, input_dev->absbit);

  3.     set_bit(ABS_MT_POSITION_X, input_dev->absbit);

  4.     set_bit(ABS_MT_POSITION_Y, input_dev->absbit);

  5.     set_bit(ABS_MT_WIDTH_MAJOR, input_dev->absbit);


  6.     input_set_abs_params(input_devABS_MT_POSITION_X, 0, SCREEN_MAX_X, 0, 0);

  7.     input_set_abs_params(input_devABS_MT_POSITION_Y, 0, SCREEN_MAX_Y, 0, 0);

  8.     input_set_abs_params(input_devABS_MT_TOUCH_MAJOR, 0, PRESS_MAX, 0, 0);  //相当于单点屏的ABS_PRESSURE

  9.     input_set_abs_params(input_devABS_MT_WIDTH_MAJOR, 0, 200, 0, 0);

  10. #else

  11.     set_bit(ABS_X, input_dev->absbit);

  12.     set_bit(ABS_Y, input_dev->absbit);

  13.     set_bit(ABS_PRESSURE, input_dev->absbit);

  14.     set_bit(BTN_TOUCH, input_dev->keybit);


  15.     input_set_abs_params(input_dev, ABS_X, 0, SCREEN_MAX_X, 0, 0);

  16.     input_set_abs_params(input_dev, ABS_Y, 0, SCREEN_MAX_Y, 0, 0);

  17.     input_set_abs_params(input_devABS_PRESSURE, 0, PRESS_MAX, 0 , 0);

  18. #endif


本文转载自:http://blog.chinaunix.net/uid-25369701-id-146271.html

共有 人打赏支持
kingsOSZT
粉丝 2
博文 26
码字总数 8456
作品 0
松江
私信 提问
android Configuration系统设置

Configuration类是专门用来描述手机设备上的配置信息。这些配置信息包括用户特定的配置项,也包括系统的动态设备配置。 程序中可调用Activity的如下方法来获取Configuration对象 //获取系统的...

张林思密达
2015/08/19
0
0
11大最酷Android原型机(组图)

北京时间5月17日消息,PC World网站发表文章称,Android操作系统越来越被追捧,2009年是否成为Android设备遍地开花的一年?从即将推出的Android设备来看,这很有可能。这里列举了一些造型很酷...

红薯
2009/05/18
1K
1
谷歌申请触控专利:意图整合PC和智能手机

谷歌近期提交一项专利申请表明,谷歌正认真着眼于Android系统的台式机和笔记本市场。有趣的是,该专利的功能与苹果已有的多点触控触控板和魔法触控板不谋而合。考虑到谷歌正致力于研发x86架构...

虫虫
2012/02/23
1K
9
诺基亚N900实现Maemo&Android双系统启动

诺基亚公司在去年底推出首款搭载Maemo5操作系统智能手机N900,该平台基于 GNU/Linux 操作系统和GNOME 桌面技术,其全新、优化,且不断演进的Hildon UI 专为触摸屏手持终端的屏幕大小和典型用...

老枪
2010/01/24
1K
2
技术控解释为什么Android没有iOS那么顺滑

虽然很多Android手机的配置都比iPhone要高,比如大多数Andorid手机的内存都有1GB,而iPhone 4S只有512MB内存,但用过iPhone的人都知道Android手机在使用的时候总感觉没有那么顺滑,究竟为什么...

虫虫
2011/12/07
5.8K
48

没有更多内容

加载失败,请刷新页面

加载更多

docker快速搭建几个常用的第三方服务

本次和大家分享的内容是使用docker快速搭建工作中常用的第三方的服务,对于有一些互联网背景的公司来说,以下几个服务都是很需要的:redis,rabbit,elasticsearch; 如果想学习Java工程化、...

编程SHA
19分钟前
2
0
我的Linux系统九阴真经

在今天,互联网的迅猛发展,科技技术也日新月异,各种编程技术也如雨后春笋一样,冒出尖来了。各种创业公司也百花齐放百家争鸣,特别是针对服务行业,新型互联网服务行业,共享经济等概念的公...

linuxprobe16
28分钟前
5
0
Dubbo标签解析详解

在Spring继承dubbo时,会使用dubbo自定义的标签来定义相关的属性,常见的标签有<dubbo:application/>,<dubbo:registry/>,<dubbo:service/>等。对于这些标签的解析,dubbo都是使用的统一的方...

爱宝贝丶
32分钟前
3
0
网站彩蛋

图形类彩蛋 知乎 https://www.zhihu.com/ 想来知乎工作?请发送邮件到 jobs@zhihu.com 天猫 https://www.tmall.com/ 喵~ 加入我们吧 http://tb.cn/iS8NBOy 超级课程表 http://www.super.cn/...

临江仙卜算子
40分钟前
9
0
ThreadLocal父子线程之间的数据传递问题

一、问题的提出 在系统开发过程中常使用ThreadLocal进行传递日志的RequestId,由此来获取整条请求链路。然而当线程中开启了其他的线程,此时ThreadLocal里面的数据将会出现无法获取/读取错乱...

nonnetta
49分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部