int key_shifts; // Estado de las teclas especiales


Máscara de bits que contienen el estado actual de shift/ctrl/alt,  de las teclas especiales de Windows y los carácteres de escape de los acentos.

Puede contener cualquiera de los bits:

KB_SHIFT_FLAG
KB_CTRL_FLAG
KB_ALT_FLAG
KB_LWIN_FLAG
KB_RWIN_FLAG
KB_MENU_FLAG
KB_SCROLOCK_FLAG
KB_NUMLOCK_FLAG
KB_CAPSLOCK_FLAG
KB_INALTSEQ_FLAG
KB_ACCENT1_FLAG
KB_ACCENT2_FLAG
KB_ACCENT3_FLAG
KB_ACCENT4_FLAG

La variable key_shift contendrá la suma de todos los códigos de las teclas que estén pulsadas o activadas.

Por ejemplo, si estuviera pulsada la tecla [ALT] y activada la tecla [BLOQ MAYUS], la variable key_shift tendría el valor: KB_ALT_FLAG + KB_CAPSLOCK_FLAG.

Para comprobar si una tecla como [ALT] está pulsada, no se puede comprobar que key_status sea igual a KB_ALT_FLAG, ya que ésto implicaría que [ALT] es la única tecla especial que está pulsada o activada.

Para realizar esta comprobación correctamente se debería realizar de la siguiente forma:

 if (key_shifts & KB_SHIFT_FLAG)
    // Está pulsada la tecla [SHIFT] ...

Nota: Normalmente, para comprobar si una tecla está pulsada, se utiliza la función key(). Pero con esta función no se puede determinar si teclas como BLOQ MAYUS están activadas, únicamente si están pulsadas o no.


Ver: Datos globales - key() - scan_code