New issue
Advanced search Search tips

Issue 881156 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Sep 25
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Windows
Pri: 3
Type: Bug



Sign in to add a comment

Surface Pro 2017 keyboard incorrectly identified as four unusable gamepads

Project Member Reported by mattreynolds@chromium.org, Sep 6

Issue description

The Surface Pro 2017 is a hybrid laptop/tablet device with a detachable keyboard. The keyboard is a composite device that includes the keyboard itself, the touchpad, and possibly other sensors. Some of the collections within the composite device are incorrectly classified as gamepads by RawInputDataFetcher's heuristics.

The device names assigned by Windows for the problematic HID devices are:

\\?\HID#VEN_8086&DEV_9D3E&SUBSYS_00000000&REV_21&Col02#4&f87ce30&0&0004#{4d1e55b2-f16f-11cf-88cb-001111000030}
\\?\HID#VEN_8086&DEV_9D3E&SUBSYS_00000000&REV_21&Col05#4&f87ce30&0&0004#{4d1e55b2-f16f-11cf-88cb-001111000030}
\\?\HID#VID_045E&PID_0922&Col06#7&36425755&0&0005#{4d1e55b2-f16f-11cf-88cb-001111000030}
\\?\HID#VID_045E&PID_0922&Col09#7&36425755&0&0008#{4d1e55b2-f16f-11cf-88cb-001111000030}

Some of the devices are shown with different IDs in html5gamepad:

"Unknown Gamepad (Vendor: 045e Product: 0951)", 2 axes, 0 buttons
"Unknown Gamepad (Vendor: 045e Product: 0951)", 2 axes, 0 buttons
"Surface Keyboard (Vendor: 045e Product: 0922)", 3 axes
"Unknown Gamepad (Vendor: 045e Product: 0922)", 2 axes, 1 button

None of these devices are usable. All axes and buttons are stuck at neutral (0.0).

This bug is particularly annoying because in some scenarios the four unusable devices occupy all four gamepad slots, meaning that actual working gamepads cannot be used until Chrome is restarted.

To fix, RawInputDataFetcher should be modified to filter out devices matching these IDs.
 
Project Member

Comment 1 by bugdroid1@chromium.org, Sep 25

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/e2dfd3b0d5ca9602b4d76f1443e755404febabe8

commit e2dfd3b0d5ca9602b4d76f1443e755404febabe8
Author: Matt Reynolds <mattreynolds@chromium.org>
Date: Tue Sep 25 21:04:08 2018

Filter Surface Pro 2017 non-gamepad HID devices

The Surface Pro 2017 is a hybrid laptop/tablet device with a
detachable keyboard. The keyboard is a composite device that
includes several HID devices, some of which are incorrectly
recognized as gamepads.

This CL modifies the RawInput data fetcher on Windows to
filter out devices that match the IDs for the Surface Pro 2017
keyboard. It also adds a check to exclude any PCI HID devices
since there are no known PCI gamepads.

The problematic devices intended to be filtered by this CL are:

\\?\HID#VEN_8086&DEV_9D3E&SUBSYS_00000000&REV_21&Col02#4&f87ce30&0&0004#{4d1e55b2-f16f-11cf-88cb-001111000030}
\\?\HID#VEN_8086&DEV_9D3E&SUBSYS_00000000&REV_21&Col05#4&f87ce30&0&0004#{4d1e55b2-f16f-11cf-88cb-001111000030}
\\?\HID#VID_045E&PID_0922&Col06#7&36425755&0&0005#{4d1e55b2-f16f-11cf-88cb-001111000030}
\\?\HID#VID_045E&PID_0922&Col09#7&36425755&0&0008#{4d1e55b2-f16f-11cf-88cb-001111000030}

BUG= 881156 

Change-Id: I04687ffc94c92c284928eaec28c1edc85d05bf33
Reviewed-on: https://chromium-review.googlesource.com/1211978
Commit-Queue: Matt Reynolds <mattreynolds@chromium.org>
Reviewed-by: Brandon Jones <bajones@chromium.org>
Cr-Commit-Position: refs/heads/master@{#594095}
[modify] https://crrev.com/e2dfd3b0d5ca9602b4d76f1443e755404febabe8/device/gamepad/raw_input_gamepad_device_win.cc

Status: Fixed (was: Started)
Matt, will this make it into M70 or M71?

This will be in M71, you can track the status of this fix here:

https://chromiumdash.appspot.com/commit/e2dfd3b0d5ca9602b4d76f1443e755404febabe8

Sign in to add a comment