From aadf8d5cc088c6dbe063de5da651a83466992512 Mon Sep 17 00:00:00 2001 From: Charles Lin Date: Thu, 30 Mar 2023 13:34:54 +0800 Subject: hasKeycodeLocked() also checks usage codes Key map can use both scan code and usage code. Adding usage code check to avoid misjudgment. Bug: 275526611 Test: In Android TV, pairing a BT RCU with keylayout which has usage page/id for DPAD. In PlayStore app search box, make sure user can move focus to search result by pressing dpad DOWN key. Change-Id: I70687d308899537e457192458176b1553c350f14 --- libs/input/KeyLayoutMap.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'libs/input/KeyLayoutMap.cpp') diff --git a/libs/input/KeyLayoutMap.cpp b/libs/input/KeyLayoutMap.cpp index d6b4579a94..250c0dd9a9 100644 --- a/libs/input/KeyLayoutMap.cpp +++ b/libs/input/KeyLayoutMap.cpp @@ -230,6 +230,16 @@ std::vector KeyLayoutMap::findScanCodesForKey(int32_t keyCode) const { return scanCodes; } +std::vector KeyLayoutMap::findUsageCodesForKey(int32_t keyCode) const { + std::vector usageCodes; + for (const auto& [usageCode, key] : mKeysByUsageCode) { + if (keyCode == key.keyCode) { + usageCodes.push_back(usageCode); + } + } + return usageCodes; +} + std::optional KeyLayoutMap::mapAxis(int32_t scanCode) const { auto it = mAxes.find(scanCode); if (it == mAxes.end()) { -- cgit v1.2.3-59-g8ed1b