驱动层KEY_U和上层KeyEvent.KEYCODE_U的映射

  • Post author:
  • Post category:其他


以KEY_U和KeyEvent.KEYCODE_U的映射为例

1.在Generic.kl(android源码或adb root后在/system/usr/keylayout/)中有KEY_U的真实值

在这里插入图片描述

2.在KeyEvent.java中有KEYCODE_U的真实值

public static final int KEYCODE_U               = 49;

3. 在Activity里重写onKeyDown/onKeyUp,手掌按下,获取KeyEvent和keyCode值,KeyEvent的getScanCode()方法可以拿到该keyCode对应KEY真实值

在这里插入图片描述

在这里插入图片描述

4. adb shell后,使用getevent指令也可以获取当前KEY的真实值

在这里插入图片描述

我们每次按键会有四个输出,前两行为按下,后两行为抬起,0001指按键(也存在其他设备类型,这里我们不关心),0016是对应的十六进制按键值,这里就是驱动所设置的按键值,可以去找驱动提供头文件查看该值所对应的按键名称。0016转成十进制为22,然后在我们默认的kl文件(Generic.kl)中找到22对应Android中的按键值如下:

key 22 U

这里即将驱动上报的KEY_U转成了Android的KEYCODE_U按键

ps:evnet1代表拍一拍

getevent -l /dev/input/event1

在这里插入图片描述

5.参考

https://www.jianshu.com/p/1b0ae800b5bf

https://blog.csdn.net/weixin_41508767/article/details/117526507



版权声明:本文为lyl0530原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。