Tastenabfrage C++



  • ehh mal ne frage nebenbei *peinlich* wie geht das mit dem code korrekt anzeigen raffe das nicht fasse das in die tags

    habe es auch mit cpp versucht und eine kombi von beiden nix geht^^. dann stell ich mal richtig code rein.



  • Code
    


  • #include <conio.h>
    #include <stdio.h>
    
    #define key_esc 0x1b // = VK_ESCAPE
    #define key_f1  0x70 // = VK_F1
    #define key_f2  0x71 // = VK_F2
    #define key_f3  0x72 // = VK_F3
    
    void DoAction(char taste)
    {
    	if (taste == key_f1)
    	{
    		printf("Taste F1 gedrückt!\n");
    	}
    	else if (taste == key_f2)
    	{
    		printf("Taste F2 gedrückt!\n");
    	}
    	else if (taste == key_f3)
    	{
    		printf("Taste F3 gedrückt!\n");
    	}
    }
    
    void main(void)
    {
    	char taste = 0;
    
    	while (taste != key_esc)
    	{
    		taste = 0;
    
    		if (_kbhit())
    		{
    			taste = _getch();
    		}
    
    		if (taste > 0)
    		{
    			DoAction(taste);
    		}
    	}
    }
    

    so bitte das sollte gehen

    Edit: wieso geht das nicht bei mir?

    EditEdit: @Th auf meine weise kann er aber noch andere programmabläufe durcharbeiten bei dir bleibt er in der while hängen, sonst jepp geht auch

    EditEditEdit: Ich habs gerafft geil^^



  • ich wollt jetzt keinen neuen Thread eröffnen, gehört zwar nicht direkt hier her, aber es passt doch irgendwie:

    wie findet man den hex-code einer taste raus, so wie yammi es gemacht hat?

    und wie ist es, wenn man sondertasten hat, wie bei meinem laptop der WLAN oder der Sound Knopf?



  • ich hasse es wenn leute meinen namen falsch schreiben -_____-

    *sfz*

    egal.. ich versuch dann mal die eine lösung da.

    *edit*

    jau ^^ super funkt einwandfrei.. das einzige was ich noch brauche ist ne sound.h datei..

    kann mir die wer geben!? ^^



  • @X schau online msdn oder wenn selber eine hast stichwort "virtual key codes" da findest alles was du brauchst glaube sogar die extratasten inklusive



  • XaTrIxX schrieb:

    ich wollt jetzt keinen neuen Thread eröffnen, gehört zwar nicht direkt hier her, aber es passt doch irgendwie:

    wie findet man den hex-code einer taste raus, so wie yammi es gemacht hat?

    und wie ist es, wenn man sondertasten hat, wie bei meinem laptop der WLAN oder der Sound Knopf?

    die stehen doch eh hier: http://de.wikipedia.org/wiki/ASCII-Tabelle

    lg



  • @Composer nicht ganz er will die keycodes nicht die codes der zeichen, soll heissen den code den die tastatur liefert wenn du zb. a drückst, und da ist egal ob am ende ein kleines oder großes a da steht, der tastencode ist immer derselbe. Das OS interpretiert den code eben anhand der umschaltasten und schmeist das dazugehörige zeichen raus bzw führt die damit verbundene aktion aus.

    Edit: Onlinegaming versaut echt, muss mir dieses fraktalsatz geschreibe hier abgewöhnen 😃



  • Hi oelsni,

    den Programm, den du vorhin für den YamiSparrow geschrieben hast, funkt ned tadellos. Wenn ich F1 drücke passiert gar nichts. Außerdem steigt, die CPU-Überlastung auf 100, wenn ich das Programm ausführe.

    lg



  • ist ja klar wegen der whileschleife, ie rattert ja nu die ganze zeit^^. Aber das mit F1 wundert mich habe ich ausversehen falschen code benutzt mom eben testen.

    Edit: orrgs 😮 ich volltrottel _getch wars ja garnicht, die gibt doch ascii code zurück. Ganz großes SRY, das habe ich total verrafft kein wunder das es nicht geht. ist lang her als ich das mit tastencode gemacht habe suche das eben schnell und stelle die korrektur hier rein und nochmal Sry, war ziemlich panne von mir 😞



  • Mit C++ (bzw. C) Standard-Mittel ist es nicht möglich, die Tasten direkt abzufragen. Da mußt du dann schon betriebssystemspezifische Funktionen aufrufen. Unter Windows z.B. GetAsyncKeyState(...)



  • jepp habe es damals mit GetKeyboardState gemacht, nur weis ich jetzt auch wieder warum ich auf _kbhit() und _getch() übergangen bin 😃

    baue aber dennoch gerade nen bsp. nur leider ist das nicht so schön anzusehen wie mein vorhergehendes


Anmelden zum Antworten