Use an iPhone as a Mac gamepad. The pad is a page in Safari. The Mac app sends keys to whatever is in front.
| Phone | Mac |
|---|---|
| Stick N E S W | Arrow keys |
| Stick NE SE SW NW (8-way) | Numpad 9 3 1 7 |
| Q W E R / A S D F | Same keys |
| Select / Start | J / K |
8-way corners are their own keys, not two arrows at once. Use Stick 4-way if the game only wants cardinals.
./build.sh
open /Applications/Joypad.appNeeds macOS 14+ and Xcode Command Line Tools. The first build clones Karabiner headers into vendor/ (not in git). After a rebuild, open /Applications/Joypad.app again. macOS may ask to allow the network and Accessibility.
- Open Joypad and allow Accessibility.
- Wi‑Fi: same network as the Mac, Personal Hotspot off. Safari to the
http://link in the window. - Cable: plug in USB‑C, tap Trust. On the Mac, share Wi‑Fi to iPhone USB (Internet Sharing), then Safari to
http://192.168.2.1:7777. - Click the game, then play.
Use Safari and http://. Chrome’s HTTPS-First mode hangs. Add the page to the Home Screen for a fullscreen pad.
Games ignore fake Mac keystrokes. Install Karabiner-Elements, allow its system extension, then Allow HID helper in Joypad. Set OpenEmu Input = Keyboard. If the game still sees nothing, grant Input Monitoring to OpenEmu.
Cursor and TextEdit only need Accessibility.
The pad is on your local network. Do not port-forward port 7777. Keys go to the frontmost Mac app.

