Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Tastencodes in Datei speichern (https://www.delphipraxis.net/169460-tastencodes-datei-speichern.html)

Breager 21. Jul 2012 09:00

Tastencodes in Datei speichern
 
Hallo,

für ein kleines Spiel möchte ich dem Spieler gerne die Möglichkeit anbieten, die Tasten für die Steuerung selbst festzulegen. Bisher habe ich mit den Virtuellen Tastencodes gearbeitet. Nun frage ich mich, ob es sinnvoller ist, den Virtuellen Tastencode oder eher den Scancode zu speichern. Viele Spiele, die ich kenne, nutzen das amerikanische Tastaturlayout und z.B. auch die SDL-Bibliothek (wobei, ich das Gefühl habe, dass das intern geregelt ist). Wisst ihr, wie das generell üblich ist?
Vielen Dank schonmal.

Breager

himitsu 21. Jul 2012 10:47

AW: Tastencodes in Datei speichern
 
Sind die ScanCodes nicht tastaturabhängig?

Die VK_CODES sind aber immer eindeutig.


Also was sollte man da wohl besser verwenden?

Breager 21. Jul 2012 11:44

AW: Tastencodes in Datei speichern
 
Die Frage mag etwas doof sein, aber ich habe mich eben gefragt, wie das üblich ist. Bei den meisten Spielen, die ich kenne, erscheint beim Druck auf die Z-Taste ein Y, egal, welches Tastatur Layout ich nutze.

Viele Grüße

p80286 21. Jul 2012 21:22

AW: Tastencodes in Datei speichern
 
Doof ist die Frage nicht, aber es gibt durchaus Tastaturlayouts, die Tasten besitzen (ScanCodes), die bei anderen Tastaturen nicht vorkommen.
Meiner Meinung nach bist Du mit den VK-Codes auf der sicheren Seite, da sie Designunterschiede weitestgehend egalisieren. Was Du mit den Codes anfängst ist letztlich Deine Sache.

Gruß
K-H

himitsu 21. Jul 2012 22:08

AW: Tastencodes in Datei speichern
 
Zitat:

Zitat von Breager (Beitrag 1175481)
Die Frage mag etwas doof sein, aber ich habe mich eben gefragt, wie das üblich ist. Bei den meisten Spielen, die ich kenne, erscheint beim Druck auf die Z-Taste ein Y, egal, welches Tastatur Layout ich nutze.

Da war wer intelligent und wertet z.B. die Scancodes selber aus, ohne Berücksichtigung des aktiven Tastaturlayouts.

Breager 21. Jul 2012 23:04

AW: Tastencodes in Datei speichern
 
Danke für die Antworten. Hatte gerade die Idee, dass es vielleicht auch mit Direct Input im Zusammenhang stehen könnte. Wobei Direct Input für die Tastatureingabe nicht empfohlen wird. Ich erinnere mich auch, dass es in Dos-Spielen früher oft der Fall war, dass Y und Z vertauscht waren. Interessant ist nur, wie schon geschrieben, dass ich das schon bei sehr vielen Spielen gesehen habe. Wobei ich ehrlichgesagt nicht der große Zocker bin. Ich erinnere mich noch gut, dass ich es sehr nervig fand, nicht zu wissen, welche Tasten nun wirklich benutzt werden müssen. Die Virtuellen Tastencodes sagen mir auch eher zu.

Furtbichler 22. Jul 2012 07:09

AW: Tastencodes in Datei speichern
 
Na ja, das war schon immer so: Ein Ami denkt, es gibt nur dieses eine Layout und programmiert das eben so. Die Taste mit dem Scancode 12345 (k.A) ist das Y und dann wird das so programmiert. Der probiert das einfach aus, ist ja auch naheliegend.

Ähnliches gilt für CSV-Formate. Die denken, der Dezimaltrenner ist ein Punkt, das Listentrennzeichen ein Komma und dann wird das so hardkodiert.

Findet man übrigens bei allen Programmierern immer wieder, egal welcher Nationalität.

Sir Rufo 22. Jul 2012 08:04

AW: Tastencodes in Datei speichern
 
@Furtbichler :thumb:

aber das stimmt nicht
Zitat:

Zitat von Furtbichler (Beitrag 1175534)
Ein Ami denkt, es gibt nur dieses eine Layout und programmiert das eben so.

Das wird gar nicht in Betracht gezogen, dass es etwas anderes geben könnte :stupid:
siehe Inch und Fuß statt Meter

p80286 22. Jul 2012 11:07

AW: Tastencodes in Datei speichern
 
Unter Dos war es so, daß die Scancodes direkt vom Tastaturcontroler abgegriffen wurden, dadurch konnte man die numerische Tastatur und Pfeiltasten auseinander halten, bzw. NumLock ignorieren.
Ein weiterer Vorteil war es, ein paar Hundertstel zu sparen.

Gruß
K-H

himitsu 22. Jul 2012 11:37

AW: Tastencodes in Datei speichern
 
Zitat:

Zitat von p80286 (Beitrag 1175556)
dadurch konnte man die numerische Tastatur und Pfeiltasten auseinander halten, bzw. NumLock ignorieren.

Welches auch mit den VK_CODES geht. (NumBlock, LeftStrg, RightStrg, ...)

Zitat:

Zitat von Furtbichler (Beitrag 1175534)
Ähnliches gilt für CSV-Formate. Die denken, der Dezimaltrenner ist ein Punkt, das Listentrennzeichen ein Komma und dann wird das so hardkodiert.

Wobei ich das garnicht mal so schlecht finde ... ein einheitliches Formt.
Schlimmer sind die, welche die lokalisierten Zeichen/Formate verwenden.

z.B. "1,2" in eine INI/CSV/TCPIP/... speichern und dann knallt es, wenn man das auf einem System auslesen will, wo plötzlich der "." eingestellt ist (oder andersrum).

p80286 22. Jul 2012 12:01

AW: Tastencodes in Datei speichern
 
@Himitsu
Ich glaube, das hast Du falsch verstanden, es ging nur um die Scancodes unter DOS, VKs waren damals noch vollkommen unbekannt.

Gruß
K-H

Sir Rufo 22. Jul 2012 12:57

AW: Tastencodes in Datei speichern
 
Zitat:

Zitat von himitsu (Beitrag 1175565)
Zitat:

Zitat von Furtbichler (Beitrag 1175534)
Ähnliches gilt für CSV-Formate. Die denken, der Dezimaltrenner ist ein Punkt, das Listentrennzeichen ein Komma und dann wird das so hardkodiert.

Wobei ich das garnicht mal so schlecht finde ... ein einheitliches Formt.
Schlimmer sind die, welche die lokalisierten Zeichen/Formate verwenden.

z.B. "1,2" in eine INI/CSV/TCPIP/... speichern und dann knallt es, wenn man das auf einem System auslesen will, wo plötzlich der "." eingestellt ist (oder andersrum).

Für CSV gibt es RFC4180 und dort ist alles geregelt :)

