Stevie Geschrieben 7. April 2003 Geschrieben 7. April 2003 Hallo, wie kann ich in folgendem Beispiel alle Tasteneingaben während der "Do-Nothing-Loop" ignorieren. Ich muss den Tastaturpuffer leeren, wenn ich mich nicht irre. Wie? void main() { int time = 0; char key = 0; time = clock(); while ((clock() - time) < 5000) {} printf("Taste: "); key = getch(); } Zitieren
Guybrush Threepwood Geschrieben 7. April 2003 Geschrieben 7. April 2003 Hi, ich hab dein Problem, ehrlich gesagt, nicht so ganz verstanden. Du willst während der while Schleife keine Tastatureingaben zulassen, aber du wartest doch erst nach der Schleife auf eine Eingabe:confused: Gruß Guybrush Zitieren
Stevie Geschrieben 7. April 2003 Autor Geschrieben 7. April 2003 Wenn ich eine Taste während der 5 Sekunden drücke, in denen die Scheife läuft, wird dieser Tastendruck von getch() ausgewertet. Das will ich aber nicht. Es sollen nur Tasteneingaben ausgewertet werden, die nach dem printf() erfolgen. Zitieren
nic_power Geschrieben 7. April 2003 Geschrieben 7. April 2003 Hallo, Dann solltest Du vor dem printf() den Tastaturpuffer leeren (indem Du ihn beispielsweise in einer Schleife ausliest). Ansonsten liefert main() immer ein in zurück (int main()). Nic Zitieren
Stevie Geschrieben 8. April 2003 Autor Geschrieben 8. April 2003 Ich hab's jetzt so gelöst: while (kbhit()) getch(); key = getch(); if (key == -32) key = getch(); Jetzt ist nur die Frage, ob bei z.B. den Pfeiltasten (haben ja einen "Doppelwert") immer die -32 (hex e0) als erster Code zurückgeliefert wird, oder kann auch was anderes rauskommen? Zitieren
Gringorius Geschrieben 8. April 2003 Geschrieben 8. April 2003 Hallo wenn ich dein zweites Problem richtig verstanden habe, dann hatte ich es auch, also bei der Eingabe einer Cursor o. F-Taste war der wert 0+x. int taste(); { int t; t = getch(); if (t = 0) t = -1 * getch(); return t; } dadurch kann ich sowohl "normale" Tasten einlesen als auch F-Tasten und Cursor Tasten. Letztere sind dann eben negativ. Wenns bessere Varianten dazu gibt würd ichs gern wissen, bin noch ein Frischling in Sachen programmierung Grüsse Zitieren
Stevie Geschrieben 8. April 2003 Autor Geschrieben 8. April 2003 Also, wie gesagt, bei mir funktioniert meine Lösung. F-Tasten, Enter, Escape und solche Tasten liefern ja immer einen doppelten Code zurück. Nur war eben meine Frage, ob der erste Teil immer die hex e0 sein muss. Zitieren
Guybrush Threepwood Geschrieben 10. April 2003 Geschrieben 10. April 2003 Also soweit ich mich an meine vorherige Schule erinnern kann, waren die Codes beim Borland C++ anders als beim Visual C++. Frag mich aber nicht warum. Anstatt der -32 am Anfang, kam da glaube ich immer die NULL. Zitieren
Stevie Geschrieben 10. April 2003 Autor Geschrieben 10. April 2003 Original geschrieben von Guybrush Threepwood Also soweit ich mich an meine vorherige Schule erinnern kann, waren die Codes beim Borland C++ anders als beim Visual C++. Frag mich aber nicht warum. Anstatt der -32 am Anfang, kam da glaube ich immer die NULL. Dann würde ja nicht stimmen, was ich hier gelesen habe: http://www.win.tue.nl/~aeb/linux/kbd/scancodes-1.html Dort steht unter Escaped Scancodes, sie würden mit e0 (-32) beginnen. :confused: Zitieren
Guybrush Threepwood Geschrieben 10. April 2003 Geschrieben 10. April 2003 Ich weiß es wie gesagt nicht mehr genau, aber ich glaube es war ein anderer Code. Obwohl das ja eigentlich keinen Sinn machen würde. Vielleicht installiere ich mir den Borland Compiler heute Nachmittag mal und schau mal nach. Zitieren
Stevie Geschrieben 10. April 2003 Autor Geschrieben 10. April 2003 Original geschrieben von Guybrush Threepwood Vielleicht installiere ich mir den Borland Compiler heute Nachmittag mal und schau mal nach. Jau, das wär echt klasse. Da bin ich ja mal gespannt, was da rauskommt! Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.