[C con Clase] Tecla Bloq Mayus

Emiliano Guido emiliano.guido en gmail.com
Mar Abr 21 01:01:25 CEST 2009


Amigo Steven.
Funciona perfecto! Opté por consultar el estado de la tecla, que con eso me
alcanzaba.

Amigo Kalith.
Al rato de haber enviado el mail, me di cuenta que en el sitio esta la
documentacion de las API. Es tristemente gracioso cuando uno tiene las cosas
delante de su nariz y no las ve ja ja. Gracias por recordarmelo, lei que
puedo consultar por la tecla Shift tambien.

En realidad no queria utilizar las APi de windows, para poder correr mi
programa en Linux, pero tengo que entregar el trabajo y no llego con el
tiempo.

Me han sido de gran ayuda, y les estoy muy agradecido.

Emiliano


El 20 de abril de 2009 5:35, Steven Davidson <srd4121 en njit.edu> escribió:

> Hola Emiliano,
>
> Emiliano Guido wrote:
>
>> Buenas...
>> Alguien sabe como detectar el estado de la tecla Bloq Mayus?
>> O al menos como cambiarle el estado desde codigo.
>>
>
> Todo esto depende de las bibliotecas externas que estés usando. Si usas el
> API de MS-Windows, puedes usar la función 'GetKeyState()' para determinar si
> una tecla ha sido pulsada o no. En tu caso, te interesa escribir lo
> siguiente:
>
> SHORT nEstado = GetKeyState( VK_CAPITAL );
>
> if( nEstado & 1 )
>  cout << "Activada";
> else
>  cout << "Desactivada";
>
> Para establecer la tecla del bloqueo de las mayúsculas, puedes invocar
> 'SetKeyboardState()'. Sin embargo, esta función requiere un array de todos
> los estados de todas las teclas. Por lo tanto, sería mejor invocar
> 'GetKeyboardState()' previamente, para poder cambiar el estado que nos
> interesa para 'VK_CAPITAL', y luego pasar tal lista alterada a
> 'SetKeyboardState()'.
>
> Otra posibilidad es emular una tecla presionada a través de 'SendInput()'.
> Por ejemplo,
>
> KEYBDINPUT ki = { VK_CAPITAL, 0, 0, 0, 0 };
> INPUT capslock[2] = {0};
> capslock[0].type = INPUT_KEYBOARD;
> capslock[0].ki = ki;
>
> ki.dwFlags = KEYEVENTF_KEYUP;
> capslock[1].type = INPUT_KEYBOARD;
> capslock[1].ki = ki;
>
> SendInput( 2, capslock, sizeof(INPUT) );
>
> Ten presente que esta función y las definiciones de las estructuras existen
> a partir de MS-Windows 2000 y por tanto debes definir las siguientes
> constantes simbólicas:
>
> #define _WIN32_WINNT 0x0501
> #define WINVER 0x0600
>
> antes de incluir <windows.h>.
>
>
> Espero que esto te guíe.
>
> Steven
>
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20090421/ce25e788/attachment.html>


Más información sobre la lista de distribución Cconclase