linux 触摸屏多点触摸改成单点触摸 驱动调试
平台:imx6dl
触摸屏芯片:gt911
内核板本:linux4.1.5
驱动文件:goodix.c
需求:客户在Qt应用端使用触摸屏,使用多点触摸会出现问题,所以,需要改成单点触摸。
直接一步到位,将goodix_read_config(struct goodix_ts_data *ts)函数中的读取到的
ts->max_touch_num 数值改为1;这样的话,其他地方就不需要作改动了。
static void goodix_read_config(struct goodix_ts_data *ts)
{u8 config[GOODIX_CONFIG_MAX_LENGTH];int error;error = goodix_i2c_read(ts->client, GOODIX_REG_CONFIG_DATA,config,GOODIX_CONFIG_MAX_LENGTH);if (error) {dev_warn(&ts->client->dev,"Error reading config (%d), using defaults\n",error);ts->abs_x_max = GOODIX_MAX_WIDTH;ts->abs_y_max = GOODIX_MAX_HEIGHT;ts->int_trigger_type = GOODIX_INT_TRIGGER;ts->max_touch_num = GOODIX_MAX_CONTACTS;return;}ts->abs_x_max = get_unaligned_le16(&config[RESOLUTION_LOC]);ts->abs_y_max = get_unaligned_le16(&config[RESOLUTION_LOC + 2]);ts->int_trigger_type = config[TRIGGER_LOC] & 0x03;ts->max_touch_num = 1;//config[MAX_CONTACTS_LOC] & 0x0f;if (!ts->abs_x_max || !ts->abs_y_max || !ts->max_touch_num) {dev_err(&ts->client->dev,"Invalid config, using defaults\n");ts->abs_x_max = GOODIX_MAX_WIDTH;ts->abs_y_max = GOODIX_MAX_HEIGHT;ts->max_touch_num = GOODIX_MAX_CONTACTS;}
}
其中input_mt_init_slots这个函数是上报触摸点的数量,其中unsigned int num_slots 是触摸点。
int input_mt_init_slots(struct input_dev *dev, unsigned int num_slots,
unsigned int flags)
static int goodix_request_input_dev(struct goodix_ts_data *ts)
{int error;ts->input_dev = devm_input_allocate_device(&ts->client->dev);if (!ts->input_dev) {dev_err(&ts->client->dev, "Failed to allocate input device.");return -ENOMEM;}ts->input_dev->evbit[0] = BIT_MASK(EV_SYN) |BIT_MASK(EV_KEY) |BIT_MASK(EV_ABS);input_set_abs_params(ts->input_dev, ABS_MT_POSITION_X, 0,ts->abs_x_max, 0, 0);input_set_abs_params(ts->input_dev, ABS_MT_POSITION_Y, 0,ts->abs_y_max, 0, 0);input_set_abs_params(ts->input_dev, ABS_MT_WIDTH_MAJOR, 0, 255, 0, 0);input_set_abs_params(ts->input_dev, ABS_MT_TOUCH_MAJOR, 0, 255, 0, 0);input_mt_init_slots(ts->input_dev, ts->max_touch_num,INPUT_MT_DIRECT | INPUT_MT_DROP_UNUSED);ts->input_dev->name = "Goodix Capacitive TouchScreen";ts->input_dev->phys = "input/ts";ts->input_dev->id.bustype = BUS_I2C;ts->input_dev->id.vendor = 0x0416;ts->input_dev->id.product = 0x1001;ts->input_dev->id.version = 10427;error = input_register_device(ts->input_dev);if (error) {dev_err(&ts->client->dev,"Failed to register input device: %d", error);return error;}return 0;
}
亲测有效,Qt程序也可以正常运行了。。。
linux 触摸屏多点触摸改成单点触摸 驱动调试相关推荐
- 友善之臂S70B改成四线触摸
我买的这个板子是tiny2416的板子,板子的显示以及触摸屏都是通过一线通讯来完成的,也就是2416和一个驱动平上面的小单片机进行通讯,由于工作调试需要,我就改了一些地方让它变成普通屏驱动以及四线触摸 ...
- Linux 将普通用户改成root用户
举例说明:将普通用户 tom 改成为 root 用户 方法1: (尚未亲身试验) 修改 /etc/sudoers 文件,找到下面一行,把前面的注释(#)去掉 ## Allows people in g ...
- linux怎么把dos改成unix_dos2unix命令 – 将DOS格式的文本文件转换成UNIX格式
dos2unix命令用来将DOS格式的文本文件转换成UNIX格式的(DOS/MAC to UNIX text file format converter).DOS下的文本文件是以\r\n作为断行标志的 ...
- linux将ipv6地址改成ipv4,虚拟机ip地址从ipv6改为ipv4相关问题
ERROR ITMS-90167: "No .app bundles found in the package"错误 ERROR ITMS-90167: " ...
- linux将中文语言改成英文版,将Linux中文语言修改成英文的具体操作方法及报错解决...
-bash: warning: setlocale: LC_CTYPE: cannot change locale (EN_US.UTF-8) 把linux系统从中文设置英文字符集后发生以下报错 首先 ...
- linux 更新yum源 改成阿里云源
1.备份 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 2.下载新的CentOS-Base ...
- 将linux中显示中文改成英文显示
编辑/etc/sysconfig/i18n这个文件,原内容如下: LANG="zh_CN.UTF-8" SYSFONT="latarcyrheb-sun16" ...
- 正点原子Linux 触摸芯片改成GT911后的驱动修改(单点和多点触摸)
目录 单点触摸 设备树修改 编译设备树和驱动模块并运行 运行测试 多点触摸 野火的Linux的触摸芯片就是用的GT911,如果用GT911替换原来正点原子的FT5x06或者GT9147,需要做一些修改 ...
- Android App接管手势处理TouchEvnet中单点触摸和多点触控的讲解及实战(附源码 超简单实用)
运行有问题或需要源码请点赞关注收藏后评论区留言~~~ 一.单点触摸 dispatchTouchEvent onInterceptTouchEvent onTouchEvent三个方法的输入参数都是手势 ...
- Linux Android 多点触摸协议 原文出自【比特网】,转载请保留原文链接:http://soft.chinabyte.com/os/71/12306571.shtml
为了使用功能强大的多点触控设备,就需要一种方案去上报用户层所需的详细的手指触摸数据.这个文档所描述的多点触控协议可以让内核驱动程序向用户层上报任意多指的数据信息. 使用说明 单点触摸信息是以ABS承载 ...
最新文章
- python好学吗 老程序员-想自学程序员,朋友推荐了python,靠谱吗?
- redis缓存穿透、缓存击穿、缓存雪崩概念及解决方案
- linux中为文件赋读写权限
- 开课吧:微服务与DDD解析
- day02.2-常用Linux命令整理
- Java主流框架的介绍
- 浅谈通过抢注域名获取好域名的小技巧
- 以太网网络变压器EMI电流及以太网网络变压器对EMI阻断原理
- ArcGIS Pro 创建tpk
- 查询跟踪多家快递单号,筛选某一时间发货的单号
- Chapter_06 更改图像的对比度和亮度
- 查找Windows和MacBook序列号
- SpringCloud_JZZ_MBY
- 隐私计算头条周刊(12.4-12.10)
- 590. N-ary Tree Postorder Traversal(Tree)
- [JZOJ5539] psy
- python实现类似于visio_5款替代微软Visio的开源免费软件
- 计算机交互工作原理,键盘,鼠标与计算机之间的交互原理
- vue对接汉王ESP1020E签批屏
- SWIFT Code 和 Routing Number 的关系