文档章节

Android Input系统之触摸屏

kingsOSZT
 kingsOSZT
发布于 2015/10/22 14:22
字数 383
阅读 190
收藏 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
Android应用程序窗口(Activity)的窗口对象(Window)的创建过程分析

每一个Activity组件都有一个关联的ContextImpl对象,同时,它还关联有一个Window对象,用来描述一个具体的应用程序窗口。与Activity组件所关联的窗口对象的实际类型为PhoneWindow。 那么创建...

lonamessi
05/31
0
0
OnTouchListener与OnGestureListener的区别

Android事件处理机制是基于Listener实现的,比如触摸屏相关的事件,是通过OnTouchListener实现的;而手势是通过OnGestureListener实现的,那么这两者有什么关联呢? OnTouchListener OnTouc...

gavin_jin
2014/03/09
0
0
android手势操作滑动效果触摸屏事件处理

很多时候,利用触摸屏的Fling、Scroll等Gesture(手势)操作来操作会使得应用程序的用户体验大大提升,比如用Scroll手势在 浏览器中滚屏,用Fling在阅读器中翻页等。在Android系统中,手势的...

Fiter
2011/02/11
0
9
android 使用shell command实现对设备控制,实现按坐标点击

目的:实现自动化测试, 方法:使用adb shell命令。 难点,factory无法使用sendkey event 执行, 需要使用sendevent按照坐标点击. 虽然是dev下的文件是设备,但是实时的数据是在/proc/这个目...

eric_zhang
2011/12/01
0
1

没有更多内容

加载失败,请刷新页面

加载更多

最重要的是做什么,而不是怎么做。

最重要的是做什么,而不是怎么做。 做什么是战略,怎么做是战术。将军下令说,天黑前拿下这座山头,这是战略。手下的士兵可以不知道为什么要拿下这座山头,还非得是天黑之前,但士兵必须知道...

我是菜鸟我骄傲
29分钟前
0
0
w, vmstat, top, sar, nload命令查看系统状态信息

w/uptime 查看系统负载 cat /proc/cpuinfo 查看cpu核数 vmstat 监控系统状态,用法 vmstat 1,关键的几列: r, b, swpd, si, so, bi, bo, us, wa top 查看进程使用资源情况 top -c 显示详细的...

野雪球
今天
2
0
小白创建一个spring boot项目

进入 https://start.spring.io/

lilugirl
今天
3
0
Alibaba Java诊断利器Arthas实践--使用redefine排查应用奇怪的日志来源

背景 随着应用越来越复杂,依赖越来越多,日志系统越来越混乱,有时会出现一些奇怪的日志,比如: [] [] [] No credential found 那么怎样排查这些奇怪的日志从哪里打印出来的呢?因为搞不清...

hengyunabc
今天
2
0
home hosts

home hosts lwk@qwfys:~$ cat /etc/hosts127.0.0.1 localhost127.0.1.1 qwfys192.168.56.101vm600.qwfys.com39.108.212.91alpha1.ppy.com39.108.117.122alpha2.p......

qwfys
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部