diff --git a/services/inputflinger/dispatcher/InputDispatcher.cpp b/services/inputflinger/dispatcher/InputDispatcher.cpp index 9d1adad7ec025915c650bd27ae7f790ff6e16411..91cc837bc7adfa8f00f6bbbcdbcb6ad484562516 100644 --- a/services/inputflinger/dispatcher/InputDispatcher.cpp +++ b/services/inputflinger/dispatcher/InputDispatcher.cpp @@ -2851,6 +2851,7 @@ void InputDispatcher::pokeUserActivityLocked(const EventEntry& eventEntry) { } int32_t eventType = USER_ACTIVITY_EVENT_OTHER; + int32_t keyCode = AKEYCODE_UNKNOWN; switch (eventEntry.type) { case EventEntry::Type::MOTION: { const MotionEntry& motionEntry = static_cast<const MotionEntry&>(eventEntry); @@ -2869,6 +2870,7 @@ void InputDispatcher::pokeUserActivityLocked(const EventEntry& eventEntry) { return; } eventType = USER_ACTIVITY_EVENT_BUTTON; + keyCode = keyEntry.keyCode; break; } default: { @@ -2878,10 +2880,10 @@ void InputDispatcher::pokeUserActivityLocked(const EventEntry& eventEntry) { } } - auto command = [this, eventTime = eventEntry.eventTime, eventType, displayId]() + auto command = [this, eventTime = eventEntry.eventTime, eventType, displayId, keyCode]() REQUIRES(mLock) { scoped_unlock unlock(mLock); - mPolicy->pokeUserActivity(eventTime, eventType, displayId); + mPolicy->pokeUserActivity(eventTime, eventType, displayId, keyCode); }; postCommandLocked(std::move(command)); } diff --git a/services/inputflinger/dispatcher/include/InputDispatcherPolicyInterface.h b/services/inputflinger/dispatcher/include/InputDispatcherPolicyInterface.h index 575b3d7059834460637d7e88da89c51ac4bee172..89977c99a89d544dcb61590f0e7609e626b8de6f 100644 --- a/services/inputflinger/dispatcher/include/InputDispatcherPolicyInterface.h +++ b/services/inputflinger/dispatcher/include/InputDispatcherPolicyInterface.h @@ -123,7 +123,8 @@ public: uint32_t policyFlags) = 0; /* Poke user activity for an event dispatched to a window. */ - virtual void pokeUserActivity(nsecs_t eventTime, int32_t eventType, int32_t displayId) = 0; + virtual void pokeUserActivity(nsecs_t eventTime, int32_t eventType, int32_t displayId, + int32_t keyCode) = 0; /* Notifies the policy that a pointer down event has occurred outside the current focused * window.