Documentation for 1.0.0: README, guides, screenshots, GitHub files

- 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.
This commit is contained in:
MoHadiShibli committed 2026-10-05 15:53:01 +03:00
1 parent 77a1bba68d
commit 5335bc09ce
20 files changed
+881 -226

No files matched your search

+114
View File
@@ -0,0 +1,114 @@
# Playing
## Connect a controller
1. Make sure Control4Free is running: the app on the PS4 says **Running** and shows the address.
2. 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.
3. Pick a free controller. The PS4 shows its *"Who's using this controller?"* screen.
4. 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.