Linux内核触摸屏驱动--多点触摸 【转】
ABS_MT_POSITION_X
ABS_MT_POSITION_Y
SYN_MT_REPORT //上报第一个点
ABS_MT_TOUCH_MAJOR
ABS_MT_POSITION_X
ABS_MT_POSITION_Y
SYN_MT_REPORT //上报第二个点
SYN_REPORT //开始动作
ABS_MT_TOUCH_MINOR := min(X, Y)
ABS_MT_ORIENTATION := bool(X > Y)
if (ts->input_dev == NULL) {
ret = -ENOMEM;
printk(KERN_ERR "Failed to allocate input device\n");
goto err_input_dev_alloc_failed;
}
ts->input_dev->name = "MT-touchscreen";
set_bit(EV_KEY, ts->input_dev->evbit);
set_bit(EV_ABS, ts->input_dev->evbit);
set_bit(BTN_TOUCH, ts->input_dev->keybit);
max_x=0x77b;
max_y=0xb38;
input_set_abs_params(ts->input_dev, ABS_Y, 0, max_y, 0, 0);
input_set_abs_params(ts->input_dev, ABS_PRESSURE, 0, 255, 0, 0);
input_set_abs_params(ts->input_dev, ABS_TOOL_WIDTH, 0, 15, 0, 0);
input_set_abs_params(ts->input_dev, ABS_MT_POSITION_X, 0, max_x, 0, 0);
input_set_abs_params(ts->input_dev, ABS_MT_POSITION_Y, 0, max_y, 0, 0);
input_set_abs_params(ts->input_dev, ABS_MT_TOUCH_MAJOR, 0, 255, 0, 0);
input_set_abs_params(ts->input_dev, ABS_MT_WIDTH_MAJOR, 0, 15, 0, 0);
ret = input_register_device(ts->input_dev);
if (ret) {
printk(KERN_ERR "Unable to register %s input device\n", ts->input_dev->name);
goto err_input_register_device_failed;
}
{
input_report_key(ts->input_dev,ABS_MT_TRACKING_ID,0);
input_report_abs(ts->input_dev, ABS_MT_TOUCH_MAJOR, f1R);
input_report_abs(ts->input_dev, ABS_MT_POSITION_X, f1x);
input_report_abs(ts->input_dev, ABS_MT_POSITION_Y, f1y);
input_mt_sync(ts->input_dev);
input_report_key(ts->input_dev,ABS_MT_TRACKING_ID,1);
input_report_abs(ts->input_dev, ABS_MT_TOUCH_MAJOR, f2z);
input_report_abs(ts->input_dev, ABS_MT_POSITION_X, f2x);
input_report_abs(ts->input_dev, ABS_MT_POSITION_Y, f2y);
input_mt_sync(ts->input_dev)
input_sync(ts->input_dev);
}
else if(finger==1)
{
input_report_key(ts->input_dev,ABS_MT_TRACKING_ID,0);
input_report_abs(ts->input_dev, ABS_MT_TOUCH_MAJOR, f1R);
input_report_abs(ts->input_dev, ABS_MT_POSITION_X, f1x);
input_report_abs(ts->input_dev, ABS_MT_POSITION_Y, f1y);
input_mt_sync(ts->input_dev);
input_sync(ts->input_dev);
}
Linux内核触摸屏驱动--多点触摸 【转】的更多相关文章
- 【引用】Linux 内核驱动--多点触摸接口
本文转载自James<Linux 内核驱动--多点触摸接口> 译自:linux-2.6.31.14\Documentation\input\multi-touch-protocol.t ...
- Linux 内核驱动--多点触摸接口【转】
转自:http://blog.csdn.net/joard_yang/article/details/6225937 译自:linux-2.6.31.14/Documentation/input/mu ...
- 基于FT5x06嵌入式Linux电容触摸屏驱动
**************************************************************************************************** ...
- 内核中的多点触摸协议文档 Multi【转】
转自:http://www.arm9home.net/read.php?tid=24754 前段时间改写了一个GT801的内核驱动,仔细阅读 MT Event 上报的时候,发现这个驱动是针对 Andr ...
- Linux学习: 触摸屏驱动
一.Linux输入子系统的结构: 二.触摸屏驱动代码: s3c_ts.c #include <linux/errno.h> #include <linux/kernel.h> ...
- Linux内核USB驱动【转】
本文转载自:http://www.360doc.com/content/12/0321/14/8363527_196286673.shtml 注意,该文件是2.4的内核的驱动源文件,并不保证在2.6内 ...
- free-electrons linux内核和驱动
操作系统的三个作用:1.管理硬件资源:2.提供独立于架构和硬件的可移植的软件接口3.处理不同应用对相同硬件资源的同时访问 系统调用接口是稳定的,系统调用由c函数库封装,用户程序基本不需要直接调用系统函 ...
- linux内核,驱动,应用程三者的概念和之间的关系
驱动程序属于内核的一个部分.准确的说是内核的一个组件.不包含驱动的内核也叫做内核,并且这也是我们常说的内核.内核要干的事情无非5件. 1,内存管理 2,虚拟文件系统 3,进程调度 4,网络接口 5,进 ...
- Linux 内核USB 驱动
通用串行总线(USB)是一个在主机和许多外设之间的连接. 最初它被创建来替代许多慢速和不同的总线- 并口, 串口, 和键盘连接--有一个单个的所有设备都可以连接的总线类型.[45] USB 已经成长超 ...
随机推荐
- 【大数据】Spark基础解析
第1章 Spark概述 1.1 什么是Spark 1.2 Spark内置模块 Spark Core:实现了Spark的基本功能,包含任务调度.内存管理.错误恢复.与存储系统交互等模块.Spark Co ...
- P3850 [TJOI2007]书架
题目描述 Knuth先生家里有个精致的书架,书架上有N本书,如今他想学到更多的知识,于是又买来了M本不同的新书.现在他要把新买的书依次插入到书架中,他已经把每本书要插入的位置标记好了,并且相应的将它们 ...
- pragma指令详解(转载)
#pragma comment( comment-type [,"commentstring"] ) 该宏放置一个注释到对象文件或者可执行文件.comment-type是一个预定义 ...
- 【刷题】BZOJ 1901 Zju2112 Dynamic Rankings
Description 给定一个含有n个数的序列a[1],a[2],a[3]--a[n],程序必须回答这样的询问:对于给定的i,j,k,在a[i],a[i+1],a[i+2]--a[j]中第k小的数是 ...
- jQuery map和each用法
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- bzoj1683[Usaco2005 Nov]City skyline 城市地平线
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1683 Input 第1行:2个用空格隔开的整数N和W. 第2到N+1行:每行包括2个用空格 ...
- 【转】__ATTRIBUTE__ 你知多少
__ATTRIBUTE__ 你知多少? GNU C 的一大特色就是__attribute__ 机制.__attribute__ 可以设置函数属性(Function Attribute ).变量属性(V ...
- 数据融合(data fusion)原理与方法
数据融合(data fusion)原理与方法 数据融合(data fusion)最早被应用于军事领域. 现在数据融合的主要应用领域有:多源影像复合.机器人和智能仪器系统.战场和无人驾驶飞机.图 ...
- python基础之map/reduce/filter/sorted
---map(fun,iterable) 首先来看一看map()函数,map函数接受两个参数,第一个参数是函数的名称,第二个参数一个可迭代对象.即map(fun,iterable) map函数就是将具 ...
- Zabbix应用三:Zabbix监控MySQL
利用Zabbix自带模版监控(Template App MySQL)MySQL服务 一.添加模版: 进入zabbix页面,找到'配置'->'主机'->'模版',点击'链接指示器'后面的'选 ...