Re: [w3c/gamepad] Add trackpad button support (Issue #191)

I would prefer to adopt an existing button naming scheme instead of inventing something new. I'm looking at [OpenXR /user paths](https://registry.khronos.org/OpenXR/specs/1.0/html/xrspec.html#semantic-path-user) since it aims to solve the same problem. OpenXR organizes gamepad inputs into a subtree rooted at /user/gamepad. The specification gives standard identifiers for common gamepad components (buttons, triggers, thumbsticks, trackpads, etc).

For example, the Standard Gamepad buttons are:

/user/gamepad/input/diamond_down/click
/user/gamepad/input/diamond_right/click
/user/gamepad/input/diamond_left/click
/user/gamepad/input/diamond_up/click
/user/gamepad/input/shoulder_left/click
/user/gamepad/input/shoulder_right/click
/user/gamepad/input/trigger_left/click
/user/gamepad/input/trigger_right/click
/user/gamepad/input/select/click
/user/gamepad/input/start/click
/user/gamepad/input/thumbstick_left/click
/user/gamepad/input/thumbstick_right/click
/user/gamepad/input/dpad_up/click
/user/gamepad/input/dpad_down/click
/user/gamepad/input/dpad_left/click
/user/gamepad/input/dpad_right/click
/user/gamepad/input/system/click

The PlayStation trackpad button is:

/user/gamepad/input/trackpad/click

It's not clear how to name buttons like Xbox Elite paddles or DualSense Edge back buttons. I think they are considered "squeeze" buttons similar to HTC Vive's Grip button.

Xbox Elite squeeze buttons:

/user/gamepad/input/squeeze_left_upper/click
/user/gamepad/input/squeeze_left_lower/click
/user/gamepad/input/squeeze_right_upper/click
/user/gamepad/input/squeeze_right_lower/click

DualSense Edge squeeze buttons:

/user/gamepad/input/squeeze_left/click
/user/gamepad/input/squeeze_right/click

For many gamepads there isn't a standard OpenXR identifier for every button. OpenXR allows extensions to add new identifiers with the "_ext" suffix.

Several gamepads have something like a "Share" button. Maybe these can use the same identifier?

/user/gamepad/input/share_ext/click  ("Share" button, Xbox Wireless Controller Model 1914)
/user/gamepad/input/share_ext/click  ("Capture" button, Nintendo Switch controllers)
/user/gamepad/input/share_ext/click  ("Capture" button, Stadia controller)

DualShock4 has a button labeled "Share" but it's already included in the Standard Gamepad as "left button in center cluster". DualSense labels this button "Create". We should prefer the Standard Gamepad button name.

/user/gamepad/input/select/click  ("Share" button, DualShock4)
/user/gamepad/input/select/click  ("Create" button, DualSense)

Google and Amazon gamepads have a dedicated button for calling the assistant:

/user/gamepad/input/assistant_ext/click  ("Google Assistant" button, Stadia Controller)
/user/gamepad/input/assistant_ext/click  ("Alexa Push-to-talk" button, Amazon Luna controller)

@marcoscaceres Can you think of any reason why we shouldn't use OpenXR's /user paths as identifiers in Gamepad API?

-- 
Reply to this email directly or view it on GitHub:
https://github.com/w3c/gamepad/issues/191#issuecomment-1958536104
You are receiving this because you are subscribed to this thread.

Message ID: <w3c/gamepad/issues/191/1958536104@github.com>

Received on Thursday, 22 February 2024 02:15:25 UTC