- README: what Control4Free is and why it reaches menus and sign-in, features, a quick start, screenshots, requirements, limitations, credits. - docs/: installation, playing, troubleshooting (every message the page and the app can show), how it works, and the WebSocket protocol. - CONTRIBUTING.md: building, testing, code style, releasing. - Screenshots of the page on phones and a PC and of the app, made against the real service built for the host, at the example address 192.168.1.20. - Issue forms, a contact list pointing at the guides and private security reporting, and FUNDING.yml. - CHANGELOG.md dated. CI now publishes this version's section of it as the release notes rather than the whole file. - THIRD_PARTY.md: the DualShock 4 diagram the buttons are drawn after (CC BY 3.0), and Apollo Save Tool for the package settings. - Page: the Vibration setting no longer promises to buzz when a game rumbles, which 1.0.0 cannot do yet.
5.4 KiB
Playing
Connect a controller
- Make sure Control4Free is running: the app on the PS4 says Running and shows the address.
- On a phone, tablet or computer on the same network, open that address, for example
http://192.168.1.20:4264, or scan the app's QR code. - Pick a free controller. The PS4 shows its "Who's using this controller?" screen.
- Choose a user with the D-pad (Left and Right) and press Cross, or follow the guest option.
Connect one controller at a time, and finish the user screen before the next person picks theirs. Don't press PS while that screen is up: it cancels the choice. PS works normally once you're signed in.
The home screen shows all four controllers live:
| State | Meaning |
|---|---|
| Free | Nobody is using it. Pick it to play. |
| Connecting | The PS4 is setting it up. Takes a moment. |
| Choose user on TV | Waiting for someone to pick a user on the PS4's screen. |
| Connected | Signed in and ready. |
| Paused | Its phone stopped sending input, for example because the screen locked. |
| This device / +1 device | Who's driving it: this browser, or other ones. |
Touch controls
The controller screen is a DualShock 4 laid out for your screen, best held sideways:
- Sticks follow your thumb. With Floating sticks on, a stick starts wherever your thumb lands.
- The touchpad takes one or two fingers. A quick tap clicks it; hold still to keep it pressed.
- L3 and R3: tap a stick, then touch it again straight away to press it in. If you'd rather have separate buttons, turn off Double-tap a stick for L3 / R3.
- PS, Share and Options are real controller buttons, so PS takes you to the PS4's home screen.
Your own layout
Open the menu (☰) and choose Edit the button layout. Drag a button to move it, change its size, or hide it. Reset to default puts everything back; tap it twice, so a stray tap can't throw a layout away. Each device keeps its own layout, separately for portrait and landscape.
Keyboard
On a computer the keyboard drives the controller open on the page. Change any key in All settings → Keyboard, and turn on Show keyboard keys to see them on the buttons.
| Controller | Key | Controller | Key |
|---|---|---|---|
| Cross | Space | L1 / R1 | Q / E |
| Circle | Esc | L2 / R2 | 1 / 3 |
| Square | Backspace | L3 / R3 | Z / C |
| Triangle | Enter | Options | O |
| D-pad | I J K L | Share | V |
| Left stick | W A S D | PS | P |
| Right stick | Arrow keys | Touchpad click | U |
| Touchpad corners | T Y G H |
Gamepads
Connect an Xbox, DualSense, Switch Pro or other gamepad to the phone or computer and press a button on it. It appears under Gamepads on this device:
- a gamepad that turns up while a controller is open on the page drives that controller;
- otherwise, pick the controller each gamepad plays as. One computer can run all four controllers this way;
- a row lights up while you use its gamepad, so you can tell which is which.
Keep the page's window in front: browsers only read gamepads for the active window.
"This browser only allows gamepads on secure pages." Some browsers only offer gamepads on https
pages, and the console's page is plain http. Save the page to the device (Save page as on a computer),
open the saved file, and enter the console's address in its connection box. Touch and the keyboard work either
way.
Settings
☰ → All settings has this device's settings. They stay in this browser.
| Setting | What it does |
|---|---|
| Keep the screen on | The phone's screen doesn't turn off while the page drives a controller. |
| Vibration | The phone buzzes briefly when you press a button (Android). |
| Floating sticks | A stick starts wherever your thumb lands in its area. |
| Tap the touchpad to click | A quick tap presses the touchpad button. |
| Double-tap a stick for L3 / R3 | Off: L3 and R3 get their own buttons. |
| Show keyboard keys | Labels the buttons with their keyboard keys. |
The bottom of the home screen shows the version, and the round trip to the console in milliseconds: a quick way to see whether your Wi-Fi is the slow part.
On your phone's home screen
Add the page to your home screen and it opens like an app:
- iPhone and iPad (Safari): Share → Add to Home Screen. It opens without Safari's bars.
- Android (Chrome): ⋮ → Add to Home screen. Because the page is plain
http, it opens in a Chrome tab.
The icon only works while Control4Free is running, and it remembers the PS4's address: reserve that address for the PS4 in your router so it doesn't change.
Full screen: the ⛶ button in the corner. Safari on iPhone doesn't let pages go full screen, so there it explains how to use the home screen instead.
Leaving
- ☰ → Disconnect controller removes it from the PS4 straight away.
- Closing the page or locking the phone releases its buttons at once. After 3 seconds without input the controller goes idle, and after 15 seconds it's removed. Come back within 15 seconds and you keep it.
- ☰ → Stop Control4Free stops the service and disconnects everyone. It's refused while someone else is still playing; the app on the PS4 can always stop it.
Rest mode
Rest mode signs every user out, so controllers have to be picked again after the PS4 wakes up, as real ones do. Control4Free itself carries on: reopen the page and pick your controller.