Neu: In-Page-Emulator auf Wiki-Seiten!

Folgend @Jonathan s Vorschlag habe ich die letzten paar Stunden damit verbracht, den RVMPlayer auch für die Wiki-Seiten zu implementieren!

Wenn eine Seite ein dsk-Image enthält (wie zum Beispiel XMas-tro 2009 - CPCWiki ), bekommst du neben dem dsk-Image einen „Play“-Button. Dieser öffnet ein Modal mit dem Emulator, der automatisch den CAT-Befehl ausführt.

Ich habe versucht, es direkt auf der Seite zu implementieren, aber das hat einige Probleme verursacht, die ich nicht (zumindest nicht schnell) beheben konnte. Ich finde diese Umsetzung aber auch echt schick!

Probiert es gerne aus und lasst mich wissen, was ihr denkt!

Das ist perfekt. Vielleicht ziehen andere Websites nach (z. B. https://www.cpc-power.com).

Danke für die Umsetzung.

Eine Sache, die mir aufgefallen ist.

Zuerst muss ich eine Konsequenz davon erklären, wenn ein Browser (zumindest Firefox) „Resist Fingerprinting“ (Fingerprinting-Schutz) aktiviert hat. Wenn das aktiviert ist, geben die JavaScript-APIs das lokale Tastaturlayout nicht an den JavaScript-Code preis. Wenn JavaScript-Code Informationen über das Tastaturlayout abfragt, erhält er immer dieselbe Antwort (vielleicht ein normales US-Tastaturlayout) – unabhängig vom tatsächlichen Tastaturlayout. Du siehst bestimmt schon, worauf das hinausläuft, oder?

Jetzt zum Problem.

Ein Amstrad-CPC-Emulator im Browser ist JavaScript-Code, der typischerweise Annahmen über das physische Tastaturlayout macht.

Das führt dazu, dass bei einem französischen Layout und einem Browserprofil mit aktiviertem „Resist Fingerprinting“ beim Aufrufen deines Beispiels XMas-tro 2009 - CPCWiki das Tastaturlayout so komplett zerschossen ist, dass ich im Emulator nicht einmal ein Anführungszeichen " tippen kann.

Kurioserweise sind alle Buchstaben in Ordnung. Aber wenn man die Tasten 1 bis 9 und dann 0 drückt (was auf einer französischen Tastatur die Symbole &é"'(-è_çà erzeugt), wird hier 7;;9-- ausgegeben. Manche Tasten machen gar nichts, und die, die etwas ausgeben, erzeugen (in der Reihenfolge) 134568. Verwirrend? Ja, geht mir genauso.

Das ist wieder eine dieser komplizierten Hürden, die aber weniger zum Problem werden, wenn man Demos oder Spiele entwickelt, die komplett mit den Tasten auskommen, die bei QWERTY, AZERTY und QWERTZ identisch sind, siehe Why make such great games if most people can't play them properly? - #2 by cpcitor

Ich habe mir das Ganze also mal angeschaut. Soweit ich das beurteilen kann, gibt es keine echte Lösung, sondern nur Workarounds – wie zum Beispiel ein Profil mit deaktiviertem RFP zu nutzen. Oder die Tastatursprache umzustellen.

Da die Engine des RVMPlayers keine API bietet, um ein regionales Tastaturlayout auszuwählen oder einzelne Tasten neu zuzuweisen, können wir dem Wiki-Code keinen Code hinzufügen, der das bewusste Spoofing des Browsers umgeht. Und nach allem, was ich so lese, müssen FF-Nutzer den erhöhten Datenschutz wohl einfach auf Kosten von Funktionseinbußen in Kauf nehmen.

Was die Symbole und Zahlen angeht – keine Ahnung, warum FF das macht :smiley: Die oberste Reihe erzeugt normalerweise Symbole und die Zahlen liegen auf der Shift-Ebene. Es sieht so aus, als ob FF bei aktiviertem RFP die gedrückten physischen Tasten wie bei einem US-Layout meldet, das Ganze aber irgendwie mit französischen Tastenwerten mischt?

Tut mir leid, dass ich da nicht weiterhelfen kann…

Ist es möglich, dass der Emulator auch mit den CPR angezeigt wird? :slight_smile:

Leider erst dann, wenn der RVM Player es unterstützt!

Es gibt eine Option, die einige Emulatoren in Betracht ziehen: Versuche nicht, bei der physischen Tastaturbelegung des Hosts schlauer zu sein als nötig, sondern nimm einfach gar nichts darüber an.

Mit anderen Worten: Akzeptiere es, wenn eine API ein Symbol anstelle einer Tastaturposition liefert.

Wenn Javascript-APIs in diesem Fall sagen „Benutzer hat <was-auch-immer> gedrückt“, versuche nicht zu raten: „Unter der Annahme eines physischen Hosts mit einer normalen PC105-Tastatur mit französischem AZERTY-Layout entspricht dieses Symbol der Taste in Zeile x, Spalte y, die ich der physischen CPC-Taste in Zeile x’, Spalte y’ zuordne“.

Akzeptiere stattdessen zum Beispiel, dass der Benutzer „eine Taste gedrückt hat, die ein Anführungszeichen ergibt“. Verwende eine Zuordnung von Symbolen zu CPC-Tasten, unabhängig von der physischen Tastatur des Hosts. Das erfordert möglicherweise eine Tastenfolge in der emulierten Maschine, wie „Umschalttaste drücken, 2 drücken, 2 loslassen, Umschalttaste loslassen“.

Arnoldemu erlaubt definitiv eine ähnliche Logik und nennt sie „translated“ (übersetzt), im Gegensatz zu „positional“ (positionsbezogen).
Ich würde es „symbolbasiert“ nennen.

Ich glaube, Caprice32 erlaubt das auch.

Ein Vorteil ist, dass du auf dem CPC mit deiner PC-Tastatur genauso tippen kannst wie in jedem anderen Programm. Großartig zum Programmieren oder Bearbeiten von Texten jeglicher Art. Und zum Tippen von run"disc.

Zurück zur aktuellen Situation: Es hängt davon ab, ob der Emulator eine solche von der physischen Tastatur unabhängige Logik unterstützt. Was RVM vermutlich nicht tut?

Volltreffer :smiley:

Es bietet keinerlei Optionen, soweit ich das sehen kann…