android按键事件响应函数,Android物理输入事件(二)

本篇文章主要分析Android系统新增物理按键在framework层的修改

1.添加按键及其映射

上篇中我们知道kernel最终是通过kl文件给 user space的上报了一个整数,但是怎样确定这个kl文件. 这里可以通过如下命令查看:

> cat /proc/bus/input/devices

3fe41b6d0c92?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

通过打印信息,我们知道设备使用的是Vendor_0001_Product_0001.kl(sunxi-keyboard.kl).我们继续查看这个文件里面的内容

3fe41b6d0c92?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

2.在sunxi-keyboard.kl文件中添加映射

key  123 WIFI

说明:

key      -------关键字. 不要改动

123     -------kernel中上报的键值.这里只是假设这个这.具体需要请参考:include/linux/input.h

WIFI    -------123按键映射到Android中的按键,它对应的是 KeycodeLabels.h (Android 6.0:InputEventLabels.h)文件中的KEYCODES表格元素的“literal”值

3fe41b6d0c92?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

3.在frameworks/native/include/android/keycodes.h中修改

3fe41b6d0c92?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

4.修改frameworks/base/core/res/res/values/attrs.xml

3fe41b6d0c92?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

5.修改frameworks/base/core/java/android/view/KeyEvent.java

3fe41b6d0c92?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

经过如上步骤就将123 按键和系统中的 KEYCODE_WIFI对应起来了,注意这里的"123“键值并不是真正意义上的123键值,他只是linux驱动向上层抛出的键值

6.在Android的framework层的键值处理函数中,捕获按键,并进行相应处理

在framework层的input系统中,加入对wifi按键的捕获

frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java

添加的具体方法:在PhoneWindowManager.java的interceptKeyBeforeQueueing()函数中,捕获该键值,至于怎么处理处决您的业务处理了。

在这里再总结下我对Android键值处理的理解,我的理解:看了一下key character map的处理,是通过读取kl文件然后使用驱动程序提供的ioctl函数去修改来自输入设备的扫描码和系统预定义的keycode的映射关系。 这样的话,对于硬件扫描码,只需要修改这个kl文件。上层得到的都是系统预定义的keycode。

补充:  在编译固件时需要先更新一下api:make update-api

映射关系:

ir硬件扫描码在驱动里面被 映射为 kernel/include/linux/input.h里面定义的某个键值。但是这个键值只在linux系统中使用。

Android通过源码目录下的device/xxx/xxx.kl( keylayout )文件完成linux键值到Android系统要使用的键值的映射

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值