GT9XX触摸屏双击唤醒功能分析

news/2024/11/17 4:36:17/

一、触摸屏唤醒方式

1.在屏幕上画其中26个字母中的一个来唤醒屏幕:例如:a/b/c/d….
2. 在屏幕上画线唤醒屏幕:”上/下/左/右”
3.双击屏幕唤醒:在屏幕上双击两下。

二、触摸屏唤醒的原理

其实唤醒屏幕的原理很简单,就是检测触摸屏上面的动作,如果该动作是唤醒手势,则触发电源开关键来唤醒屏幕,调用的方法是
input_report_key(ts->input_dev, KEY_POWER, 1);
input_sync(ts->input_dev);
input_report_key(ts->input_dev, KEY_POWER, 0);
input_sync(ts->input_dev);

这里写图片描述

三、GT9XX触摸屏的唤醒代码

static void goodix_ts_work_func(struct work_struct *work)
{u8  end_cmd[3] = {GTP_READ_COOR_ADDR >> 8, GTP_READ_COOR_ADDR & 0xFF, 0};u8  point_data[2 + 1 + 8 * GTP_MAX_TOUCH + 1]={GTP_READ_COOR_ADDR >> 8, GTP_READ_COOR_ADDR & 0xFF};u8  touch_num = 0;u8  finger = 0;static u16 pre_touch = 0;static u8 pre_key = 0;
#if GTP_WITH_PENu8 pen_active = 0;static u8 pre_pen = 0;
#endifu8  key_value = 0;u8* coor_data = NULL;s32 input_x = 0;s32 input_y = 0;s32 input_w = 0;s32 id = 0;s32 i  = 0;s32 ret = -1;struct goodix_ts_data *ts = NULL;#if GTP_COMPATIBLE_MODEu8 rqst_buf[3] = {0x80, 0x43};  // for GT9XXF
#endif#if GTP_GESTURE_WAKEUPu8 doze_buf[3] = {0x81, 0x4B};
#endifGTP_DEBUG_FUNC();ts = container_of(work, struct goodix_ts_data, work);if (ts->enter_update){return;}
#if GTP_GESTURE_WAKEUPif (DOZE_ENABLED == doze_status){               ret = gtp_i2c_read(i2c_connect_client, doze_buf, 3);GTP_DEBUG("0x814B = 0x%02X", doze_buf[2]);if (ret > 0){     /***************  画字母唤醒  **********************/if ((doze_buf[2] == 'a') || (doze_buf[2] == 'b') || (doze_buf[2] == 'c') ||(doze_buf[2] == 'd') || (doze_buf[2] == 'e') || (doze_buf[2] == 'g') || (doze_buf[2] == 'h') || (doze_buf[2] == 'm') || (doze_buf[2] == 'o') ||(doze_buf[2] == 'q') || (doze_buf[2] == 's') || (doze_buf[2] == 'v') || (doze_buf[2] == 'w') || (doze_buf[2] == 'y') || (doze_buf[2] == 'z') ||(doze_buf[2] == 0x5E) /* ^ */){if (doze_buf[2] != 0x5E){GTP_INFO("Wakeup by gesture(%c), light up the screen!", doze_buf[2]);}else{GTP_INFO("Wakeup by gesture(^), light up the screen!");}doze_status = DOZE_WAKEUP;input_report_key(ts->input_dev, KEY_POWER, 1);input_sync(ts->input_dev);input_report_key(ts->input_dev, KEY_POWER, 0);input_sync(ts->input_dev);// clear 0x814Bdoze_buf[2] = 0x00;gtp_i2c_write(i2c_connect_client, doze_buf, 3);}/***************  画直线唤醒  **********************/   else if ( (doze_buf[2] == 0xAA) || (doze_buf[2] == 0xBB) ||(doze_buf[2] == 0xAB) || (doze_buf[2] == 0xBA) ){char *direction[4] = {"Right", "Down", "Up", "Left"};u8 type = ((doze_buf[2] & 0x0F) - 0x0A) + (((doze_buf[2] >> 4) & 0x0F) - 0x0A) * 2;GTP_INFO("%s slide to light up the screen!", direction[type]);doze_status = DOZE_WAKEUP;input_report_key(ts->input_dev, KEY_POWER, 1);input_sync(ts->input_dev);input_report_key(ts->input_dev, KEY_POWER, 0);input_sync(ts->input_dev);// clear 0x814Bdoze_buf[2] = 0x00;gtp_i2c_write(i2c_connect_client, doze_buf, 3);}/***************  双击屏幕唤醒  **********************/else if (0xCC == doze_buf[2]){GTP_INFO("Double click to light up the screen!");doze_status = DOZE_WAKEUP;/  模拟按下电源键唤醒  ///input_report_key(ts->input_dev, KEY_POWER, 1);input_sync(ts->input_dev);input_report_key(ts->input_dev, KEY_POWER, 0);input_sync(ts->input_dev);// clear 0x814Bdoze_buf[2] = 0x00;gtp_i2c_write(i2c_connect_client, doze_buf, 3);}else{// clear 0x814Bdoze_buf[2] = 0x00;gtp_i2c_write(i2c_connect_client, doze_buf, 3);gtp_enter_doze(ts);}}if (ts->use_irq){gtp_irq_enable(ts);}return;}
#endifret = gtp_i2c_read(ts->client, point_data, 12);if (ret < 0){GTP_ERROR("I2C transfer error. errno:%d\n ", ret);if (ts->use_irq){gtp_irq_enable(ts);}return;}finger = point_data[GTP_ADDR_LENGTH];
}

