[gelöst] UTF8Key: Return/Enter vom Zahlenblock erkennen.

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Erwin
Beiträge: 286
Registriert: Mi 16. Sep 2009, 14:15
OS, Lazarus, FPC: Xubuntu 22.04 / x86_64_linux-gtk 2 / L 2.2.0 / FPC 3.2.2

Re: [gelöst] UTF8Key: Return/Enter vom Zahlenblock erkennen.

Beitrag von Erwin »

Da fällt mir noch eine (zumindest für mich) wichtige Frage ein.
Was ist Sinnvoller:

Code: Alles auswählen

case key of
  VK_Back: Form1.Caption:='Back-Taste'; // Dezimalwert 9, Hexwert $08
  VK_A: Form1.Caption:='A'; // Dezimalwert 65, Hexwert  $41
  VK_B: Form1.Caption:='B'; // Dezimalwert 66, Hexwert  $42
  VK_C: Form1.Caption:='C'; // Dezimalwert 67, Hexwert  $43
end;
oder

Code: Alles auswählen

case key of
  VK_A: Form1.Caption:='A'; // Dezimalwert 65, Hexwert  $41
  VK_B: Form1.Caption:='B'; // Dezimalwert 66, Hexwert  $42
  VK_Back: Form1.Caption:='Back-Taste'; // Dezimalwert 9, Hexwert $08
  VK_C: Form1.Caption:='C'; // Dezimalwert 67, Hexwert  $43
end;
Was die Reihenfolge betrifft. Was findet case dann schneller bzw. besser? Wenn es nach Dezimalwert und Hexwert geht, das Erstere? Oder wenn nach der Beschreibung selbst (VK_xx), dem Alphabet nach sortiert ist, das Zweitere?
Lazarus 2.2.0 / FP 3.2.4

Benutzeravatar
theo
Beiträge: 10500
Registriert: Mo 11. Sep 2006, 19:01

Re: [gelöst] UTF8Key: Return/Enter vom Zahlenblock erkennen.

Beitrag von theo »

Das spielt mMn keine Rolle. Den Unterschied wirst du kaum messen können.
Du hast wichtigeres zu tun! :lol:

ArchChem
Beiträge: 83
Registriert: Mo 11. Jul 2022, 10:41

Re: [gelöst] UTF8Key: Return/Enter vom Zahlenblock erkennen.

Beitrag von ArchChem »

Erwin hat geschrieben:
Do 28. Sep 2023, 18:45
VK_Unknown ist mir nicht aufgefallen. Komisch? Vielleicht übersehen?
Die einzelnen Keys sind in der Unit LCLType enthalten. Hier befindet sich die Dokumentation zu VK_Unknown: https://lazarus-ccr.sourceforge.io/docs ... known.html.
Ansonsten hat auch der Objektinspektor bei Lazarus eine entsprechende kurze Erklärung, wenn du auf das OnKeyDown/Up/Press-Ereignis klickst.

Benutzeravatar
Niesi
Lazarusforum e. V.
Beiträge: 338
Registriert: So 26. Jun 2016, 19:44
OS, Lazarus, FPC: Linux Mint Cinnamon (Windows wenn notwendig), Lazarus 3.0 FPC 3.3.1

Re: [gelöst] UTF8Key: Return/Enter vom Zahlenblock erkennen.

Beitrag von Niesi »

.

Das Thema ist wohl für einige (einschließlich mir) "undurchsichtig".

Ich habe mir dazu mal eine kleine App geschrieben,
die anzeigt, was wann in

- OnKeyPress
- OnKeyDown
- OnKeyUp
- OnUTF8KeyPress

jeweils passiert oder "geliefert" wird, wenn Tasten gedrückt oder losgelassen werden.

Die CheckBox zeigt jeweils an, ob die procedure überhaupt durchlaufen wurde.

Blöd sieht es aus, wenn "ENTER" gedückt wird, aber so ist es nun mal ...
OnKeyPressDownUp_1.png
OnKeyPressDownUp_1.png (10.41 KiB) 4810 mal betrachtet
OnKeyPressDownUp_2.png
OnKeyPressDownUp_2.png (9.51 KiB) 4810 mal betrachtet
OnKeyPressDownUp.7z
(159.06 KiB) 87-mal heruntergeladen
Wissen ist das einzige Gut, das sich vermehrt, wenn es geteilt wird ...

Erwin
Beiträge: 286
Registriert: Mi 16. Sep 2009, 14:15
OS, Lazarus, FPC: Xubuntu 22.04 / x86_64_linux-gtk 2 / L 2.2.0 / FPC 3.2.2

Re: [gelöst] UTF8Key: Return/Enter vom Zahlenblock erkennen.

Beitrag von Erwin »

Das ganze hat doch weniger als 3 Stunden gedauert.

Niesl, das Ergebnis ist verwirrend. Obwohl doch eigentlich KeyUp und KeyDown doch die gleichen Tasten sozusagen erkennen (sollten), geben beide ein anderes Zeichen weiter? aua
Lazarus 2.2.0 / FP 3.2.4

