Android7.1之定制鼠标右键为返回键

文章讲述了如何在Room定制产品的开发板中,针对客户需求将鼠标右键功能改造成返回键,涉及修改InputReader.cpp文件中的CursorButtonAccumulator类,通过添加特定按键处理逻辑实现这一功能。

在Room定制产品中,我们开发板有USB接口,经常要接外设,比如鼠标、键盘之类的,很多时候客户需求将鼠标右键定制成返回键,那就需要我们改源码定制功能,不过很多时候原厂就已经帮你写好了,但是也是有意外情况需要加,这里就先记录下。
修改目录:

\frameworks\native\services\inputflinger\InputReader.cpp

修改代码如下:

void CursorButtonAccumulator::process(const RawEvent* rawEvent) {
    if (rawEvent->type == EV_KEY) {
        switch (rawEvent->code) {
        case BTN_LEFT:
            mBtnLeft = rawEvent->value;
            break;
        case BTN_RIGHT:
            mBtnRight = rawEvent->value;
            break;
        case BTN_MIDDLE:
            mBtnMiddle = rawEvent->value;
            break;
        case BTN_BACK:
            mBtnBack = rawEvent->value;
            break;
        case BTN_SIDE:
            mBtnSide = rawEvent->value;
            break;
        case BTN_FORWARD:
            mBtnForward = rawEvent->value;
            break;
        case BTN_EXTRA:
            mBtnExtra = rawEvent->value;
            break;
        case BTN_TASK:
            mBtnTask = rawEvent->value;
            break;
        case KEYCODE_ENTER:
        case KEYCODE_DPAD_CENTER:
            mBtnOk = rawEvent->value;
            break;
        }
    }
}

uint32_t CursorButtonAccumulator::getButtonState() const {
    uint32_t result = 0;
    if (mBtnOk) {
       result |= AMOTION_EVENT_BUTTON_PRIMARY;
    }
    if (mBtnLeft) {
        result |= AMOTION_EVENT_BUTTON_PRIMARY;
    }
    //add by liu
    if (mBtnRight) {
    	//这部分代表点击鼠标右键会发个返回的指令
        result |= AMOTION_EVENT_BUTTON_BACK;;
    }
    //end by liu
    if (mBtnMiddle) {
        result |= AMOTION_EVENT_BUTTON_TERTIARY;
    }
    if (mBtnBack || mBtnSide) {
        result |= AMOTION_EVENT_BUTTON_BACK;
    }
    if (mBtnForward || mBtnExtra) {
        result |= AMOTION_EVENT_BUTTON_FORWARD;
    }
    return result;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值