-
Notifications
You must be signed in to change notification settings - Fork 6
Web Controller
PadForge includes a built-in web server that turns any device with a web browser into a game controller. Open the URL shown on the Dashboard from your phone, tablet, or any other device on your network, and it appears as a physical input device in PadForge -- ready to be assigned to any virtual controller slot.
This is useful when you need an extra controller but do not have a spare physical one, when you want to use your phone as a secondary input for specific functions, or when you are playing games on a touchscreen-only device connected to a larger display.

- Open PadForge and go to the Dashboard.
- In the Web Controller section, check the box to enable the web controller server.
- PadForge displays a URL (e.g.,
http://192.168.1.100:8080). This is the address you will open on your other device.
- On your phone, tablet, or other device, open a web browser (Chrome, Safari, Firefox all work).
- Type the URL shown in PadForge into the address bar and navigate to it.
- The web controller landing page loads with two layout options.
Tap Xbox 360 or DualShock 4 to pick a controller layout. Both produce identical input -- the choice is purely visual, so pick whichever one you are more comfortable with.
- Back in PadForge, the browser controller appears as a new device on the Devices page with the name "Web Controller 1" (or the next available number).
- Assign it to a virtual controller slot by clicking the slot badge on the device card, exactly as you would with any physical controller.
- You are now playing.
Tip: On mobile devices, use your browser's "Add to Home Screen" option (found in the browser menu). This opens the controller in fullscreen mode without browser UI elements like the address bar and tabs, giving you more screen space.
The web controller requires your phone/tablet and your PC to be on the same local network (typically the same Wi-Fi network).
- The server listens on all network interfaces on port 8080 (default), so any device on your local network can connect.
- PadForge automatically detects your PC's local IP address and displays the correct URL on the Dashboard.
- PadForge automatically creates a Windows Firewall rule to allow incoming connections on the web controller port. If you are using a third-party firewall, you may need to allow TCP port 8080 manually.
- A maximum of 10 browser clients can connect simultaneously.
If you cannot reach the URL from your device:
- Confirm both devices are on the same Wi-Fi network.
- Check that your firewall is not blocking port 8080.
- Try using a different port in the Dashboard settings if 8080 is already in use by another application.
Full Xbox 360 controller layout with:
- Face buttons (A, B, X, Y)
- Shoulder buttons (LB, RB)
- Center buttons (Back, Start, Guide)
- D-pad with 8-way directional input
- Dual analog sticks with click (L3/R3)
- Left and right triggers
Full DualShock 4 controller layout with:
- Face buttons (Cross, Circle, Square, Triangle)
- Shoulder buttons (L1, R1)
- Center buttons (Share, Options, PS)
- D-pad with 8-way directional input
- Dual analog sticks with click (L3/R3)
- Left and right triggers
Both layouts send the same button and axis codes to PadForge. You can switch layouts at any time by navigating back to the landing page (use your browser's back button).

Tap a button on the controller image to press it. The button overlay lights up while touched. Touch zones are intentionally larger than the visible button art to make them easier to hit on small screens.
Each stick area uses a virtual joystick. Place your finger in the stick zone and drag to move the analog stick. The stick overlay on the controller image moves in real time to show your current position. Release your finger and the stick returns to center.
- Stick click (L3/R3): Quickly tap the stick zone (touch and release within 200ms with minimal movement) to register a stick click.
The D-pad is a single touch zone. Touch and drag to select a direction. Supports all 8 directions (four cardinal directions plus diagonals). The appropriate directional overlay highlights as you move your finger.
Tap a trigger zone to send a full trigger press. Release to return to zero. The trigger overlay fills visually to show the press state.
The web controller uses a WebSocket connection for low-latency input. Unlike regular HTTP requests, WebSockets maintain a persistent two-way connection, so input updates are sent immediately as you touch the screen.
| Status | Meaning |
|---|---|
| Connected | Active connection, input is being sent to PadForge |
| Disconnected | Connection lost -- tap the screen to attempt reconnection |
Latency expectations: Over a typical home Wi-Fi network, you can expect 5-15ms of additional latency compared to a wired controller. This is sufficient for casual games, puzzle games, platformers, and most other genres. Fast-paced competitive games may feel slightly less responsive than a physical controller connected directly via USB.
Reconnection: Each browser tab maintains a persistent pad ID. If you briefly lose connection (e.g., phone screen lock), reconnecting preserves your device identity and slot assignments in PadForge -- you do not need to reassign the controller.
When games send force feedback (vibration) to your virtual controller, PadForge forwards the vibration commands to your browser device using the browser's Vibration API. This works on phones and tablets with vibration motors. Note that not all browsers support the Vibration API -- Chrome on Android has good support, while Safari on iOS does not support it at all.
| Requirement | Details |
|---|---|
| Network | PC and device on the same local network (Wi-Fi) |
| Port | TCP port 8080 (default), not blocked by firewall |
| Orientation | Landscape required -- a warning is shown in portrait mode |
| Browser | Any modern browser (Chrome, Safari, Firefox, Edge) |
| Touch | Touchscreen recommended for full analog stick and multi-touch support |
| Max clients | Up to 10 simultaneous browser connections |
- Dashboard -- Enable and configure the web controller server
- Devices -- See your web controller and assign it to a slot
- Controller Slots -- Create a virtual controller to use with the web controller
- 3D and 2D Visualization -- The same PNG assets power both the web controller and the desktop 2D view