Bildschirmtastatur simulieren

Django, Flask, Bottle, WSGI, CGI…
nezzcarth
User
Beiträge: 1632
Registriert: Samstag 16. April 2011, 12:47

Pitwheazle hat geschrieben: Donnerstag 26. Januar 2023, 19:32 Also, nachdem ich die IP Adressen meines iPads und meines iPhones eingetragen habe geht es! Vorher ging es nicht.
Das wäre komisch, denn es ist wie gesagt nicht der Zweck dieser Einstellung, darüber Client-IPs freizuschalten: https://docs.djangoproject.com/en/4.1/r ... owed-hosts
Zuletzt geändert von nezzcarth am Donnerstag 26. Januar 2023, 19:38, insgesamt 1-mal geändert.
Benutzeravatar
sparrow
User
Beiträge: 4164
Registriert: Freitag 17. April 2009, 10:28

@Pitwheazle: Das kann nicht sein und macht auch keinen Sinn. Denn dann müsstest du ja die IP-Adresse eines jeden Rechners dort eintragen, der auf deine Webseite zugreifen könnte. Und das werden weltweit... sehr ... viele?
Pitwheazle
User
Beiträge: 869
Registriert: Sonntag 19. September 2021, 09:40

Oder doch nicht? Ich habe jetzt mal die IP Adressen von iPad und iPhone wieder rausgenommen und es geht immer noch. Ich hatte zwischenzeitlich in der Firewall den Port 8000 freigegeben - vielleicht lag es daran?
Benutzeravatar
sparrow
User
Beiträge: 4164
Registriert: Freitag 17. April 2009, 10:28

Das wird es eher sein.
nezzcarth
User
Beiträge: 1632
Registriert: Samstag 16. April 2011, 12:47

Pitwheazle hat geschrieben: Donnerstag 26. Januar 2023, 19:39 Oder doch nicht? Ich habe jetzt mal die IP Adressen von iPad und iPhone wieder rausgenommen und es geht immer noch. Ich hatte zwischenzeitlich in der Firewall den Port 8000 freigegeben - vielleicht lag es daran?
Wenn damit die Firewall auf dem (Windows-)Desktop-Rechner, auf dem der Server läuft, gemeint ist, dann lag es sehr sicher daran. Firewalls kann es an mehreren Stellen geben und wenn es eine andere war, müsste man zur Sicherheit ggf. noch mal abklären, dass da nicht aus Versehen etwas geöffnet wurde, was nicht (dauerhaft) geöffnet gehört. Bei Laptops (was es hier ja scheinbar nicht ist) sollte man da ebenfalls vorsichtig sein.
Pitwheazle
User
Beiträge: 869
Registriert: Sonntag 19. September 2021, 09:40

nezzcarth hat geschrieben: Donnerstag 26. Januar 2023, 19:50 Wenn damit die Firewall auf dem (Windows-)Desktop-Rechner, auf dem der Server läuft, gemeint ist, dann lag es sehr sicher daran. Firewalls kann es an mehreren Stellen geben und wenn es eine andere war, müsste man zur Sicherheit ggf. noch mal abklären, dass da nicht aus Versehen etwas geöffnet wurde, was nicht (dauerhaft) geöffnet gehört. Bei Laptops (was es hier ja scheinbar nicht ist) sollte man da ebenfalls vorsichtig sein.
Der lokale Server läuft auf einem Win10 Desktop Rechner. Ich hoffe ich habe da nichts falsch gemacht (auch bei Portfreigaben habe ich keine Ahnung).
Ich habe in der Defender Firewall unter "Eingehende Regeln" eine neue Regel erstellt. Mit ->Port ->TCP / Bestimmte lokale Ports (8000) -> Verbindung zulassen -> Privat und habe ihr den Namen "Django" gegeben.
Ich muss nochmals gestehen, dass ich nicht wirklich Ahnung habe, ob oder wie sich diese Portfreigabe auch nach außen auswirkt.
Blöderweise habe ich das ganze vorher schon mal durchprobiert und dabei anstelle von Port 8000 "alle lokalen Ports" gewählt, dieser Regel aber keinen Namen gegeben und diese finde ich auch nicht in der Liste.
Pitwheazle
User
Beiträge: 869
Registriert: Sonntag 19. September 2021, 09:40

