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