Fixes for old Mac game ports that don't work properly on modern macOS (Apple Silicon, Sonoma/Sequoia).
- Xbox controller not detected in Feral Interactive ports (Life Is Strange, Tomb Raider, etc.)
- Xbox controller buttons not working in Unity games using InControl (OXENFREE, etc.)
- Xbox controller face buttons not working in RPCS3 (PS3 emulator)
- Wrong language in Russian-repackaged Feral ports
- Xbox controller not detected over USB in games bundling an old SDL2 (Hades, other 2022-era ports)
- Game Mode never activates for old ports and repacks
Old Feral ports rely on the 360Controller.kext which doesn't load on modern macOS. The fix is adding device profile plists that use macOS's native HID support.
Unity games using the InControl library don't recognize macOS's native Xbox controller. The game detects it as "Unknown Controller" and buttons don't work (only stick axes do).
Some Unity games (e.g. Life is Strange: Before the Storm) do their own joystick-name matching instead of using InControl. A Bluetooth Xbox Wireless Controller reports "Xbox Wireless Controller", which falls into the PlayStation branch because it contains "wireless".
See unity-joystickmapping-fix/
RPCS3's SDL handler on macOS pre-fills face buttons with legacy SDL2 labels (A/B/X/Y) while the runtime now expects SDL3 labels (South/East/West/North). Stick and D-Pad work, but A/B/X/Y on an Xbox controller do nothing.
See rpcs3-xbox-fix/
Some repackaged Feral ports have hardcoded Russian language settings.
Games shipping their own SDL2 older than 2.0.18 have no GameController (SDL_JOYSTICK_MFI) backend. Over USB the Xbox pad exposes only vendor-defined HID elements (UsagePage 0xFF00), so those builds see zero axes and zero buttons. Dropping in a current SDL2 makes wired play work.
Old bundles lack LSApplicationCategoryType, and repacks often lack CFBundleIdentifier too, so gamepolicyd never treats the app as a game.
- macOS 14+ (Sonoma or later)
- Xbox controller connected via Bluetooth for fixes 1-5 (macOS's native driver doesn't expose standard HID elements over USB, so anything reading raw HID needs Bluetooth)
- USB works for fix 6, which routes the pad through the GameController framework instead of raw HID
- Python 3 (required only for the Unity/InControl fix — install via Xcode Command Line Tools or Homebrew if needed)
- Xbox controller plists from axu2/feral-interactive-mac-controllers