Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 10 additions & 9 deletions CONTROLLERS.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,16 @@ Every controller below has a committed `openmicro doctor` report. CI replays cap

<!-- controllers:start -->

| Controller | Reports as | VID:PID | Connection | Driver | Buttons passed | Output | Status |
| ----------------------------------------- | ------------------------------- | --------- | ---------- | --------- | -------------- | ------------- | ------- |
| GameSir Cyclone 2 (DS4 mode) | DUALSHOCK 4 Wireless Controller | 054c:05c4 | bluetooth | ds4 | 17/17 | none | ✅ full |
| GameSir G7 Pro | GameSir-G7 Pro | 3537:1022 | bluetooth | gamesir | 17/17 | none | ✅ full |
| Microsoft Xbox Elite Series 2 | Controller | 045e:0b00 | usb | xbox | 17/17 | none | ✅ full |
| Microsoft Xbox Elite Series 2 (Bluetooth) | Xbox Wireless Controller | 045e:0b13 | bluetooth | xbox | 17/17 | none | ✅ full |
| Microsoft Xbox One S Controller | Controller | 045e:02ea | usb | xbox | 17/17 | none | ✅ full |
| Microsoft Xbox One S Controller | Xbox Wireless Controller | 045e:0b20 | bluetooth | xbox | 17/17 | none | ✅ full |
| Sony DualSense | DualSense Wireless Controller | 054c:0ce6 | usb | dualsense | 17/17 | lightbar+LEDs | ✅ full |
| Controller | Reports as | VID:PID | Connection | Driver | Buttons passed | Output | Status |
| ----------------------------------------- | ------------------------------- | --------- | ---------- | --------- | -------------- | ------------- | --------------- |
| GameSir Cyclone 2 (DS4 mode) | DUALSHOCK 4 Wireless Controller | 054c:05c4 | bluetooth | ds4 | 17/17 | none | ✅ full |
| GameSir G7 Pro | GameSir-G7 Pro | 3537:1022 | bluetooth | gamesir | 17/17 | none | ✅ full |
| Microsoft Xbox Elite Series 2 | Controller | 045e:0b00 | usb | xbox | 17/17 | none | ✅ full |
| Microsoft Xbox Elite Series 2 (Bluetooth) | Xbox Wireless Controller | 045e:0b13 | bluetooth | xbox | 17/17 | none | ✅ full |
| Microsoft Xbox One S Controller | Controller | 045e:02ea | usb | xbox | 17/17 | none | ✅ full |
| Microsoft Xbox One S Controller | Xbox Wireless Controller | 045e:0b20 | bluetooth | xbox | 17/17 | none | ✅ full |
| Sony DualSense | DualSense Wireless Controller | 054c:0ce6 | usb | dualsense | 17/17 | lightbar+LEDs | ✅ full |
| Stadia Controller rev. A | Stadia Controller rev. A | 18d1:9400 | usb | none | — | none | 🔴 capture-only |

<!-- controllers:end -->

Expand Down
137 changes: 137 additions & 0 deletions test/fixtures/controllers/18d1-9400-usb.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
{
"schemaVersion": 1,
"openmicroVersion": "1.4.2",
"platform": "darwin",
"osVersion": "Darwin Kernel Version 25.5.0: Mon Apr 27 20:38:56 PDT 2026; root:xnu-12377.121.6~2/RELEASE_ARM64_T6000",
"controller": {
"vid": "0x18d1",
"pid": "0x9400",
"product": "Stadia Controller rev. A",
"transport": "usb",
"driver": "none"
},
"results": {
"south": {
"status": "capture",
"capture": {
"idle": "",
"pressed": "0308004080808080000000"
}
},
"east": {
"status": "capture",
"capture": {
"idle": "0308000080808080000000",
"pressed": "0308002080808080000000"
}
},
"west": {
"status": "capture",
"capture": {
"idle": "0308000080808080000000",
"pressed": "0308001080808080003c00"
}
},
"north": {
"status": "capture",
"capture": {
"idle": "0308000080808080002600",
"pressed": "0308000880808080000000"
}
},
"dpad_up": {
"status": "capture",
"capture": {
"idle": "0308000080808080000000",
"pressed": "0300000080808080000000"
}
},
"dpad_down": {
"status": "capture",
"capture": {
"idle": "0308000080808080000000",
"pressed": "0304000080808080000000"
}
},
"dpad_left": {
"status": "capture",
"capture": {
"idle": "0308000080808080000000",
"pressed": "0306000080808080000000"
}
},
"dpad_right": {
"status": "capture",
"capture": {
"idle": "0308000080808080000000",
"pressed": "0302000080808080000000"
}
},
"l1": {
"status": "capture",
"capture": {
"idle": "0308000080808080000000",
"pressed": "0308000480808080000000"
}
},
"r1": {
"status": "capture",
"capture": {
"idle": "0308000080808080000000",
"pressed": "0308000280808080000000"
}
},
"l2": {
"status": "capture",
"capture": {
"idle": "0308000080808080000000",
"pressed": "0308040080808080ff0000"
}
},
"r2": {
"status": "capture",
"capture": {
"idle": "0308000080808080000000",
"pressed": "030808008080808000ff00"
}
},
"l3": {
"status": "capture",
"capture": {
"idle": "0308000080808080000000",
"pressed": "0308000180808080000000"
}
},
"r3": {
"status": "capture",
"capture": {
"idle": "0308000080808080000000",
"pressed": "0308800080808080000000"
}
},
"menu": {
"status": "capture",
"capture": {
"idle": "0308000080808080000000",
"pressed": "0308200080808080000000"
}
},
"view": {
"status": "capture",
"capture": {
"idle": "0308000080808080000000",
"pressed": "0308010080808080000000"
}
},
"touchpad": {
"status": "capture",
"capture": {
"idle": "0308000080808080000000",
"pressed": "0308100080808080000000"
}
}
},
"axes": {},
"output": "unsupported",
"timestamp": "2026-08-12T17:42:17.239Z"
}