1 .在tp的驱动文件中添加以下代码实现按键功能

[plain] view plain copy
  1. static ssize_t
  2. ft5x06_virtual_keys_register(struct kobject *kobj,
  3. struct kobj_attribute *attr,
  4. char *buf)
  5. {
  6. return snprintf(buf, 200,
  7. __stringify(EV_KEY) ":" __stringify(KEY_HOME)  ":120:840:80:60"
  8. ":" __stringify(EV_KEY) ":" __stringify(KEY_BACK)   ":360:840:80:60"
  9. "\n");
  10. }
  11. static struct kobj_attribute ft5x06_virtual_keys_attr = {
  12. .attr = {
  13. .name = "virtualkeys.ft5x06_ts",
  14. .mode = S_IRUGO,
  15. },
  16. .show = &ft5x06_virtual_keys_register,
  17. };
  18. static struct attribute *ft5x06_virtual_key_properties_attrs[] = {
  19. &ft5x06_virtual_keys_attr.attr,
  20. NULL,
  21. };
  22. static struct attribute_group ft5x06_virtual_key_properties_attr_group = {
  23. .attrs = ft5x06_virtual_key_properties_attrs,
  24. };
  25. struct kobject *ft5x06_virtual_key_properties_kobj;
  26. static void __init ft5x06_touchpad_setup(void)
  27. {
  28. int rc;
  29. ft5x06_virtual_key_properties_kobj =
  30. kobject_create_and_add("board_properties", NULL);
  31. if (ft5x06_virtual_key_properties_kobj)
  32. rc = sysfs_create_group(ft5x06_virtual_key_properties_kobj,
  33. &ft5x06_virtual_key_properties_attr_group);
  34. if (!ft5x06_virtual_key_properties_kobj || rc)
  35. pr_err("%s: failed to create board_properties\n", __func__);
  36. }

另外需要在-mtp.dtsi文件中配置TP的参数和gen_vkeys

