Controlla turns your iPhone or iPad into a wireless keyboard and mouse for your Mac or Windows PC over WiFi. Control your computer from anywhere in the room with smooth joystick navigation, text input, and mouse clicks.
π View Promo Page |
- Virtual Joystick Mouse Control - Smooth, game-controller-like cursor movement
- Text Input - Type on your Mac from your iPhone/iPad
- Mouse Clicks - Left and right click buttons
- Keyboard Actions - Quick access to Enter, Backspace, and Space
- Auto-Discovery - Finds your Mac automatically via Bonjour
- Persistent Connection - Low-latency TCP connection for real-time control
- Cross-Platform - Universal app for iPhone, iPad, and Mac
- Free: Virtual joystick + Mouse clicks (L/R buttons) - Full mouse control
- Pro ($0.99/month): Text input + Keyboard actions (Enter, Backspace, Space)
- 7-day free trial of Pro features
- Family Sharing supported
- Controller: iPhone, iPad, Mac
- Receiver: Mac, Windows
- iOS 15.0+ or macOS 12.0+
- Xcode 16.4
- WiFi network (devices must be on same network)
- Windows 10/11
- .NET 8.0 SDK (for building from source)
- WiFi network (devices must be on same network)
- Service Discovery: Bonjour (_controlla._tcp)
- Communication: HTTP over persistent TCP connection
- Port: Auto-assigned by OS
- Endpoints:
/keyboard/text,/keyboard/key,/mouse/move,/mouse/click
- NetworkManager.swift - Handles Bonjour discovery, TCP connections, and command sending
- InputSimulator.swift - Simulates keyboard/mouse input on Mac using CoreGraphics
- ContentView.swift - SwiftUI UI with Controller and Receiver modes
- HIDKeycodeMapper.swift - Character to HID keycode conversion
- x^4.5 acceleration curve for extended low-speed precision
- 0.6-43 pixels per update (25ms intervals)
- Sub-pixel accumulation for smooth movement
- Send throttling to prevent queue buildup
- Velocity smoothing (35%) for consistent feel
controlla/
βββ AirType/ # iOS/macOS app source code
β βββ ContentView.swift # SwiftUI UI with tabs and joystick
β βββ NetworkManager.swift # WiFi networking and Bonjour
β βββ InputSimulator.swift # Mac input simulation
β βββ PaywallView.swift # Subscription paywall
β
βββ AirControllaWindows/ # Windows receiver app
β βββ AirControllaWindows/
β βββ NetworkManager.cs # TCP listener and mDNS
β βββ InputSimulator.cs # Windows input simulation
β βββ MainWindow.xaml # WPF UI
β βββ AirControllaWindows.csproj
β
βββ deployment/ # App Store deployment automation
β βββ api.py # App Store Connect API client
β βββ metadata.py # Metadata upload
β βββ screenshots.py # Screenshot upload
β βββ metadata/ # App Store text content
β βββ screenshots/ # iOS and macOS screenshots
β βββ AuthKey_*.p8 # API key (gitignored)
β
βββ scripts/ # Build and deployment scripts
β βββ archive_and_upload.sh # iOS build
β βββ archive_and_upload_macos.sh # macOS build
β βββ deploy.py # Metadata/screenshot automation
β βββ upload_macos_screenshots.py # macOS screenshot upload
β
βββ docs/ # GitHub Pages website
β βββ index.html # Landing page
β βββ privacy.html # Privacy Policy
β βββ terms.html # Terms of Use
β
βββ DEPLOYMENT.md # Complete deployment guide
βββ NEXT_STEPS.md # Submission checklist
βββ README.md # This file
- Build and run on Mac
- Switch to "App Mode" tab
- Select "Receiver" mode
- Grant Accessibility permissions when prompted
- App will show "Ready - [Your Mac Name]"
- Download
AirControlla.exefrom Releases - Run the executable (Windows will prompt for firewall access - allow it)
- The app will show "Receiver Mode" and wait for connection
- Both devices must be on the same WiFi network
Building from source:
cd AirControllaWindows/AirControllaWindows
dotnet restore
dotnet build
dotnet runCreating distributable .exe:
dotnet publish -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true
# Output: bin/Release/net8.0-windows/win-x64/publish/AirControlla.exe- Build and run on iPhone/iPad
- Ensure you're on the same WiFi as your Mac/PC
- Go to "Devices" tab
- Select your computer from the discovered devices list
- Use the joystick, text input, and buttons to control your computer
macOS: Accessibility permissions required for input simulation (prompted on first launch)
Windows: Firewall access required for network communication (prompted on first launch). For full input simulation, run as Administrator.
- Only works on same WiFi network
- No internet connection required
- No data leaves local network
- Bonjour service automatically secured by WiFi encryption
- Keyboard: CGEvent API with HID keycode mapping
- Mouse Movement: Relative delta positioning
- Mouse Clicks: CGEvent mouse button simulation
- Coordinate System: Top-left origin (standard macOS screen coordinates)
Automated deployment system using App Store Connect API:
# Build iOS and macOS
./scripts/archive_and_upload.sh
./scripts/archive_and_upload_macos.sh
# Upload screenshots and metadata
python3 scripts/deploy.py --screenshots
python3 scripts/upload_macos_screenshots.pySee DEPLOYMENT.md for complete guide and NEXT_STEPS.md for submission checklist.
The docs/ folder contains the website hosted at https://okekedev.github.io/controlla/
To enable:
- Push to GitHub
- Go to Settings β Pages
- Source: Deploy from branch
main/ folder/docs - URLs:
These URLs are required for App Store submission.
Source Available - Commercial Software
This source code is publicly available for transparency and educational purposes. See LICENSE for details.
TL;DR:
- β View, study, and learn from the code
- β Report bugs and contribute improvements
- β Use for educational purposes
- β Commercial use or redistribution
- β Publishing competing apps
- β Using the "Controlla" trademark
For commercial licensing inquiries, contact: https://sundai.us
Built with Swift 6, SwiftUI, Network framework, and CoreGraphics.
Optimized for iOS 15+ / macOS 12+ and Xcode 16.4


