15. februar 2004 - 10:43
Der er
9 kommentarer og 1 løsning
Hvordan bruger man piletasterne?
Ey Nogen der ved hvordan man kommer i kontakt med tastaturets piletaster, enter og esc? Spørgsmål 1: Skal bruge en kode, som ser ud på følgende måde if(højre pil trykket) ect { cout << "Du har trykket på højre pil"; } Spørgsmål 2: En tabel over tasternes koder, eller lille program, der kan finde ud af hvad de enkelte taster hedder. Mvh Jonas
Annonceindlæg fra NetApp
15. februar 2004 - 11:48
#2
Standard C/C++ kan ikke læse keystrokes. Du skal derfor bruge et eller andet platform/compiler specifikt, så spørgsmålet er derfor hvilken platform/compiler bruger du ?
15. februar 2004 - 11:54
#3
Hvis du f.eks. bruger en windows compiler som er kompatibel med de gamle DOS compilere, så vil du kunne bruge: #include <conio.h> og bruge funktionen getch, som vil returnerer 0x1B for ESC 0x00 for piletaster efterfulgt af 75 (venstre)/77 (højre)/72 (op)/80 (ned) På linux vil du nok skulle bruge curses. I native Win32 skal du have fat på GetAsyncKeyState funktionen
15. februar 2004 - 13:11
#4
Mange tak for det der link esben aaberg :) arne v >> Jeg bruger ms visual c++
15. februar 2004 - 13:31
#5
Følgende ser ud til at virke i MS VC++: #include <conio.h> #include <iostream> using namespace std; int main() { cout << "Press keys (ESC to exit)" << endl; while(true) { int c = getch(); if(c == 0x1B) { cout << "ESC read" << endl; break; } else if(c == 224) { c = getch(); switch(c) { case 75: cout << "left arrow read" << endl; break; case 77: cout << "rigth arrow read" << endl; break; case 72: cout << "up arrow read" << endl; break; case 80: cout << "down arrow read" << endl; break; } } else { cout << (char)c << " read" << endl; } } return 0; }
15. februar 2004 - 13:44
#6
jeps det virker mange tak :) har dog lige et spørgsmål til koden, hvad bruger du følgende til? ======================================= else if(c == 224) { c = getch(); switch(c) ======================================= og hvordan finder du ud af hvilken "case" knappen er?
15. februar 2004 - 13:47
#7
MS VC++ getch returnerer tilsyneladende 224 + en kode for bl.a. pile taster. Spørg mig ikke hvorfor. Du må kunne bruge isupper(c) og islower(c) til at teste på case.
15. februar 2004 - 13:49
#8
oki mange tak for hjælpen :)
15. februar 2004 - 16:19
#9
Hvis du stadig er der arne_v, har jeg lige et sidste spørgsmål, hvad bruger du den der while(true) til, og hvordan kan programmet stoppe, hvis der trykkes ecs?
15. februar 2004 - 16:21
#10
while(true) er en uendelig løkke if(c == 0x1B) { ... break; } gør at den hopper ud ved ESC.
Kurser inden for grundlæggende programmering