p80286 22. Jul 2012 13:22

AW: Tastencodes in Datei speichern
 
Wenn sich Excel daran halten würde wäre alles in Butter.

Gruß
K-H

Sir Rufo 22. Jul 2012 13:46

AW: Tastencodes in Datei speichern
 
Zitat:

Zitat von p80286 (Beitrag 1175574)
Wenn sich Excel daran halten würde wäre alles in Butter.

Gruß
K-H

ja, MS hat da eine andere Auffassung und diese lässt sich eigentlich nur beim lesen der Beschreibung erahnen
Zitat:

CSV (Trennzeichen-getrennt) (*.csv)
Und da Excel ein ; als Trennzeichen benutzt müsste das eigentlich SSV (Semikolon-Separeted-Values) lauten :)
(oder ist das nur in der deutschen Version so :gruebel:)

EDIT: In der Tat, es weren die Regionseinstellungen benutzt ... tja RFC ist halt nix für Mikroweiche :mrgreen:

Breager 23. Jul 2012 19:52

AW: Tastencodes in Datei speichern
 
Zitat:

Zitat von Sir Rufo
Inch und Fuß statt Meter

Zitat:

Zitat von Film
...wegen des metrischen Systems. Die Europäer wissen gar nicht, was ein Viertelpfünder ist.

;-)

Hab jetzt mal einen Programmierer, der anscheinend die Scancodes oder zumindest das englische oder amerikansiche Tastaturlayout verwendet, angeschrieben. Bin gespannt ob ich eine Antwort bekomme.

