实现返回键(back)和任务管理键(app_switch)功能的调换

[size=large]近期有一个需求在不同的国家操作习惯不一样,需要将back键和app_switch键的功能调换
最初的想法.在PhoneWindowManager中的interceptKeyBeforeDispatching中处理按键分发的过程中实现,但是这里的时机比较晚,而且这里没有对返回键的处理,在这里实现改动量可能比较大
后来想到一处比较早的时机,在底层往上层上报的时候将按键对应keyCode进行对调即可。修[/size]改代码位置:
frameworks\native\services\inputflinger\InputDispatcher.cpp
修改点:
void InputDispatcher::notifyKey(const NotifyKeyArgs* args) {
…… ……
}
event.initialize(args->deviceId, args->source, args->action,
flags, keyCode, args->scanCode, metaState, 0,
args->downTime, args->eventTime);

之前加如下:
int32_t keyCode = args->keyCode;
ALOGD("notifyKey keyCode=0x%x, ",args->keyCode);
char value[PROPERTY_VALUE_MAX];
property_get("persist.keychange.enable", value, "0");
if (!strcmp(value, "1")){
if (keyCode == 0x4){
keyCode=0xbb;
ALOGD("notifyKey keyCode=0x%x, ",keyCode);
}else if (keyCode == 0xbb){
keyCode=0x4;
ALOGD("notifyKey keyCode=0x%x, ",keyCode);
}
}

[size=large]通过属性persist.keychange.enable的读取,进行判断是否需要进行对调,如果默认的值为1,则进行对调,即将back的keyCode (0x4)跟app_switch的keyCode (0xbb)进行对调
使用property_get需要引入头文件#include <cutils/properties.h>
然后编译模块inputflinger,即可编完以后将libinputflinger.so
push到手机中system/lib64/下进行替换,
设置属性persist.keychange.enable进行测试即可[/size]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值