You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Release v1.2.25 enable SDL game-controller backend per prefix
Xbox/PlayStation controllers enumerated under GPTK (they showed up in Steam and
in games) but delivered no input: macOS's GameController framework takes
exclusive ownership of those pads (UsbExclusiveOwner in ioreg), which starves
Wine's default raw-HID backend. Affects USB and Bluetooth alike and is
independent of Steam Input. Wine's SDL backend reads the pad through the same
macOS framework cooperatively, so input reaches games.
- gptk_apply_input_backend sets winebus "Enable SDL"=1 in a prefix, once, via a
per-prefix marker; the value loads when the prefix's wineserver next starts.
- gptk-launch applies it on every launch (covers existing prefixes) and again
after wineboot on --init (covers freshly created ones).
- GPTK_CONTROLLER_SDL (default 1) gates it; documented in env.example, README,
and docs/steam.md with the macOS exclusive-grab explanation.
Copy file name to clipboardExpand all lines: README.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -51,6 +51,7 @@ The screenshots show the launcher profile and a live Elden Ring GPTK run. See [d
51
51
-`gptk-stubs`: cross-compiles and installs minimal stub DLLs for Wine/GPTK missing APIs (GameInput, etc.) so delay-load crashes are resolved without touching game files.
52
52
-`gptk-dsound-nocap`: installs a DirectSound no-capture forwarder into a prefix (and sets the Wine override) so Steam Voice cannot stall the Elden Ring ERSC Golden Pot lobby. It forwards to the prefix's own dsound and redistributes nothing copyrighted.
53
53
-`gptk-steam-layout`: assigns a Steam Input controller layout (`.vdf`) to a Steam app id by writing the selection into the prefix's controller config sets, so a layout applies even though Steam's in-client configurator renders blank under GPTK. Steam must be stopped; config sets are backed up before editing.
54
+
- SDL game-controller backend enabled per prefix so Xbox/PlayStation pads actually deliver input under GPTK (macOS exclusively claims those controllers, which starves Wine's default raw-HID backend). Toggle with `GPTK_CONTROLLER_SDL`.
54
55
- Dynamic path configuration through `~/.rippermoon-gptk.env`.
55
56
- Configurable Wine drive mappings with any letters except `C:`.
Copy file name to clipboardExpand all lines: docs/steam.md
+8Lines changed: 8 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -124,3 +124,11 @@ From the GUI:
124
124
3. Pick the game and click **Add**. It appears as a tile; its **Launch** button starts Steam and the game in one click.
125
125
126
126
You can also set a profile's **Steam App ID** by hand in App Settings to make any profile launch this way. The download path itself prefers the internal `S:` library; a Steam library on an external drive that unmounts mid-download is the usual cause of "Unpack failed" content errors.
127
+
128
+
## Controllers don't respond in games
129
+
130
+
If a controller shows up in Steam and in the game's settings but does nothing when you press buttons, the cause is macOS, not Wine. macOS's GameController framework takes **exclusive ownership** of Xbox and PlayStation pads (visible as `UsbExclusiveOwner` in `ioreg`), which starves Wine's default raw-HID backend — the pad enumerates (so it appears everywhere) but no button or stick input reaches the game. This affects USB and Bluetooth equally and is independent of Steam Input.
131
+
132
+
RipperMoonKit fixes this by enabling Wine's **SDL controller backend** per prefix (`winebus``Enable SDL`), which reads the pad through that same macOS framework cooperatively, so input flows to games. It is applied automatically the first time a prefix is launched (and on prefix init), and loads when the prefix's Steam/Wine next starts. Set `GPTK_CONTROLLER_SDL=0` in `~/.rippermoon-gptk.env` to opt out.
133
+
134
+
To apply it immediately to a prefix that is already running, close Steam/the game so the Wine driver reloads, then launch again. A controller that still works through Steam Input but not natively is a separate, game-specific issue.
0 commit comments