[plain] view plain copy
  1. i2c@f9923000{
  2. focaltech@38{
  3. compatible = "focaltech,5x06";
  4. reg = <0x38>;
  5. interrupt-parent = <&msmgpio>;
  6. interrupts = <1 0x2>;
  7. vdd-supply = <&pm8110_l19>;
  8. vcc_i2c-supply = <&pm8110_l14>;
  9. focaltech,family-id = <0x06>;
  10. focaltech,reset-gpio = <&msmgpio 0 0x00>;
  11. focaltech,irq-gpio = <&msmgpio 1 0x00>;
  12. focaltech,display-coords = <0 0 480 854>;
  13. focaltech,panel-coords = <0 0 480 946>;
  14. focaltech,button-map= <139 102 158>;
  15. focaltech,no-force-update;
  16. focaltech,i2c-pull-up;

这里主要配置touch panel的按键:

[plain] view plain copy
  1. gen-vkeys {
  2. compatible = "qcom,gen-vkeys";
  3. label = "ft5x06_ts";
  4. qcom,disp-maxx = <480>;
  5. qcom,disp-maxy = <800>;
  6. qcom,panel-maxx = <481>;
  7. qcom,panel-maxy = <940>;
  8. qcom,key-codes = <102 158 >;  //按键码,TP需要几个就写几个
  9. qcom,y-offset = <0>;
  10. };

key_codes究竟是多少,在头文件kernel/include/linux/input.h 中定义,解析这些参数的函数是在driver/input/touchscreen/gen_vkeys.c,其中用的的函数还是这个

vkey_obj = kobject_create_and_add("board_properties", NULL);
if (!vkey_obj) {
dev_err(&pdev->dev, "unable to create kobject\n");
return -ENOMEM;
}

ret = sysfs_create_group(vkey_obj, &vkey_grp);
if (ret) {
dev_err(&pdev->dev, "failed to create attributes\n");
goto destroy_kobj;
}

这个实现的方法跟8x25的基本一样,只不过这里注册成了驱动。记住如果使能这个功能的话,在配置文件中CONFIG_TOUCHSCREEN_GEN_VKEYS=y

下面是成功添加后的截图

0
0
  • 上一篇

高通 8x12 添加 TP和按键的更多相关文章

  1. 高通8x12平台开机画面制作工具

    你可能在网上看到很到关于手动更换手机开机图片的文章,想想自己的开机画面是小两口,好基友的照片多么个性啊.但是你有没有发现,网上下载的什么"一键生成"之类的,在你的手机上不能用啊,( ...

  2. 高通安卓调试LCD几方面总结

    来公司上班现在已经整整一个月了,蔽人不才,能力有限,学习进度缓慢,不过也是有一点点的收获与心得,在这里写出来与大家分享,养成良好的记录习惯也免得后忘记. 不啰嗦了,开入正题.来公司一个月左右的时间,主 ...

  3. 【转】高通平台android 环境配置编译及开发经验总结

    原文网址:http://blog.csdn.net/dongwuming/article/details/12784535 1.高通平台android开发总结 1.1 搭建高通平台环境开发环境 在高通 ...

  4. 高通开发笔记---yukon worknote

    点击打开链接 daily buildhttp://android-ci-platform.cnbj.sonyericsson.net/job/daily_build_jb-mr2-yukon/DL-C ...

  5. 高通LCD驱动调试

    本文转载自:http://www.itgo.me/a/x6305658852004979994/lcd%20qcom 来自 :http://blog.csdn.net/dacaozuo/article ...

  6. GJM : Unity3D 高通Vuforia SDK AR 开发

    一.AR概念: 增强现实(Augmented Reality,简称AR),是在虚拟现实的基础上发展起来的新技术,也被称之为混合现实.是通过计算机系统提供的信息增加用户对现实世界感知的技术,将虚拟的信息 ...

  7. 高通vuforia+Unity3D 制作ar app

    很简单就可以用Unity3D做出增强现实的一个小例子 新人第一次写博客,若出现错误望指正^_^ 需要下载de东西: unity3d 5.0 http://unity3d.com/get-unity   ...

  8. 高通、猎户机型Android典型bootloader分析

    1.bootloader是什么? 简单地说,bootloader 就是在操作系统内核运行之前运行的一段小程序.通过这段小程序,我们可以初始化硬件设备.建立内存空间的映射图,从而将系统的软硬件环境带到一 ...

  9. 高通平台 lcd driver 调试小结

    一.概述 1.1 简介 本文档主要包括LCD模块的驱动流程分析.Framebuffer相关知识.Gralloc等相关内容,以及LCD调试的一些经验和相关bug的分析和讲解. 1.2  开发环境 And ...

随机推荐

  1. c++ Struct和Class的区别

    C++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数据类型的数据结构了,它已经获取了太多的功能.struct能包含成员函数吗? 能!struct能继承吗? 能!!stru ...

  2. centos 6安装opencv

    昨天装好的,今天有些细节已经记不起来里,大致写一下吧. 首先,从opencv官网下载linux的opencv-2.4.9安装包,下载地址:http://jaist.dl.sourceforge.net ...

  3. python笔记一(语言简介、解释器、输入输出)

    一.python语言简介 一顿狂吹python目前有多火.多NB,哈哈哈,不过用起来心情确实很舒畅. 解释性语言:缺点,运行速度慢. 二.python解释器 与C.C++.java不同,以上都需要先将 ...

  4. 一起撸个简单粗暴的Tv应用主界面的网格布局控件(上)

    这一篇是真的隔了好久了~~,也终于可以喘口气来好好写博客了,这段时间实在是忙不过来了,迭代太紧.好,废话不多说,进入今天的主题. 效果 图一是Tv应用:当贝市场的主页 图二是咱自己撸的简单粗暴的 Tv ...

  5. Java内存泄漏分析系列之三:jstat命令的使用及VM Thread分析

    原文地址:http://www.javatang.com 使用jstat命令 当服务器CPU100%的时候,通过定位占用资源最大的线程定位到 VM Thread: "VM Thread&qu ...

  6. 深入Java虚拟机(2)——Java的平台无关性

    一.平台无关性的好处 Java技术在网络环境下非常有用,其中一个关键理由是,用Java创建的可执行二进制程序,能够不加改变地运行于多个平台. 这样的平台无关性随之带来许多的好处.这将极大地减轻系统管理 ...

  7. Java中获取文件大小的正确方法

    本文出处:http://blog.csdn.net/djy1992/article/details/51146837,转载请注明.由于本人不定期会整理相关博文,会对相应内容作出完善.因此强烈建议在原始 ...

  8. rbac数据库设计

    1 rbac数据库设计 RBAC基于资源的访问控制(Resource-Based Access Control)是以资源为中心进行访问控制分享牛原创,分享牛系列,分享牛.rbac 用户角色权限资源表如 ...

  9. Swift按照数组元素出现的次数及大小排序

    要求如下: 1.已知一个数组,按照单个元素在数组中出现的次数作为重新排序的依据,个数多的排在前面 2.相同个数时候,元素值大的排前面 例子: [1, 2, 2, 3, 5, 5] 经过计算得到的结果是 ...

  10. gitlab操作指南

    概述 GitLab是利用 Ruby on Rails 一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目.它拥有与Github类似的功能,能够浏览源代码 ...