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

被折叠的 条评论
为什么被折叠?