wp_xyz
Beiträge: 4895
Registriert: Fr 8. Apr 2011, 09:01

Re: [gelöst] UTF8Key: Return/Enter vom Zahlenblock erkennen.

Beitrag von wp_xyz »

Naja, das ganze sind mehrere Events, die in einem Schnappschuss zusammengefasst sind, und man sieht nur immer das letzte Ereignis. Bei den Sonderzeichen, wie dem '/', wird nämlich die Umschalt-Taste benötigt und die wird als letztes losgelassen und registriert, und beim Keydown wird die Taste "7" als letztes gedrückt und registriert.

Ich habe gestern sowas ähnliches geschrieben, in dem die Events in einem Memo aufgelistet werden, und da sieht man die Abfolge der Ereignisse. Bei der Eingabe von '/' wird zunächst die Umschalttaste gedrückt (--> Keydown mit Key=16 (=VK_SHIFT)), dann KeyDown mit "7" (Key = 55 = $37 = VK_7). Die Taste wird von OnUTF8KeyPress als Zeichen '/' = #47 erkannt, dann genauso auch von OnKeyPress. Schließlich wird die "7" wieder losgelassen (--> KeyUp mit Key=55), und als letztes folgt die ShiftTaste (OnKeyUp mit Key = 16).
Dateianhänge
keyboard_events.png
keyboard_events.png (8.58 KiB) 4794 mal betrachtet
keyboard_events.zip
(2.4 KiB) 83-mal heruntergeladen

Erwin
Beiträge: 286
Registriert: Mi 16. Sep 2009, 14:15
OS, Lazarus, FPC: Xubuntu 22.04 / x86_64_linux-gtk 2 / L 2.2.0 / FPC 3.2.2

Re: [gelöst] UTF8Key: Return/Enter vom Zahlenblock erkennen.

Beitrag von Erwin »

Schönes durcheinander, finde ich.

Ach ja, bin leider über ein Problem gestoßen:
Während

Code: Alles auswählen

if ssAlt in Shift then ...
wunderbar klappt, was aber leider das falsche Alt ist, wird

Code: Alles auswählen

if ssAltGr in Shift then ...
sozusagen ignoriert. Da passiert dann nichts. Aber Existieren tut es ja, das ssAltGr, sonst würde der Compiler (?) ja jammern. Was übersehe ich da?
Lazarus 2.2.0 / FP 3.2.4

Erwin
Beiträge: 286
Registriert: Mi 16. Sep 2009, 14:15
OS, Lazarus, FPC: Xubuntu 22.04 / x86_64_linux-gtk 2 / L 2.2.0 / FPC 3.2.2

Re: [gelöst] UTF8Key: Return/Enter vom Zahlenblock erkennen.

Beitrag von Erwin »

Mir fiel ein, dass ich wichtige Information vergessen hatte: Nutze Linux-BS. So was soll ja oft mit eine Rolle bei Problemen spielen?

Inzwischen fand ich heraus, dass Alt und AltGr, beide als ssAlt erkannt wird. Aber so bald ich dann eine weitere Taste drücke, verschwindet ssAlt von AltGr, während bei Alt ssAlt weiterhin vorhanden ist. ? Eine weitere Taste scheint also AltGr zu deaktivieren (welches aber scheinbar eh nicht wirklich aktiv war).
Lazarus 2.2.0 / FP 3.2.4

wp_xyz
Beiträge: 4895
Registriert: Fr 8. Apr 2011, 09:01

Re: [gelöst] UTF8Key: Return/Enter vom Zahlenblock erkennen.

Beitrag von wp_xyz »

Erwin hat geschrieben:
Fr 29. Sep 2023, 16:27
Inzwischen fand ich heraus, dass Alt und AltGr, beide als ssAlt erkannt wird. Aber so bald ich dann eine weitere Taste drücke, verschwindet ssAlt von AltGr, während bei Alt ssAlt weiterhin vorhanden ist. ? Eine weitere Taste scheint also AltGr zu deaktivieren (welches aber scheinbar eh nicht wirklich aktiv war).
AltGr löst zwei Tasten-Events aus: Ctrl+Alt.

Im Screenshot wird das Zeichen '@' eingegeben, also AltGr+q.
- Wenn AltGr gedrückt wird, kommt zuerst Keydown mit Taste 17 = VK_CONTROL, dann Taste 18 = VK_MENU (= ALt) in einem zweiten Event.
- Dann Keydown für 'q' (Taste 81 = $51 = VK_Q)
- UTF8KeyPress und KeyPress erkennen das '@'
- Zum Schluss wird zuerst das 'q' losgelassen
- Dann wird AltGr losgelassen, was wiederum die beiden Tasten 17 und 18 sendet.

Kannst ja einmal versuchen, zuerst die linke CTRL, dann die linke ALT-Taste und dann das 'q' zu drücken. Was ergibt das?
Dateianhänge
keyboard_events_altgr.png
keyboard_events_altgr.png (9.93 KiB) 4780 mal betrachtet

