First standalone build of Switch2 Bridge — a Bluetooth LE bridge for the Nintendo Switch 2 Pro Controller on macOS that translates inputs into keyboard presses (Ryujinx-compatible by default).
What's in this release
- 🎮 Full button mapping (A/B/X/Y, L/R, ZL/ZR, +/-, Home, Capture, LS/RS, GL/GR, D-Pad)
- 🕹️ Both analog sticks (thresholded to 8 directions: WASD / IJKL)
- 🔧 User-editable mappings at
~/Library/Application Support/Switch2Bridge/mappings.json— supports single-char and<up>/<space>/<cmd>style special keys - 🧭 Menubar app (🎮 idle → 🔍 searching → 🟢 connected) with Edit mappings… and Reload mappings items
- 🩺 Diagnostics logged to
~/Library/Logs/Switch2Bridge/bridge.log - ✅ Prompts for Accessibility permission on first run (without it, the BLE side works but keypresses won't reach the emulator)
- 🎨 App icon
Installation
- Download
Switch2Bridge-v1.0.0.dmg - Open it, drag Switch2 Bridge into Applications
- First launch: right-click → Open (Gatekeeper — see below)
- Grant Bluetooth and Accessibility when macOS prompts
- Click 🎮 in the menubar → Connect Controller (controller must be on, in pairing mode)
⚠️ Gatekeeper / "unidentified developer"
This build is not code-signed or notarized (no Apple Developer account). On first launch macOS will refuse to open it. Workaround:
- Right-click the app → Open → confirm in the dialog, or
- System Settings → Privacy & Security → scroll down → Open Anyway
Known limitations
- LED control & rumble: not working (output BLE characteristic doesn't respond — likely needs a Joy-Con-style handshake, not yet reverse-engineered)
- Motion/gyro: not implemented
- Analog sticks are thresholded to 8 directions, no true analog (would need a virtual HID device via DriverKit)
- Bundle built against Python 3.14 on macOS 26 / arm64 — should run on Intel and Apple Silicon Macs running macOS Ventura+, but only verified on the build machine
Requirements
- macOS Ventura (13.0) or later
- Nintendo Switch 2 Pro Controller (Product ID
0x2069)
🤖 Built with Claude Code — see commit history for the bug-fix and refactor PRs that landed before this release.