fixing Celeste's controller support on macOS
I wanted to play Celeste on macOS, but controller support seemed to be broken. a quick Google search led me to a Reddit post about this problem.
disabling Steam Input didn’t work and the second solution is replacing the SDL2 library in the game with some precompiled version that is provided in the post, and that seemed to work according to the comments, but I’m not willing to trust a random binary from the internet :)
so here’s a quick guide on compiling SDL2 on macOS to fix controller support on Celeste
some context
i was trying to run the Steam version of Celeste and use an Xbox One (S) controller on macOS Sonoma (15) on an M3 Pro MacBook Pro.
Xcode :(
download Xcode from the App Store. I used Xcode 16.0 16A242d. there must be a way to compile it without it, but this is what I settled on
download the SDL2 source code
download and extract the .tar.gz file from the SDL2 GitHub release page (i tested with 2.30.7, I’m not sure if it’ll cause issues)
terminal time!
open your terminal and cd into [sdl2 folder]/Xcode/SDL/
and compile SDL2 with
the following command (it compiles a Release build of SDL2 as a shared library
for x64_64, because Celeste is an x86_64 binary)
xcodebuild -scheme "Shared Library" \
-configuration Release \
-arch x86_64 \
-derivedDataPath out \
-quiet \
build
the file that interests us is now in
[sdl2 folder]/Xcode/SDL/out/Build/Products/Release/libSDL2.dylib
replace the SDL2 library in Celeste
go to Celeste.app, browse the package contents and copy the file into
Contents/MacOS/osx
. either delete or move libSDL2-2.0.0.dylib
and replace it
with the new one (keep the same name: libSDL2-2.0.0.dylib
)
it should now work :)