int scan_code=0; // Código de rastreo la tecla pulsada


Esta variable global indica siempre el código de rastreo (scan_code) de la tecla pulsada en la última imagen del juego.

La variable scan_code estará a 0 si no se ha pulsado ninguna tecla en la imagen anterior del juego.

Se utiliza muchas veces esta variable para esperar en un programa a que el usuario pulse una tecla (cualquiera), con una sentencia como la siguiente:

  while (scan_code == 0)
      FRAME;

Esta sentencia indica que mientras no se haya pulsado una tecla en la imagen anterior (mientras scan_code sea igual a 0), se deben seguir visualizando imágenes del juego.

Los códigos de rastreo son simplemente una relación numérica de las teclas del PC; estos códigos pueden variar ligeramente (en alguna tecla) de un teclado a otro, ya que hay teclados de diferentes idiomas, con un número variado de teclas, etc.

Sin embargo, se mantienen constantes casi todos los códigos de las principales teclas. Hay predefinida una lista de constantes (sinónimos para estos códigos) en el lenguaje que se puede ver accediendo a la ayuda sobre códigos de teclas (o códigos de rastreo del teclado); son, precisamente, estos valores numéricos los que serán asignados a la variable scan_code y last_key cuando las respectivas teclas sean pulsadas en el programa.

Normalmente, para comprobar si una tecla está siendo pulsada se utiliza simplemente la función key() del lenguaje, que recibe como parámetro uno de estos códigos de teclas, y devuelve 0 si la tecla no está pulsada o 1 cuando si lo está.

Ejemplo de utilización de scan_code:


char cadena[50]="";
int  longitud=0;

MAIN_PROGRAM_CDIV
BEGIN_PROGRAM 

    set_gfx(GFX_AUTODETECT_WINDOWED);

    set_mode(m320x200);

    // Bucle de espera
    LOOP{
     if( scan_code != last_key ){
     
      longitud = strlen(cadena);
      if(scan_code == _backspace){
       cadena[longitud-1] = '\0';
      }else{
       cadena[longitud] = inttochar( scan_code );
       cadena[longitud+1] = '\0';
      }
      
     }
     
     write(0, 0, 0, 0, cadena);
     write_int(0, 0, 10, 0, &last_key);
     FRAME;
    }

END_PROGRAM

En este ejemplo vemos como se puede introducir una cadena de texto carácter a carácter comprobando el contenido de las variable globales scan_code y last_key cuando ambas son diferentes se pulsó una tecla.


Ver: Datos globales - last_key - key()