Android触摸屏虚拟按键实现方法
在前几年流行的手机上,一般都会在底部有触摸按键功能(HOME、BACK等键),而这些触摸按键有些是直接用触摸屏的指定区域来模拟,有些是使用屏下的传感器来检测,而我们本次主要是讨论触摸屏的方式,一般情况下,我们直接在驱动里获取我们要模拟的多个指定区域,判断当前触摸的范围是否在指定区域,是则报以相应的KEYCODE,而最近在阅读https://source.android.com/devices/input/touch-devices这篇文档时, 知道在Android系统里也可能在驱动里面将预定好的区域坐标及键码配置好,由Android Frameworks来获取并进行处理,而我们只需要按要求设计好相应的区域和配置好文件即可,根据该文档,我们需要做如下一些配置步骤(下面以Android7.1源码来说明): 1.在实现虚拟按键时,内核必须有映射名为virtualkeys.<devicename>的虚拟按键映射文件,如触摸屏设备驱动程序里的设备名为touchyfeely,则虚拟按键映文件的路径必须为: /sys/board_properties/virtualkeys.touchyfeely 虚拟按键映射文件描述了触摸屏上虚拟按键的坐标和Linux按键代码,该文件是一个纯文本文件,由一系列换行符或冒号分隔的虚拟按键布局描述组成。相应的语法要求如下: 注释行以“#”开头,只对本行有效。 每个虚拟按键由6个冒号分隔的数据进行描述: 0x01: 版本代码 。必须始终为 0x01。 <Linux key code>:虚拟按键的 Linux 按键代码。 <centerX>:虚拟按键中心的 X 轴坐标(以像素为单位)。 <centerY>:虚拟按键中心的 Y 轴坐标(以像素为单位)。 <width>:虚拟按键的宽度(以像素为单位)。 <height>:虚拟按键的高度(以像素为单位)。 所有的坐标和尺寸都是根据显示坐标系指定的...