Back to portfolio

Personal project / 2025

Virtual Gamepad

A two-part experiment: a landscape SwiftUI controller with touch controls and haptic feedback, plus a small Windows server that translates WebSocket messages into XInput events. The server is also distributed as an executable so the setup does not require a Python environment.

Role

iOS client and Windows server development

Year

2025

Full stack

8 tools

Virtual Gamepad landscape controller interface
Project interface — live capture or reconstruction from the working implementation

Full stack

  • 01Swift
  • 02SwiftUI
  • 03Starscream
  • 04WebSockets
  • 05Python
  • 06FastAPI
  • 07vgamepad
  • 08ViGEm

01

Built around

  • The client covers standard Xbox 360 inputs, twin analogue sticks, triggers, shoulder buttons, and a D-pad.
  • Touch gestures are translated to compact real-time commands and sent to a configurable local server.
  • Haptics, connection state, and press animations make a glass touchscreen easier to use without looking down.

02

If I kept going

  • Add automatic server discovery and more resilient reconnection when the phone changes networks.
  • Make control placement configurable for different hand sizes and iPhone dimensions.
Next projectFinancial Tracker