美文网首页
Android framework添加按键

Android framework添加按键

作者: tzlf | 来源:发表于2019-12-20 15:52 被阅读0次

    对应android6.1,framework添加按键

    首先看KeyEvent里的一段注释

    \frameworks\base\core\java\android\view\KeyEvent.java

    可以看到修改涉及到的文件:

    frameworks/native/include/android/keycodes.h

    frameworks/native/include/input/InputEventLabels.h

    frameworks/base/core/res/res/values/attrs.xml

    以及KeyEvent.java

    另外还有一个文件是

    \frameworks\base\data\keyboards\Generic.kl

    手机里的位置为

    /system/usr/keylayout/Generic.kl

    PS :  从android4.0开始使用Generic.kl 替换了 qwerty.kl,后续版本不再使用qwerty.kl。

    接下来以添加新按键为例:

    假设驱动已添加对应按键0x2f8

    1. \frameworks\base\data\keyboards\Generic.kl

    添加新键值和对应字符串

    其中0x2f8 是驱动上报的扫描键值, CHARG_STATUS 是我们自己定义的唯一字符串

    2. frameworks/native/include/input/InputEventLabels.h

    在 KEYCODES[] 中添加

    这里的截图少了下滑线,应该是CHARG_STATUS

    其中DEFINE_KEYCODE是一个宏定义

    将上面的宏展开就是 { CHARG_STATUS, AKEYCODE_CHARG_STATUS }

    其中CHARG_STATUS对应上面定制的字符串

    3. frameworks/native/include/android/keycodes.h

    在该文件定义新的键值

    注意键值的名字跟上一步步添加的宏展开后的名字一致,值280就是应用层接收到的keycode

    4. 若有需要可重写KeyEvent.java中的方法,以及attrs.xml

    从上述文件可以猜到键值转化流程:

    0x2f8---->CHARG_STATUS--->AKEYCODE_CHARG_STATUS (280)

    PS :

    1.调试可打开以下库文件的开关

    \frameworks\native\libs\input

    \frameworks\native\services\inputflinger

    2.  adb shell dumpsys input 查看现有输入系统

    3.  adb shell getevent 可查看现有的输入事件

    4.在/system/usr/keylayout中还有很多Vendor_xxxx_Product_xxxx.kl 之类的配置文件,但是我们没有配置对应的vend id等,所以一直使用默认的Generic.kl。

    相关文章

      网友评论

          本文标题:Android framework添加按键

          本文链接:https://www.haomeiwen.com/subject/imrinctx.html