Erwin
Beiträge: 286
Registriert: Mi 16. Sep 2009, 14:15
OS, Lazarus, FPC: Xubuntu 22.04 / x86_64_linux-gtk 2 / L 2.2.0 / FPC 3.2.2

Re: [gelöst] UTF8Key: Return/Enter vom Zahlenblock erkennen.

Beitrag von Erwin »

wp_xyz hat geschrieben:
Fr 29. Sep 2023, 20:50
AltGr löst zwei Tasten-Events aus: Ctrl+Alt.
Kann sein, hilft mir aber nicht weiter. Weil dies habe ich auch schon getestet. Geht nicht, bzw. ersetzt nicht AltGr. Wenn ich dann beide Drücke bekomme ich das Zeichen @ wie bei AltGr, aber es soll ja mit AltGr allein gehen, ohne einer 3. bzw. statt mit STRG und Alt (und q) Tasten gehen.

Habe aber das Problem anders gelöst. Mit einer Globalen Variable, die sich dann merkt, wenn die AltGr-Taste gedrückt wurde, welches aber eben als ssAlt erkannt wird, aber sobald man eine weitere Taste drückt, vergisst er dies eben wieder. Mit der Variable eben nicht. Aber so wie es ist, hat es 2 Nachteile: Für jedes Sonderzeichen muss ich jedes mal vorher AltGr drücken. Und wenn ich AltGr (ohne andere Taste zu drücken) los lasse, ist es immer noch aktiv (bzw. die Variable auf True) bis ich eine andere Taste drücke. Aber damit kann ich insgesamt (zumindest vorerst) gut leben. Dennoch schade, dass AltGr solchen Ärger macht.
Lazarus 2.2.0 / FP 3.2.4

Eb
Lazarusforum e. V.
Beiträge: 238
Registriert: Di 5. Feb 2008, 15:32
OS, Lazarus, FPC: Linux Mint - Laz 2.2.0
CPU-Target: 64Bit
Wohnort: Stuttgart

Re: [gelöst] UTF8Key: Return/Enter vom Zahlenblock erkennen.

Beitrag von Eb »

wp_xyz hat geschrieben:
Fr 29. Sep 2023, 15:35
....
Ich habe gestern sowas ähnliches geschrieben, in dem die Events in einem Memo aufgelistet werden,
...
Was für ein geniales Beispiel.
Vielen Dank !!

Benutzeravatar
Niesi
Lazarusforum e. V.
Beiträge: 338
Registriert: So 26. Jun 2016, 19:44
OS, Lazarus, FPC: Linux Mint Cinnamon (Windows wenn notwendig), Lazarus 3.0 FPC 3.3.1

Re: [gelöst] UTF8Key: Return/Enter vom Zahlenblock erkennen.

Beitrag von Niesi »

wp_xyz hat geschrieben:
Fr 29. Sep 2023, 15:35
Naja, das ganze sind mehrere Events, die in einem Schnappschuss zusammengefasst sind, und man sieht nur immer das letzte Ereignis. Bei den Sonderzeichen, wie dem '/', wird nämlich die Umschalt-Taste benötigt und die wird als letztes losgelassen und registriert, und beim Keydown wird die Taste "7" als letztes gedrückt und registriert.

Ich habe gestern sowas ähnliches geschrieben, in dem die Events in einem Memo aufgelistet werden, und da sieht man die Abfolge der Ereignisse. Bei der Eingabe von '/' wird zunächst die Umschalttaste gedrückt (--> Keydown mit Key=16 (=VK_SHIFT)), dann KeyDown mit "7" (Key = 55 = $37 = VK_7). Die Taste wird von OnUTF8KeyPress als Zeichen '/' = #47 erkannt, dann genauso auch von OnKeyPress. Schließlich wird die "7" wieder losgelassen (--> KeyUp mit Key=55), und als letztes folgt die ShiftTaste (OnKeyUp mit Key = 16).
Stimmt - mit einem Memo ist es besser. Da ist dann auch die Reaktion erkennbar, wenn eine Taste gedrückt gehalten wird ...
OnKeyPressDownUp_3.png
OnKeyPressDownUp_3.png (35.44 KiB) 4755 mal betrachtet
OnKeyPressDownUp.7z
(161.2 KiB) 82-mal heruntergeladen
Wissen ist das einzige Gut, das sich vermehrt, wenn es geteilt wird ...

Benutzeravatar
theo
Beiträge: 10500
Registriert: Mo 11. Sep 2006, 19:01

Re: [gelöst] UTF8Key: Return/Enter vom Zahlenblock erkennen.

Beitrag von theo »

Wenn man noch an die "Quelle" gehen möchte, um z.B. herauszufinden ob ein Problem bei Lazarus oder am System liegt, kann man auf Linux auch das Tool "xev" verwenden.
Damit werden alle X-Events ausgegeben.
Im Beispiel AltGr + E = "€".
Dateianhänge
xev_euro.png
xev_euro.png (169.97 KiB) 4752 mal betrachtet

Antworten