| Index: content/browser/gamepad/raw_input_data_fetcher_win.cc
|
| diff --git a/content/browser/gamepad/raw_input_data_fetcher_win.cc b/content/browser/gamepad/raw_input_data_fetcher_win.cc
|
| index 0e53508285d76e5c169ba89e6498107b9736b952..765e0d7fa33f193f2910c768c9f2608c2866dde0 100644
|
| --- a/content/browser/gamepad/raw_input_data_fetcher_win.cc
|
| +++ b/content/browser/gamepad/raw_input_data_fetcher_win.cc
|
| @@ -34,6 +34,7 @@ USHORT DeviceUsages[] = {
|
|
|
| const uint32_t kAxisMinimumUsageNumber = 0x30;
|
| const uint32_t kGameControlsUsagePage = 0x05;
|
| +const uint32_t kButtonUsagePage = 0x09;
|
|
|
| } // namespace
|
|
|
| @@ -296,7 +297,8 @@ RawGamepadInfo* RawInputDataFetcher::ParseGamepadInfo(HANDLE hDevice) {
|
| DCHECK_EQ(HIDP_STATUS_SUCCESS, status);
|
|
|
| for (uint32_t i = 0; i < count; ++i) {
|
| - if (button_caps[i].Range.UsageMin <= WebGamepad::buttonsLengthCap) {
|
| + if (button_caps[i].Range.UsageMin <= WebGamepad::buttonsLengthCap &&
|
| + button_caps[i].UsagePage == kButtonUsagePage) {
|
| uint32_t max_index =
|
| std::min(WebGamepad::buttonsLengthCap,
|
| static_cast<size_t>(button_caps[i].Range.UsageMax));
|
| @@ -395,7 +397,8 @@ void RawInputDataFetcher::UpdateGamepad(
|
| // Set each reported button to true.
|
| for (uint32_t j = 0; j < buttons_length; j++) {
|
| int32_t button_index = usages[j].Usage - 1;
|
| - if (button_index >= 0 &&
|
| + if (usages[j].UsagePage == kButtonUsagePage &&
|
| + button_index >= 0 &&
|
| button_index <
|
| static_cast<int>(blink::WebGamepad::buttonsLengthCap)) {
|
| gamepad_info->buttons[button_index] = true;
|
|
|