Anfänglich ging es ja darum, dass ich die Bildschirmtastatur simulieren wollte.
Als Rückmeldung wollte ich hier noch anmerken, dass euer Tipp goldrichtig war und ich jetzt auf verschiedenen Geräten mein Projekt ausprobieren kann und dies sehr hilfreich ist.
Die Erwartung, dass in Feldern zur Zahleneingabe (siehe oben) nur eine Tastatur mit Zahlen erscheint war falsch, das geht wahrscheinlich nur mit einer App.
Und Ich wollte ja weiterhin sehen, ob meine Aufteilung mit "justify-content" sinnvoll ist - ist sie meines Erachtens nicht. Zur Eingabe der Ergebnisses, muss ich meisten die Anzeige verschieben und es erscheint mir sinnvoller, wenn nicht in der Mitte ein freier Bereich steht.
Was mich aber noch wundert: Auf meinem iPad (mit OS12) hat diese Änderung bisher keinen Einfluss, das Eingabefeld klebt unten.
Benutzeravatar
noisefloor
User
Beiträge: 3843
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

das geht wohl, indem man die HTML-Tag noch die passenden Attribute mitgibt, siehe z.B. https://css-tricks.com/finger-friendly- ... inputmode/. Habe ich selber auch noch nie ausprobiert.

Gruß, noisefloor
Benutzeravatar
grubenfox
User
Beiträge: 411
Registriert: Freitag 2. Dezember 2022, 15:49

Interessant.. was es so alles gibt. Wobei der Artikel von 2018 ist. Ob die Browser das noch immer so machen/können?
Wer geht vor und probiert das mal aus?
Benutzeravatar
noisefloor
User
Beiträge: 3843
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Also laut MDN ist das nach wie vor gültig: https://developer.mozilla.org/en-US/doc ... ment/input

Gruß, noisefloor
Pitwheazle
User
Beiträge: 869
Registriert: Sonntag 19. September 2021, 09:40

noisefloor hat geschrieben: Samstag 28. Januar 2023, 08:18 Also laut MDN ist das nach wie vor gültig: https://developer.mozilla.org/en-US/doc ... ment/input
Gruß, noisefloor
Ich dachte, dein erster Post zu diesem Thema bezöge sich auf die numerische Bildschirmtastatur. Hier ist davon aber keine Rede - oder übersehe ich da wieder was?
Aber ich habe "<label for="test">Test</label><input pattern="[0-9]*" ausprobiert: Auf meinem Tablet hat es keinen Effekt, auf meinem iPhone erscheint tatsächlich eine numerische Tastatur. Jetzt muss ich rausbekommen, wie ich das einbaue, ob ich dies speziell in die forms einbauen kann.
Benutzeravatar
sparrow
User
Beiträge: 4164
Registriert: Freitag 17. April 2009, 10:28

@Pitwheazle: Eigentlich ist HTML eine Auszeichnungssprache, mit der man den Client dazu auffordert Elemte anzuzeigen - das wie aber dem überlässt. So war zumindest mal die ursprüngliche Idee. Ja, seitdem hat sich mit CSS und all dem anderen Kram eine Menge getan, aber so ein bisschen ist davon schon noch geblieben.

Der Link von noisefloor beschreibt ganz gut, die verschiedenen Möglichkeiten, wie man den Browser dazu auffordern kann, die Eingabe eines Feldes auf numerische Werte zu begrenzen. Und er sagt ziemlich am Anfang, dass es folgende Möglichkeit gibt:
https://css-tricks.com/finger-friendly-numerical-inputs-with-inputmode/ hat geschrieben:Input fields that expect numerical values should have a numerical UI. Bringing up a number keyboard on small screens is easy on most platforms — just use a <input type="number">.
Es reicht also, einem input-Feld das Attribut type=number mitzugeben.

Das:

Code: Alles auswählen

<input type="number">
sollte also ein Input-Fehld erzeugen, bei dem der Client weiß, dass es ein Nummernfeld ist. Und dann kann er entscheiden, ob er eine entsprechende Tastatur einblendet. Am PC würde ich das eher seltsam finden. Und das Telefon könnte entscheiden, statt der "normalen" Tastatur zur Eingabe, die Zahlentastatur zu verwenden.

