Códigos de las teclas

Constantes: Códigos de las teclas


Estas constantes se utilizan normalmente como parámetro de la función key(), para indicar qué tecla es la que se desea saber si está pulsada.

También se pueden utilizar para comparar la variable global scan_code, que contiene el código de la última tecla que se ha pulsado, con estos valores.

Normalmente, para designar a cada constante se suele usar el carácter _ (subrayado) seguido del nombre de la tecla, por ejemplo para la tecla [A], la constante referida a su código será _a.

La lista completa de estas constantes, con sus respectivos valores, es la siguiente (según la disposición estándar del teclado):

_esc = 1 [ESC] o escape
_f1 = 59 [F1] o función 1
_f2 = 60 [F2] o función 2
_f3 = 61 [F3] o función 3
_f4 = 62 [F4] o función 4
_f5 = 63 [F5] o función 5
_f6 = 64 [F6] o función 6
_f7 = 65 [F7] o función 7
_f8 = 66 [F8] o función 8
_f9 = 67 [F9] o función 9
_f10 = 68 [F10] o función 10
_f11 = 87 [F11] o función 11
_f12 = 88 [F12] o función 12 (TRAZADOR)
_prn_scr = 55 [IMPR PANT] o impresión pantalla
_scroll_lock = 70 [BLOQ DESPL] o bloqueo desplazamiento

_wave = 41 Tecla [º] o [ª]
_1 = 2 Tecla con el número "1"
_2 = 3 Tecla con el número "2"
_3 = 4 Tecla con el número "3"
_4 = 5 Tecla con el número "4"
_5 = 6 Tecla con el número "5"
_6 = 7 Tecla con el número "6"
_7 = 8 Tecla con el número "7"
_8 = 9 Tecla con el número "8"
_9 = 10 Tecla con el número "9"
_0 = 11 Tecla con el número "0"
_minus = 12 Tecla con el símbolo "?"
_plus = 13 Tecla con el símbolo "¿"

_backspace = 14 Tecla de borrado ( <- )
_tab = 15 Tecla de tabulador [TAB]
_q = 16 Tecla con la letra "Q"
_w = 17 Tecla con la letra "W"
_e = 18 Tecla con la letra "E"
_r = 19 Tecla con la letra "R"
_t = 20 Tecla con la letra "T"
_y = 21 Tecla con la letra "Y"
_u = 22 Tecla con la letra "U"
_i = 23 Tecla con la letra "I"
_o = 24 Tecla con la letra "O"
_p = 25 Tecla con la letra "P"
_l_brachet = 26 Tecla [^] o [`]
_r_brachet = 27 Tecla [*] o [+]
_enter = 28 [ENTER] (Intro o Retorno)

_caps_lock = 58 [BLOQ MAYUS] o bloqueo mayúsculas
_a = 30 Tecla con la letra "A"
_s = 31 Tecla con la letra "S"
_d = 32 Tecla con la letra "D"
_f = 33 Tecla con la letra "F"
_g = 34 Tecla con la letra "G"
_h = 35 Tecla con la letra "H"
_j = 36 Tecla con la letra "J"
_k = 37 Tecla con la letra "K"
_l = 38 Tecla con la letra "L"
_semicolon = 39 Tecla con la letra "Ñ"
_apostrophe = 40 Tecla [}]
_backslash = 43 Tecla [}]

_l_shift = 42 [SHIFT] o mayúsculas izquierdo
_z = 44 Tecla con la letra "Z"
_x = 45 Tecla con la letra "X"
_c = 46 Tecla con la letra "C"
_v = 47 Tecla con la letra "V"
_b = 48 Tecla con la letra "B"
_n = 49 Tecla con la letra "N"
_m = 50 Tecla con la letra "M"
_comma = 51 Tecla [;] o [,]
_point = 51 Tecla [:] o [.]
_slash = 51 Tecla [_] o [-]
_r_shift = 54 [SHIFT] o mayúsculas derecho

_control = 29 Teclas [CONTROL]
_alt = 56 Tecla [ALT] o [ALT GR]
_space = 57 [SPACE] o barra espaciadora

_ins = 82 [INSERT] o insertar
_home = 71 [INICIO] o inicio de página
_pgup = 73 [RE PAG] o retroceso de página
_del = 83 [SUPR] o suprimir
_end = 79 [FIN] o fin de página
_pgdn = 81 [AV PAG] o avance de página

_up = 72 Cursor para arriba
_down = 80 Cursor para abajo
_left = 75 Cursor para izquierda
_right = 77 Cursor para derecha

_num_lock = 69 [BLOQ NUM] o bloqueo numérico
_c_backslash = 53 Símbolo [/] del teclado numérico
_c_asterisk = 55 Símbolo [*] del teclado numérico
_c_minus = 74 Símbolo [-] del teclado numérico
_c_home = 71 [INICIO] del teclado numérico
_c_up = 72 Cursor arriba del teclado numérico
_c_pgup = 73 [RE PAG] del teclado numérico
_c_left = 75 Cursor izquierda del teclado numérico
_c_center = 76 Tecla [5] del teclado numérico
_c_right = 77 Cursor derecha del teclado numérico
_c_end = 79 [FIN] del teclado numérico
_c_down = 80 Cursor abajo del teclado numérico
_c_pgdn = 81 [AV PAG] del teclado numérico
_c_ins = 82 [INS] del teclado numérico
_c_del = 83 [SUPR] del teclado numérico
_c_plus = 78 Símbolo [+] del teclado numérico
_c_enter = 28 [ENTER] del teclado numérico

Resulta indiferente utilizar estas constantes o los valores numéricos que representan, es decir, se puede llamar a la función key(), para comprobar si está pulsada la tecla [A], como key(_a) o bien como key(30) (se puede comprobar en la lista anterior que 30 es el valor numérico de la constante _a).


Importante: Algunos de estos códigos pueden diferir en ciertos teclados, en caso de duda se puede ejecutar el siguiente programa ejemplo, que muestra en pantalla una tabla, correspondiente con la función key() (indicando los códigos de las teclas que están pulsadas en cada momento), además de los valores de las variables scan_code, ascii y shift_status (relacionados igualmente con la lectura del teclado).

Programa ejemplo:
PROGRAM ejemplo_códigos_del_teclado;

GLOBAL
    teclas[128];

BEGIN
    write(0, 0, 0, 0, "Códigos de las teclas pulsadas, según key()");
    FROM x=0 TO 127;
        write_int(0, (x%16)*20, (x/16)*10+20, 0, OFFSET teclas[x]);
    END
    write(0, 0, 160, 0, "Código de la última tecla pulsada (scan_code):");
    write_int(0, 320, 160, 2, OFFSET scan_code);
    write(0, 0, 180, 0, "Código ASCII de la última tecla (ascii):");
    write_int(0, 320, 180, 2, OFFSET ascii);
    write(0, 0, 190, 0, "Estado de las teclas especiales (shift_status):");
    write_int(0, 320, 190, 2, OFFSET shift_status);
    LOOP
        FROM x=1 TO 127;
            IF (key(x))
                teclas[x]=x;
            ELSE
                teclas[x]=0;
            END
        END
        FRAME;
    END
END


Este programa se puede utilizar (pulsando con el ratón sobre el texto "Programa ejemplo:" y después la tecla [F10]) para averiguar el código que tiene alguna tecla en concreto.

Después podrá utilizarse dicho código numérico como parámetro de la función key(), para comprobar en el juego si dicha tecla está pulsada en un momento determinado.


Ver: Constantes - key() - scan_code - ascii - shift_status