Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

11.05.2003, 18:35

DInput Scancodes zu Char

Hallo,

Ich bin dabei ein GUI-System für Spiele zu entwickeln, aber da hab ich so meine Probleme bei einer Input-Box.
Ich krieg einfach nicht hin, dass aus den Scancodes, die man von DirectInput kriegt char-Variablen werden.
Ich hab echt schon alles mögliche probiert aber nix funktioniert richtig.
Könnte mir bitte jemand seinen code geben?

m.f.G. Daniel Lang
Every time you download a warez, god kills a programmer. So please, think of the programmers!

2

11.05.2003, 18:45

sprintf(bufferalschar[512]oderso,"int %d unsigned %u char %c",int,unsigned,char);
*g*

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

3

11.05.2003, 19:04

@ghostie: Ja, sicher.

@fireface: Ich habe mir da einfach eine große Tabelle gemacht, die jedem DirectInput-Code einen Char zuordnet. So in der Art:

char DInputToChar[256];
DInputToChar[DIK_A] = 'a';
DInputToChar[DIK_B] = 'b';
usw.

Dann machst Du noch ein Array für den Fall, dass Shift gedrückt ist (da kämen dann 'A', 'B' usw. rein) und eines für Alt Gr ('@', '\'...).

4

11.05.2003, 19:29

@ Fireface
wie komst du den herher?
ebah rutangiS reniem ni relheF 01 rebü hci ssad, etniem latkraF!

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

5

11.05.2003, 19:40

@ghostie: War nicht böse gemeint. Aber die Frage scheinst Du Dir echt nicht durchgelesen zu haben.

6

11.05.2003, 20:17

@lukuku:
Das selbe wollt ich dich grad fragen...
Ich komm indem her, dass ich schon ziemlich lange regelmäßig auf diese Seite schaue, weil mich einfach die Tribase - Engine interessiert.

@David:
Dass du das so machst hab ich mitgekriegt, weil du mir ja schon mal die Klasse tbGUI gemailt hast... aber ich könnte dabei auch gleich einen aufkleber draufmachen "unflexibel und langsam".

Mein bisheriger Code:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
    int GetKeyboardChar (char *aResult)
    {
        HKL         Layout = GetKeyboardLayout(0);
        BYTE        kState[256];
        if (!GetKeyboardState(kState))
            return 0;

        for (int i=0; i<255; i++)
        if (m_pInput->Keybuffer[i] & 0x80)
            return ToAsciiEx(MapVirtualKeyEx(i, 1, Layout), i, kState, (USHORT *)aResult, 0, Layout);

        return 0;
    }


Irgendwie so müsste das funktionieren.
Every time you download a warez, god kills a programmer. So please, think of the programmers!

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

7

11.05.2003, 20:20

Unflexibel: Ja. Aber ich denke nicht, dass sich Tastaturen so wahnsinnig ändern werden.
Langsam: Nein, absolut nicht! Was könnte schneller sein, als einfach in einer Tabelle nachzuschauen?

8

11.05.2003, 20:29

Das jetzt plötzlich Microsoft keine Space-Tastatur rausbringt ist mir auch klar, aber einen großen Haken hat die Sache doch:
Du kannst keine Sonderzeichen wie #,+,+,... und auch keine Umlaute erhalten.
Wenn du das jetzt abstreitest dann würd mich das echt interessieren, immerhin werkle ich jetzt schon einen ganzen Monat an dieser beschissenen Funktion.
Every time you download a warez, god kills a programmer. So please, think of the programmers!

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

9

11.05.2003, 20:47

Also, ich kann bei meiner GUI-Klasse alle Zeichen abfangen. Auch Sonderzeichen. Die Tasten haben bei DirectInput nur andere Namen, nämlich die für die amerikanische Tastatur. Eine Ö-Taste gibt's da ja nicht, aber es gibt eine andere Taste, die bei uns dem Ö entspricht.
Wenn Du die Dateien noch hast, dann kannst Du sehen, welche Tasten das im einzelnen sind.

10

11.05.2003, 21:04

ist ja geil!
leider hab ich die files nicht mehr...
Wäre aber echt nett von dir wenn du die nochmal schicken könntest.
Im Buch steht ja auch nix von.
Every time you download a warez, god kills a programmer. So please, think of the programmers!

Werbeanzeige