Arrowkeys



  • Hey ^^ ich hab mal ne frage, in einigen programmen dachte ich mir dass ich gerne mal arrow keys benutzen würde für die funktionen.

    die frage ist, wie ich die Pfeiltasten einlese.. sowas wie Escape hat ja noch nen ascii wert. aber für die pfeiltasten find cih irgendwie nichts.
    wäre nett wenn man mir helfen könnte ^^



  • Hi,

    ist plattformabhängig.

    Bei nem typischen Windows-Compiler sollte die (nicht zum Standard gehörende) <conio.h> dabei sein. Da hast du kbhit() und getch() oder wie auch immer die heißen, die können Sowas.

    Für Unix-Systeme gibt es die ncurses. (Mit Cygwin aber auch unter Windows benutzbar).

    Guck mal in den FAQs der einzelnen Betriebssysteme (Win32-Konsole, WinAPI, Linux/Unix).
    oder Google: conio.h, getch, ncurses

    Grüße, Xantus.



  • #include <stdio.h>
    #include <conio.h>
    
    int main() {
        unsigned char test=0;
        while(1) {
                 if( kbhit() ) {
                               test=getch();
                               break;
                 }
        }
        printf("%u\n\n",test);
    
        //if( Pfeiltaste ) { ... }
    
        system("pause");
    }
    

    also die abfrage hab ich ja, mein wie ich die Pfeiltaste ermittele.
    und mein IDE ist Dev-Cpp. dementsprechend wäre ne antwort die nur für C++ gilt ebenso hilfreich. (wollte jetzt nicht das gleiche 2 mal posten)

    bzw wenn man scancodes (so heissen die dinger glaub ich die jede taste hat) benutzen würde müsste das ja theoretisch gehen. nur weiss ich nicht wie ich die einbinden solle .. da wäre mir ascii schon lieber daman ja

    #define Key_up 0x"hexwert"
    

    machen könnte, um eine einfache abfrage zu erstellen.



  • gib doch die werte einfach aus:

    while(1) 
       if(kbhit())
          printf ("%u\n", getch());
    

    🙂



  • schau dir meinen code doch an..
    das hab ich doch versucht.. 😣 da kommt aber 0 oder 224 raus und das wäre laut ascii tabelle "ó" oder halt " ".



  • Meines, etwas verschütteten Wissens nach, gibt

    getch()
    

    IMHO bei den Pfeiltasten zwei Werte in Folge aus. Du solltest vielleicht mal das

    break
    

    aus deinem Code entfernen.



  • macht keinen unterschied.

    aber naja wenn der einen wert ausgibt.. wie kann man damit dann arbeiten?



  • int main() 
    {
      while(1)
        if(kbhit() && getch() == 0xe0 && kbhit())
          switch (getch())
          {
            case 0x48:
            puts ("up");
            break;
    
            case 0x4d:
            puts ("right");
            break;
    
            case 0x50:
            puts ("down");
            break;
    
            case 0x4b:
            puts ("left");
            break;      
          }
    }
    

    🙂



  • fricky schrieb:

    int main() 
    {
      while(1)
        if(kbhit() && getch() == 0xe0 && kbhit())
          switch (getch())
          {
            case 0x48:
            puts ("up");
            break;
            
            case 0x4d:
            puts ("right");
            break;
            
            case 0x50:
            puts ("down");
            break;
            
            case 0x4b:
            puts ("left");
            break;      
          }
    }
    

    🙂

    ah nice, wo hassu die werte denn nun her? xD



  • YamiSparrow schrieb:

    ah nice, wo hassu die werte denn nun her? xD

    Kannst du dir anzeigen lassen.

    #include <stdio.h>
    #include <conio.h>
    
    int ShowKeys ()
    {
    	int c = getch ();
    	printf ( "%d %c\n", c, c );
    	return c;
    }
    
    int main ()
    {
        while ( ShowKeys() != 'q' );
    	return 0;
    }
    

Log in to reply