Skip to content

Xbox one BT support - #643

Open
strycore wants to merge 2 commits into
ShadowBlip:mainfrom
lutris:xbox-one-bt-support
Open

Xbox one BT support#643
strycore wants to merge 2 commits into
ShadowBlip:mainfrom
lutris:xbox-one-bt-support

Conversation

@strycore

@strycore strycore commented Aug 7, 2026

Copy link
Copy Markdown

This adds support for the Xbox One controller connected via Bluetooth. Tested on GameOS, the controller is now working.

strycore and others added 2 commits August 7, 2026 14:27
Xbox One S/X controllers on original (pre-Series) firmware send a
16-byte HID report over Bluetooth: 10-bit triggers, 4-bit hat switch,
and 10 buttons packed in 2 bytes. The driver only accepted the 17-byte
Xbox Series layout and rejected every packet from these pads.

Dispatch on report size, parse the 16-byte layout, and convert it to
the Series report so downstream state diffing stays single-path.
Unexpected sizes now log a warning instead of erroring out of the
poll loop.

Also fixes the right-trigger event diffing against the left trigger's
previous state.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The Xbox One BT pad delivers its guide button through its kbd handler
as KEY_MENU. Note this mapping is global to all evdev sources, so a
keyboard's context-menu key also emits Guide; scope it per-device
before upstreaming.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@pastaq

pastaq commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

Has gameos tried the xpad neo driver? It's exclusively for Xbox One Bluetooth controllers. IMO we should drop this driver entirely and use the evdev device from the kernel driver

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants