- From: Matt Reynolds <notifications@github.com>
 - Date: Wed, 21 Feb 2024 18:15:21 -0800
 - To: w3c/gamepad <gamepad@noreply.github.com>
 - Cc: Subscribed <subscribed@noreply.github.com>
 - Message-ID: <w3c/gamepad/issues/191/1958536104@github.com>
 
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