http://www.ppmy.cn/news/692905.html

相关文章

android 双击点亮屏幕,手机双击点亮屏幕是怎么实现的

手机越来越智能&#xff0c;当然这取决于科技的进步与发展&#xff0c;使用安卓的用户可能注意到一个双击唤醒手机的功能&#xff0c;这个非常方便&#xff0c;本文就来介绍一下手机双击点亮屏幕是怎么回事&#xff0c;是如何实现的&#xff01; 息屏操作的工作原理 息屏双击唤…

苹果手机数据恢复软件|易我iOS恢复大师免费下载

易我iOS恢复大师是一款非常强大的手机数据恢复软件。它能够恢复iphone|ios的照片、视频、通讯录、短信、通话记录、音乐等等手机数据。 适用于Windows和Mac的专业iPhone数据恢复软件。支持从iOS设备或iTunes/iCloud备份中恢复数据。支持最新的iOS 13和iPhone 11/11 Pro / XS / …

苹果手机微信记录恢复最简单的恢复方法

前言 手机中的微信使用的是SQLite数据库进行信息存储的&#xff0c;用户一旦误删除微信的聊天记录该怎么办呢&#xff1f;不用担心&#xff0c;由于SQLite数据库对于删除的记录并没有真正的删除&#xff0c;只是打上了删除标记的逻辑删除。我们可以借助一些工具实现微信删除记录…

能还原原始文件名的数据恢复软件

保留文件名的数据恢复的麻烦 「嘿&#xff0c;有谁能给我一个关于如何选择能保留原始文件名的数据恢复软件的建议吗&#xff1f;有多少人遇到过USB硬盘未格式化的案例&#xff1f;我最近碰到了这样一个麻烦&#xff0c;我的USB硬盘突然变成未格式化了&#xff0c;但是我没有对…

文件恢复 文件改名后如何恢复原来名称分享操作步骤

大家在办公的时候都会遇到需要处理文件的情况&#xff0c;如何给多个文件进行重命名呢&#xff1f;在重命名过后发现想要恢复回原来的名称这时该怎么操作呢&#xff1f;下面随着小编一起来看看具体的操作步骤吧&#xff01; 运行软件文件批量改名高手&#xff0c;选择文件批量重…

FoneDog iOS Toolkit(苹果数据恢复软件)官方正式版V2.1.62 | 苹果数据恢复大师下载 | 苹果数据恢复有免费的吗?

​ FoneDog iOS Toolkit 是专为苹果用户量身定做的一款集苹果数据恢复、苹果ios系统修复、iOS数据备份和还原、WhatsApp数据传输、数据迁移于一体的综合性苹果数据恢复软件工具箱&#xff0c;可以解决苹果用户遇到的iTunes错误代码、iPhone卡在恢复模式或Apple徽标、苹果…

如何找到并彻底删除万能恢复大师

每次开机万能恢复大师都弹广告&#xff0c;控制面板&#xff0c;腾讯管家还找不到安装地方&#xff0c;显示我没有安装 解决方法找到资源管理器&#xff0c;快捷键&#xff1a;ctrlshiftesc,点击详情&#xff0c;右击文件位置 打开文件所在位置&#xff0c; 点击Uninst.exe 然…

笔记本电脑里的微信文件数据误删了 如何恢复?

微信是继QQ之后推出的又一款即时通讯利器&#xff0c;现在微信已不仅仅是沟通情感的聊天工具了&#xff0c;许多工作的事宜也会通过微信交流。倘若重要数据丢失&#xff0c;会给企业带来非常严重的后果。使用数据恢复软件EasyRecovery可以通过恢复备份信息来挽回损失。 像之前…