VNC-Steuerung verbessern: Low-Latency, Maus, Tastatur, Resize

Die Steuerung ist jetzt auf Minecraft (Menü, Chat, Inventar, AFK-Farmen)
optimiert. Für Mouselook/PVP bleibt VNC ungeeignet (Protokollgrenze,
dokumentiert).

x11vnc (serverseitig, entrypoint.sh):
- -threads: parallele I/O-Threads → weniger Eingabe-Lag
- -pointer_mode 4: flüssigere Mausübertragung (Default 1 ist träge)
- -norepeat: verhindert doppelte Tastaturwiederholungen im Spiel
- -nodpms -nofbpm -nowf -nowcr: Energiesparen/Rate-Limiting aus
- Über X11VNC_EXTRA env var frei konfigurierbar

noVNC-Client (VncViewer.vue):
- resize=remote statt scaling: Xvfb folgt Fenstergröße (1:1-Maus-Mapung)
- reconnect=1: auto-Reconnect bei Abbruch
- clipboard=1: Zwischenablage Browser <-> Container
- view_only=0: Eingabe explizit freigeschaltet
- Klick ins Bild setzt Tastaturfokus ins iframe
- Hinweis auf Mausfreigabe (Strg+Alt+Umschalt), Fokus-Button

README: neuer Abschnitt "Steuerung über VNC" mit Grenzerklärung.
.env.example + docker-compose.yml: X11VNC_EXTRA durchgereicht.
This commit is contained in:
Tronax 2026-08-09 11:09:35 +02:00
parent b8a99e6e9e
commit af073e77ec
Signed by: Tronax
SSH key fingerprint: SHA256:2pKKXDZucWvaF/GzXNz0FY53EAO1YDLN80bqS+TTz/o
5 changed files with 134 additions and 19 deletions

View file

@ -111,6 +111,53 @@ Die konkrete Einrichtung hängt von deiner Farm ab. Typische Schritte:
| `DISPLAY_REFRESH` | `60` | Bildwiederholrate des virtuellen Displays. |
| `WEB_PORT` | `8080` | Browser-Port. |
| `VNC_PASSWORD` | *(leer)* | Optional. Leer = ohne Auth (nur lokales Netz!). |
| `X11VNC_EXTRA` | siehe `.env` | Low-Latency-/Eingabe-Flags für x11vnc. |
---
## Steuerung über VNC
Die Steuerung ist auf **Minecraft-Menü, Chat, Inventar und AFK-Farmen**
optimiert. Sie ist **nicht** für aktives PVP/Mouselook gedacht — das ist eine
grundsätzliche Grenze von VNC (siehe unten).
**Bedienung im Browser:**
- **Klick ins Bild** → setzt den Tastaturfokus ins Spielfenster (Tasten gehen
ans Spiel, nicht an den Browser).
- **Maus freigeben**`Strg + Alt + Umschalt` (noVNC-Standard).
- **Vollbild** → Button in der Toolbar; für Minecraft flächendeckend.
- **Zwischenablage** → automatisch verknüpft (Login-Codes / Server-IPs kopieren
geht direkt zwischen Browser und Container).
**Was automatisch eingestellt ist:**
- `resize=remote`: die Xvfb-Auflösung folgt der Fenstergröße (1:1-Maus-Mapung,
keine Skalierungs-Unschärfe).
- `reconnect=1`: bei Abbruch verbindet noVNC selbstständig neu.
- x11vnc mit `-threads -pointer_mode 4 -norepeat`:
- `-threads` → parallele I/O-Threads, weniger Eingabe-Lag.
- `-pointer_mode 4` → flüssigere Mausübertragung als der Default (1).
- `-norepeat` → verhindert doppelte Tastaturwiederholungen im Spiel.
- `-nodpms -nofbpm -nowf -nowcr` → Energiesparen und Rate-Limiting aus, damit
nichts nach Leerlauf ruckelt.
**Für langsames Netz** (z. B. Remote über Internet statt LAN) in der `.env`
Kompression aktivieren:
```
X11VNC_EXTRA=-threads -pointer_mode 4 -norepeat -tight -compresslevel 6 -quality 7
```
### Warum Mouselook nicht richtig geht
VNC überträgt **absolute** Mauskoordinaten („Cursor an Position X/Y"). Minecraft
wie jedes FPS-artige Spiel braucht aber **relative** Mausbewegung und setzt den
Cursor dafür jeden Frame auf die Bildmitte zurück ([noVNC Issue #1493][novnc1493]).
Darum lässt sich die Kamera per VNC nicht sinnfrei drehen.
Für Menü, Buttons, Chat, Inventar und reines AFK auf einer Farm ist das ohne
Bedeutung. Wer wirklich remote *spielen* will, braucht ein anderes Protokoll
(Sunshine/Moonlight statt VNC) — das ist mit dieser Architektur nicht abgedeckt.
[novnc1493]: https://github.com/novnc/noVNC/issues/1493
---