touch的双击唤醒如何实现
来源:互联网 发布:ubuntu安装下载语言包 编辑:程序博客网 时间:2024/05/21 07:07
现在很多手机具有双击唤醒屏幕功能,那么这个功能是如何实现的呢,在ft5x06这款touchscreen上的实现方式如下
首先在touch的driver里会针对屏幕关闭时做特殊处理
在static irqreturn_t ftxxxx_ts_interrupt(int irq, void *dev_id)
{
u8 state;
i2c_smbus_read_i2c_block_data(ftxxxx_ts->client, 0xd0, 1, &state);
if (state == 1) {
fts_read_Gestruedata(ftxxxx_ts);
/*continue;*/
}
return IRQ_HANDLED;
}
首先从d0这个register中读取state,这个d0代表gesture mode,1是enable,0是disable
所以读取ftxxxx_ts上报的数据
接下来看static int fts_read_Gestruedata(struct ftxxxx_ts_data *data)
{
unsigned char buf[FTS_GESTRUE_POINTS * 3] = { 0 };
ret = ftxxxx_i2c_Read(data->client, buf, 1, buf, FTS_GESTRUE_POINTS_HEADER);
gestrue_id = buf[0];
check_gesture(data, gestrue_id);
}
然后看static void check_gesture(struct ftxxxx_ts_data *data, int gesture_id)
{
bool Ps_status = false;
if (!Ps_status) {
switch (gesture_id) {
/* ++++ touch gesture mode support part in ZE500CL ++++ */
case GESTURE_DOUBLECLICK:
if(dclick_flags==true)
{
input_report_key(data->input_dev, KEY_GESTURE_U, 1);
input_sync(data->input_dev);
input_report_key(data->input_dev, KEY_GESTURE_U, 0);
input_sync(data->input_dev);
printk(KERN_EMERG "[Focal][Touch] double click\n");
dclick_flags=false;
}
break;
}
#define KEY_GESTURE_UKEY_POWER
所以总的来说就是模拟KEY_POWER的动作唤醒了屏幕
- touch的双击唤醒如何实现
- 双击唤醒的原理:
- tp 双击唤醒 最终方案 实现流程
- 如何实现TreeView的双击事件? [转]
- 如何实现TreeView的双击事件?
- 如何实现网络唤醒开机
- Android 中的Looper如何实现阻塞与唤醒的
- android如何实现双击返回键退出 的修正版
- GT9XX触摸屏双击唤醒功能分析
- Lora空中唤醒的实现
- APP如何实现LBS感知和唤醒?
- 如何在java中实现双击事件
- andorid 中如何实现双击事件
- 如何实现双击 home 弹RecentAPP
- Android-Uiautomator:如何实现双击效果
- Android中如何实现双击退出APP
- DataGrid 双击事件的实现
- JList 双击事件的实现
- 4.操作系统一些基本理念 (2)
- Paint及Canvas的简单应用
- 计算汉明权重
- Linux系统下处理已删除文件继续占用磁盘空间的问题
- WebService部署到IIS上
- touch的双击唤醒如何实现
- mysql 导出导入数据库以及函数、存储过程
- echart 点击事件
- edgesForExtendedLayout对子vc的view的影响
- 黑马程序员——反射
- php中file_get_contents与curl性能比较分析
- 【转载】将思维导图上传到博客的好方法
- arm linux 启动流程分析
- Android中类ListPreference使用介绍