Solange die Tasteneingabe in einem Spiel nicht konfiguierbar ist, ist das Einlesen der Scancodes durchaus sinnvoll, da die Tasten schließlich oft mit Absicht nebeneinander angeordnet sind. In vielen 3D-Spielen werden zum Bewegen des Spielers z.B. die Tasten A (links), S (zurück), D (rechts), W (vor) verwendet. In Frankreich hätte ich ein Problem, da die Hälfe dieser vier Tasten anders (und sehr ungünstig) angeordnet sind. Zumindest besteht aber die Möglichkeit, die Scancodes in virtuelle Tastencodes umzuwandeln. Denn, wie schon geschrieben, nervig fand ich immer die Suche nach den richtigen Zeichen. Die Darstellung der OEM-Tastencodes ist auch so eine Sache, da diese sich länderspezifisch unterscheiden.

Viele Grüße

p80286 23. Jul 2012 21:00

AW: Tastencodes in Datei speichern
 
Vielleicht hilft Dir das weiter:
http://msdn.microsoft.com/en-us/library/ms892480.aspx
http://msdn.microsoft.com/en-us/library/ms892159.aspx

Gruß
K-H

Furtbichler 24. Jul 2012 06:13

AW: Tastencodes in Datei speichern
 
Wieso überlässt Du es nicht einfach dem Anwender, seine WASD-Tasten selbst auszusuchen?

Thom 24. Jul 2012 08:39

AW: Tastencodes in Datei speichern
 
Zitat:

Zitat von Furtbichler (Beitrag 1175727)
Wieso überlässt Du es nicht einfach dem Anwender, seine WASD-Tasten selbst auszusuchen?

Vielleicht wäre es ganz hilfreich für die vielen Fragesteller, denen Du immer wieder Deine Meinung aufnötigst, ohne auf die eigentliche Frage zu antworten, den Inhalt des Problems etwas genauer zu lesen:
Zitat:

Zitat von Breager (Beitrag 1175471)
...für ein kleines Spiel möchte ich dem Spieler gerne die Möglichkeit anbieten, die Tasten für die Steuerung selbst festzulegen.

An Daniel und die Moderatoren:
Weshalb unterbindet Ihr nicht diese ständigen, besserwisserischen und belehrenden Beiträge einiger Forenmitglieder? Platzt hingegen einem Fragesteller bei dieser permanenten Bevormundung der Geduldsfaden, wird er angezählt oder sogar der Thread geschlossen. Ich glaube nicht, daß das für das Klima in diesem Forum förderlich ist. Threads zu diesem Thema gibt es schon genug - ändern tut sich aber leider nichts...

Breager 24. Jul 2012 16:44

AW: Tastencodes in Datei speichern
 
@p80286: Danke für die Links, das hilft mir schon weiter.

@Furtbichler: Das war doch nur ein Beispiel, in dem ich demonstrieren wollte, dass es durchaus sinnvoll sein kann, die Scancodes zu verwenden. Allerdings würde ich in diesem Beispiel die Function MapVirtualKey verwenden, um den Scancode in einen Virtuellen Tastencode umzuwandeln. In meinem Spiel biete ich für alle Tasten die Möglichkeit der Konfiguration an.

Für mich wird das im Endeffekt nicht relevant sein, da sich mein Spiel bestimmt nicht international verbreitet ;-) Mich interessiert aber dennoch, wie das allgmein üblich ist und aus welchen Gründen.
Interessant finde ich, dass in den Spielen, die ich getestet habe z.B. zwischen der linken und rechten CTRL Taste differenziert wird, der Scancode dieser Tasten ist jedoch identisch.
Zitat:

Zitat von himitsu
Wobei ich das garnicht mal so schlecht finde ... ein einheitliches Format.
Schlimmer sind die, welche die lokalisierten Zeichen/Formate verwenden.

Vielleicht auch ein Grund für viele Entwickler, die Scancodes zu verwenden, auch wenns etwas nervig ist. Wie schon geschreiben, sind die OEM-Tastencodes leider länderspezifisch. Ich tendiere aber dennoch zu himitsu's Vorschlag, die Virtuellen Tastencodes zu speichern, auch wenn sich die Anordnung der Tasten dadurch ändern kann.

@Thom: So schnell platzt mir nicht der Geduldsfaden, manchmal habe ich aber auch Selbstzweifel, ob ich mich richtig ausgedrückt habe ;-) Bitte nicht aufregen, das ist es nicht wert. Man kann über alles reden.:)

himitsu 24. Jul 2012 17:00

AW: Tastencodes in Datei speichern
 
