framework\native\services\inputflinger\InputReader.cpp中
uint32_t CursorButtonAccumulator::getButtonState() const {
uint32_t result = 0;
if (mBtnOk) {
result |= AMOTION_EVENT_BUTTON_PRIMARY;
}
if (mBtnLeft) {
result |= AMOTION_EVENT_BUTTON_PRIMARY;
}
if (mBtnRight) {
char targetProduct[PROPERTY_VALUE_MAX] = {0};
property_get("ro.target.product", targetProduct, "");
if (strcmp(targetProduct, "box") == 0) {
result |= AMOTION_EVENT_BUTTON_BACK;
} else {
//修改这里
//result |= AMOTION_EVENT_BUTTON_SECONDARY;
result |= AMOTION_EVENT_BUTTON_BACK;
}
}
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;
}
参考:https://blog.youkuaiyun.com/xct841990555/article/details/80426451
本文深入解析了framework
ativeservicesinputflingerInputReader.cpp中的getButtonState()函数实现细节,介绍了不同按钮状态是如何映射到AMOTION_EVENT_BUTTON系列常量的。
441

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



