[C/C++] Tastaturcodes abfragen?!

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Characticl D, 19. März 2010 .

Schlagworte:
  1. 19. März 2010
    Tastaturcodes abfragen?!

    Hallo Leute,

    ich habe ein paar Fragen zu den Tastaturcodes.

    Habe mir ein ganz kleines Programm geschrieben, dass mir den Code von der gerade gedrückten Taste ausgibt.

    Spoiler
    Code:
    #include <iostream>
    #include <conio.h>
    #include <cstdlib>
    
    using namespace std;
    
    int main()
    {
     int pressed;
    
     do
     {
     pressed = getch();
     
     cout << pressed << endl;
    
     
     } while(true);
     
     
    
     system("cls");
     cout << "Zum Beenden Taste druecken..." << endl;
     getch();
     return 0;
    }
    


    Drücke ich 'A' gibt es mir zum Beispiel 65 aus, bei 'b' 98 usw.
    Das sind ja die ganz normalen ASCII-Werte der Buchstaben.

    Wenn ich jetzt z.B. die obere Pfeiltaste drücke, dann gibt es untereinander 224 und 72 aus.

    Wie kommt das zustande?
    Wie frage ich STRG, NUM, etc. ab? Weil da macht das Programm gar nix.
    Gibt es für sowas eine Tabelle?
    Sind die Codes für jede Tastatur gleich?


    Ich hoffe mal ihr könnt mir meine Fragen beantworten
     
  2. 19. März 2010
    AW: Tastaturcodes abfragen?!

    Hey, ich glaube die Tabelle müsste dir helfen.

    Virtual Key Codes

    Virtual-Key Codes (Windows CE 5.0)

    Diese sind bei jeder tastatur gleich.
     
  3. 19. März 2010
    AW: Tastaturcodes abfragen?!

    Wie kommt das zustande?
    Pfeil- und andere Tasten haben keinen ASCII-Code

    Wie frage ich STRG, NUM, etc. ab? Weil da macht das Programm gar nix.
    Mit getch: Sondertasten werden unter Windows(!) mit 0xE0 (=224) angekündigt und beim zweiten Aufruf wird dann die Sondertaste ausgegeben. Doch dafür hab ich bisher keine Tabelle gefunden, d.h. du musst die Codes selber herausfinden Aber die sind immer gleich (unter Windows).
    Mit WinAPI: GetAsyncKeyState() mit zugehörigem Virtual-Key Code aufrufen.

    Gibt es für sowas eine Tabelle? && Sind die Codes für jede Tastatur gleich?
    ASCII Codes sind immer gleich, Virtual-Key Codes auch.
     
  4. 19. März 2010
    AW: Tastaturcodes abfragen?!

    OK, nun sind die Virtual Key Codes ja hexadezimal...
    Wie frage ich das ab? Bis jetzt frage ich ja dezimal ab.

    Ich würde dann abfragen, ob die gedrückte Taste 224, dann noch mal abfragen und wenn die nächste Abfrage 72 ist, weiß ich, dass es die linke Pfeiltaste ist.

    Wie kann ich nach diesen Hex-Werten abfragen?
     
  5. 19. März 2010
    AW: Tastaturcodes abfragen?!

    Ich würde das ganze in eine Funktion packen:

    Code:
    int getKey()
    {
     int pressed = getch();
     if (pressed == 0xE0) //das gleiche wie (pressed == 224), 0x leitet Hexzahlen ein
     {
     pressed = 256 + getch(); //damit du nicht mit ASCII/ANSI-Codes kollidierst
     }
    
     return pressed;
    }
    So weißt du dann bei Rückgabewerten über 256, dass eine Sondertaste gedrückt wurde, und kannst sie dementsprechend auswerten.

    P.S.: Das hat nichts mit Virtual-Key Codes zu tun. Die brauchst du nur bei Verwendung der Windows API. z.B. ist der VK für die Pfeil nach oben Taste 38 (0x26)... wie du siehst, nicht das gleiche wie das, was getch() ausgibt.
     
  6. 19. März 2010
    AW: Tastaturcodes abfragen?!

    In C bzw. C++ ist es egal, ob du ne Zahl in Hexadezimaler oder dezimaler Schreibweise angibst:

    Code:
    if (224 == 0xE0) bla();
     
  7. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.