Och, ich würde einfach TShortCut zum Speichern verwenden.
PS: Die kennt man von Menüs und (z.B. bei TMenuItem kann kan das angeben und im OI gibt's nen Property-Editor dafür)

Dafür gibt es auch schon fertige Komponenten für die Eingabe benutzen (Delphi-Referenz durchsuchenTHotKey), welche man in seinen Optionsdialog klatschen darf.
Bzw. es gibt einzelne Funktionen, welche das auch in einen lesbaren String umwandeln und zurück.

Zitat:

Zitat von Breager (Beitrag 1175790)
auch wenn sich die Anordnung der Tasten dadurch ändern kann.

Das hat aber einen Vorteil ... wenn du sagst "press [Y]es or [N]o", dann dann kann man auch beruhigt auf [Y] drücken und muß nicht auf [Z] ausweichen. :stupid:

Breager 24. Jul 2012 22:52

AW: Tastencodes in Datei speichern
 
Zitat:

Zitat von himitsu
Och, ich würde einfach TShortCut zum Speichern verwenden.
PS: Die kennt man von Menüs und (z.B. bei TMenuItem kann kan das angeben und im OI gibt's nen Property-Editor dafür)

Danke für den Tipp. Ich benutze für das Spiel jedoch nicht die VCL. Und wenn ich TShortcut verwende, besteht die Gefahr, dass Zeichen/Buchstaben vorkommen, die in meinem Zeichensatz gar nicht enthalten sind ;-). Hab mir für die Virtuellen Tastencodes eine eigene kleine Tabelle erstellt und unterstütze die länder-/sprachspezifischen OEM-Tastencodes einfach nicht mehr. Laut MSDN werden die Buchstaben A..Z und die Ziffern 0..9 auf allen Tastaturen unterstützt.

Viele Grüße

Furtbichler 25. Jul 2012 07:30

AW: Tastencodes in Datei speichern
 
Zitat:

Zitat von Breager (Beitrag 1175790)
@Furtbichler: Das war doch nur ein Beispiel, in dem ich demonstrieren wollte, dass es durchaus sinnvoll sein kann...

Sowas passiert, wenn man im Urlaub per WAP an einer Diskussion teilnehmen will und nicht alles so genau liest.
Zitat:

Zitat von Thom (Beitrag 1175737)
...denen Du immer wieder Deine Meinung aufnötigst...besserwisserischen und belehrenden Beiträge einiger Forenmitglieder?

Ist dein Niveau das Denkmal deines Verstandes?
Zitat:

Ich glaube nicht, daß das für das Klima in diesem Forum förderlich ist. ...
Du redest von deinem Beitrag?

Ich habe Dir per PN den Vorschlag unterbreitet, derartige Äußerungen in der Abgeschiedenheit einer PN zu verbreiten.

Für das Klima eines Forums wäre es sicherlich förderlicher, wenn Äußerungen dieser Art (die ich als sehr beleidigend empfinde) einfach ausbleiben würden.

Ich kann nur kopfschüttelnd zur Kenntnis nehmen, das Du dich nicht unter Kontrolle hast und diese Form der Kommunikation neuerdings wohl zu deinem Repertoire zu zählen ist.

Jonas Shinaniganz 25. Jul 2012 08:51

AW: Tastencodes in Datei speichern
 
Ich war mal in einer Streitschlichter AG auf meinem ehm Gymnasium.
-> Auf mich wirkt Ihr BEIDE wie sehr intelligente Menschen, eine Fehde ist doch völlig sinnlos :wink:

Im Grunde habt Ihr bestimmt Beide Recht und Unrecht, Respekt im Umgang miteinander sollte aber nicht darunter leiden.

Das eigentliche Problem sind absolute Formulierungen wie "immer wieder... ... aufnötigen" "ständig" "permanent".

Wenn man das als Neuling im Forum (und warscheinlich im Leben viel unerfahrenere Person) wie Ich erkannt habe, dass es nicht nötig ist so zu sticheln, solltet vielleicht auch Ihr kurz drüber nachdenken ;)

Eine gutemütiger Handshake würde an dieser Stelle angebracht sein. So macht Ihr euch nur lächerlich.

Ich sage jetzt ja auch nicht einfach:
"Da werden mal wieder ganz gewaltig soziale Kompetenzen unterschätzt. Typisch."

Grüße.

Bummi 25. Jul 2012 09:42

AW: Tastencodes in Datei speichern
 
:thumb:

Furtbichler 25. Jul 2012 11:22

AW: Tastencodes in Datei speichern
 
Nicht der Rede wert. Ich bin angepöbelt worden, sage, das das nivaulos ist (hätte ich auch sein lassen können) und damit ist für mich die Sache erledigt. Es artet ja nicht aus.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:06 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz