Unity-Technologies / Unity-Technologies/InputSystem
Feature Request: Native Gamepad layout for 8BitDo Ultimate 2 Wireless Controller (VID 0x2DC8, PID 0x6012)
Nobody has claimed this yet.
- Dominant language
- C#
- Stars
- 1.5k
- Forks
- 339
- Avg merge
- 2d 19h
- Merged PRs (30d)
- 5
Description
Summary
The 8BitDo Ultimate 2 Wireless Controller is a popular third-party gamepad that supports both 2.4GHz USB Dongle and direct Bluetooth wireless connectivity.
On macOS (and other platforms), when connected in D-Input / Wireless mode (Vendor ID: 0x2DC8, Product ID: 0x6012), Unity's New Input System (com.unity.inputsystem) treats the device as an unconfigured generic InputDevice rather than instantiating a Gamepad instance.
Because games relying on Gamepad.current or Gamepad.all (such as Valheim) strictly query devices typed as Gamepad, this controller is completely unrecognized in-game unless users switch to Nintendo Switch mode (which sacrifices analog triggers and turns them into digital buttons).
Device Information
- Manufacturer: 8BitDo
- Product Name: 8BitDo Ultimate 2 Wireless
- Vendor ID:
0x2DC8(11720) - Product ID:
0x6012(24594) - Interface: HID (USB 2.4GHz adapter and macOS Bluetooth HID)
- Report ID:
0x01(34 bytes input report)
Verified HID Input Report Layout (Report ID 1 - 34 bytes)
We have reverse-engineered, tested, and verified the exact packet layout:
- Offset 0: Report ID (
0x01) - Offset 1: D-Pad Hat Switch (0=Up, 1=UpRight, 2=Right, 3=DownRight, 4=Down, 5=DownLeft, 6=Left, 7=UpLeft, 15=Neutral)
- Offset 2: Left Stick X (
0..255, center128) - Offset 3: Left Stick Y (
0..255, center128, inverted) - Offset 4: Right Stick X (
0..255, center128) - Offset 5: Right Stick Y (
0..255, center128, inverted) - Offset 6: Face buttons & Bumpers (bitmask):
- Bit 0: South (A)
- Bit 1: East (B)
- Bit 3: West (X)
- Bit 4: North (Y)
- Bit 6: Left Shoulder (LB)
- Bit 7: Right Shoulder (RB)
- Offset 7: System & Thumbstick Clicks (bitmask):
- Bit 2: Select / Back
- Bit 3: Start
- Bit 4: Home / Guide
- Bit 5: Left Stick Click (L3)
- Bit 6: Right Stick Click (R3)
- Offset 8: Left Trigger Analog (
0..255, continuous continuous travel) - Offset 9: Right Trigger Analog (
0..255, continuous continuous travel) - Offset 10: Back Paddles:
- Bit 0: Paddle M1 (Grip)
- Bit 1: Paddle M2 (Grip)
Proposed Implementation
Adding a layout definition such as:
InputSystem.RegisterLayout<EightBitDoUltimate2Gamepad>(
"8BitDoUltimate2Wireless",
matches: new InputDeviceMatcher()
.WithInterface("HID")
.WithCapability("vendorId", 0x2dc8)
.WithCapability("productId", 0x6012)
);
InputSystem.RegisterLayoutMatcher(
"8BitDoUltimate2Wireless",
new InputDeviceMatcher()
.WithProduct("8BitDo Ultimate 2 Wireless")
);
We have confirmed this layout works with 100% fidelity, zero latency, and full analog trigger sensitivity in Unity runtime.
Adding this built-in layout to com.unity.inputsystem will allow all Unity games on macOS (and other desktop platforms) to support this controller natively without requiring custom mods or workarounds.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start at the proposed InputSystem.RegisterLayout and InputDeviceMatcher entry points, using the reported HID identifiers and input report offsets as the mapping requirements. Add the built-in 8BitDo Ultimate 2 Wireless layout so the device is recognized as a Gamepad with analog triggers, sticks, buttons, and paddles, then verify it on the stated HID connections.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp, unity
- Domain
- desktop, game-dev
- Issue type
- Feature
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 70/100