2011-12-08 19 views

Respuesta

12

De hecho, se ha preguntado antes, y la respuesta es que no puede hacerlo.

C++ no tiene el concepto de un teclado o una consola. Solo sabe de un flujo de datos de entrada opaco.

Su consola física preprocesa y almacena en búfer la actividad de su teclado y solo envía datos cocinados al programa, generalmente línea por línea. Para hablar directamente con el teclado, necesita una biblioteca de manejo de terminales específica de la plataforma.

En Linux, esto generalmente se hace con las bibliotecas ncurses o termcap/terminfo. En Windows puede usar pdcurses, o quizás la API de Windows (aunque no estoy familiarizado con ese aspecto).

Marcos de aplicaciones gráficas como SDL, Allegro, Irrlicht u Ogre3D vienen con manejo completo del teclado y el mouse, también.

+7

Tienes suerte de que no estés familiarizado con winAPI. ¡La ignorancia es felicidad! :) – FailedDev

+1

@FailedDev: hehe - Sé un poco, y he visto mi parte de trabalenguas húngaros y 'LPHANDLE's :-) Nunca he visto nada relacionado con el manejo de terminales en bruto ... siento gratis para entrar con algunos consejos! :-) –

+0

:) No he hecho algo así tampoco, aunque estoy seguro de que es posible. Pero OP no parece estar interesado en un SO específico, aunque debería :) – FailedDev

10

Aquí hay un puntero si no te importa usar getch() ubicado en conio.h.

#include <stdio.h> 
#include <conio.h> 

#define KB_UP 72 
#define KB_DOWN 80 
#define KB_LEFT 75 
#define KB_RIGHT 77 
#define KB_ESCAPE 27 


int main() 
{ 
    int KB_code=0; 

    while(KB_code != KB_ESCAPE) 
    { 
    if (kbhit()) 
     { 
      KB_code = getch(); 
      printf("KB_code = %i \n",KB_code); 

      switch (KB_code) 
      { 
       case KB_LEFT: 
          //Do something 
       break; 

       case KB_RIGHT: 
          //Do something      
       break; 

       case KB_UP: 
          //Do something      
       break; 

       case KB_DOWN: 
          //Do something      
       break; 

      }   

     } 
    } 

    return 0; 
} 
Cuestiones relacionadas