Android 8.0 (Oreo) 添加按键及键值【物理按键】

在Android 8.0中添加新的物理按键涉及到多个步骤,包括确认按键驱动正常工作,修改Generic.kl文件映射按键值,更新frameworks中的keycodes.h和InputEventLabels.h,定义KeyEvent.java的keyCode,以及在attrs.xml中设置枚举值。最终,还需在Generic.kl和qwerty.kl中添加键值映射以确保在Android O系统中生效。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

步骤1.framework层添加前,要确定按键驱动是否调好:

       adb shell getevent    后按下按键

/dev/input/event3: 0001 02fe 00000001

/dev/input/event3: 0000 0000 00000000

/dev/input/event3: 0001 02fe 00000000

/dev/input/event3: 0000 0000 00000000

其中02fe就是驱动上报的值,两次的1,0是指按下和弹起的动作。

步骤2 . 确定KL键值映射文件

当得到上图你所需要的key信息后就可以在framework中将要添加的keycode添加进去了。

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

      在该文件添加key的value值并且定义key的名称:key 645   XXXXXX  其中645和xxxx为驱动定义的value值,XXXXXX在madev.h中定义的,766在input-event-codes.h中定义的(02fe ==766) 。
 

将驱动上报的02fe转为十进制的766, 并且定义:

key 766     F14

这样就完成了对物理按键kl文件的映射到“F14”

步骤3.framework native 中定义:

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

AKEYCODE_F14 = 901

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

DEFINE_KEYCODE(F14)

步骤4.framework base下的定义:

frameworks/base/core/java/android/view/KeyEvent.java:

定义按键的keyCode 也就是 APP 在onKeyDown() 获取的keyCode

public static final int KEYCODE_F14 = 901; // 注意APP获取的keyCode是901 不是766 

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

<enum name="KEYCODE_F14" value="901"/>


步骤5.android O 需要添加:

frameworks/base/data/keyboards/Generic.kl

frameworks/base/data/keyboards/qwerty.kl

key 766 F14

完成这一步才会生效。

键值最大767

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值