Das Beispiel mit dem pattern, das du versucht hast, ist laut dem Artikel wohl eher Apple-spezifisch.
Pitwheazle
User
Beiträge: 869
Registriert: Sonntag 19. September 2021, 09:40

Das mit der numerischen Eingabe hatte ich ja (ausnahmsweise) schon hinbekommen. Das hatte ich in meinem Eingangspost schon geschrieben:

Code: Alles auswählen

class AufgabeFormZahl(forms.Form):
    eingabe = forms.DecimalField(label='', max_digits=15,
                                decimal_places=5, widget=forms.NumberInput(attrs={'autofocus': True}))
    
class AufgabeFormStr(forms.Form):
    eingabe = forms.CharField(label='', localize=True, widget=forms.TextInput(attrs={'autofocus': True}))
[/quote]
Das funktioniert auch.
Ich dachte, dein Post bezöge sich auf:
Pitwheazle hat geschrieben: Freitag 27. Januar 2023, 13:10 ...
Die Erwartung, dass in Feldern zur Zahleneingabe (siehe oben) nur eine Tastatur mit Zahlen erscheint war falsch, das geht wahrscheinlich nur mit einer App.
... aber wie gesagt, auf meinem iPhone funktioniert das mit der numerischen Tastatur, mal sehen, ob es mir gelingt, das einzubauen. Ansonsten kommt halt die normale Tastatur und bei Eingabe eines nichtnumerischen Wertes, erscheint der Hinweis "Nummer eingeben".
Benutzeravatar
sparrow
User
Beiträge: 4164
Registriert: Freitag 17. April 2009, 10:28

Ja, aber deine Lösung wird auf der verlinkten Seite in meinen Augen als apple-spezifisch benannt.
Hast du mal das mit dem input=numeric auf dem IPhone, versucht, ob es auch die Nummerntastatur bringt? Denn das würde dann wohl auch auf allen mobilen Geräten funktionieren. Darum ging es mir.
Pitwheazle
User
Beiträge: 869
Registriert: Sonntag 19. September 2021, 09:40

So, ich habe das ausprobiert: Wenn ich gar nicht ändere, so ist mir aufgefallen, dass die angezeigte Tastatur bei den Aufgaben mit "eingabe = forms.DecimalField" schon auf Zahlen umgeschaltet ist (Es ist die normale Tastatur, es werden aber Zahlen angezeigt und man kann auf "ABC" wechseln). Bei "eingabe = forms.CharField" ist es umgekehrt, Buchstaben werden angezeigt und man kann zu Zahlen wechseln. Da sorgt anscheinend Django schon für.
Wenn ich in einem Testfeld "input=number" angebe, kommt wie in "forms.DecimalField", Zahlen mit Umschaltung auf ABC und mit "input=numeric" kommen Buchstaben mit Umschaltung auf Zahlen - das scheint also keine Funktion zu haben.
Benutzeravatar
noisefloor
User
Beiträge: 3843
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
Hier ist davon aber keine Rede - oder übersehe ich da wieder was?
Ja, tust du. Such' mal auf der Seite nach `inputmode`, das ist das, was du suchst.

Aber, wie schon gesagt wurde: erzwingen kann man das cross-plattform eher nicht. Man darf aber hoffen, dass alle Browser das zu darstellen, wie man das gerne sehen würde.

Gruß, noisefloor
Pitwheazle
User
Beiträge: 869
Registriert: Sonntag 19. September 2021, 09:40

Falls es noch jemanden interessiert: Ich habe auch das Geheimnis gelöst, warum der lokale Server von iPad und iPhone nicht gefunden wurden:
Ich habe meinen Rechentrainer auf meinem Surface ausprobiert und da klappte das wieder nicht. Ich habe mich erinnert, dass ich den Port in der Firewall freigeben musste und habe das auch geatn - nicht aber für öffentliche Netze. Jetzt habe ich aber festgestellt, dass mein Netzwerk als öffentlich angezeigt wird. ich habe das auf "privat" umgestellt - jetzt klappt das einwandfrei.
Antworten