文档章节

Android Input系统之触摸屏

kingsOSZT
 kingsOSZT
发布于 2015/10/22 14:22
字数 383
阅读 183
收藏 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

没有更多内容

加载失败,请刷新页面

加载更多

下一页

以太坊总结

一、概念说明 1.以太坊(Ethereum blockchain)由V神(Vitalik Buterin)发明,是一个交易记录的永久数据库,它以一个“无信任”的交易系统来运行,不需要任何第三方信任机构即可进行点对点的...

盼望明天
29分钟前
1
0
Java并发工具类——AtomicInteger

基本类型int的递增等操作并不是线程安全的,加上synchronized又会影响性能,因此在并发情况下我们应该使用AtomicInteger,下面通过一个例子验证一哈。 public class TestAtomicInteger {...

东都大狼狗
31分钟前
1
0
基于CentOS7.2系统对RabbitMQ单机版安装过程

准备虚拟机系统 我的系统如下 系统版本7.2 安装perl yum install perl 安装wget工具 yum install -y wget 安装相关依赖工具 yum install ncurses ncurses-base ncurses-devel ncurses-libs ...

凌晨一点
35分钟前
1
0
Maven常用命令

Maven常用命令 说到命令,则不得不提一下环境变量,在之前的博文中简单提了一下环境变量的配置,这里具体说一下。说完环境变量的配置,然后就是Maven的常用命令,这里说的是常用的几个命令,...

星汉
51分钟前
0
0
Flink操作mysql kafka和hbase

主程序 package com.streaming.flink;import java.util.Properties;import org.apache.flink.api.common.functions.FlatMapFunction;import org.apache.flink.api.common.functi......

守望者之父
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部