Bennu Game Development

Foros en Español => Mesa de Ayuda => Topic started by: Windgate on September 21, 2009, 05:46:21 PM

Title: Problema con Bloq Mayus
Post by: Windgate on September 21, 2009, 05:46:21 PM
Una consulta simple, ¿Hay alguna forma de saber si Bloq Mayus se encuentra activado o desactivado?
Title: Re: Problema con Bloq Mayus
Post by: SplinterGU on September 21, 2009, 11:38:31 PM
si... mira el teclado... si hay una luz prendida que dice CAPS LOCK... entonces lo esta...
Title: Re: Problema con Bloq Mayus
Post by: DCelso on September 21, 2009, 11:45:41 PM
jajaaj, muy  bueno SplinterGU, pero creo que se refería por código Bennu, ¿No crees?
Title: Re: Problema con Bloq Mayus
Post by: SplinterGU on September 22, 2009, 12:00:20 AM
;)

no que yo sepa.
Title: Re: Problema con Bloq Mayus
Post by: Windgate on September 22, 2009, 01:07:18 AM
Muy gracioso Splinter... ¬¬

;D

Pues el caso es que lo he estado pensando porque ha tenido la idea un alumno, y aparte de tener una variable que pase de TRUE a FALSE en cada pulsación hemos mirado en el function_list.txt y no hemos encontrado nada relacionado.

Obviamente la solución de la variable tiene el problema de que independientemente de si al iniciar el juego se encuentra el Bloq Mayus activado o desactivado la variable tendría el mismo valor inicial.

Lo he seguido meditando y al menos los ascii enviados por teclado sí que respetarán el Bloq Mayus, pero por simple curiosidad más que nada, ¿No hay ninguna función que lo determine fácilmente?

Pensad por ejemplo en una aplicación en Bennu que pide contraseña y quieres que te avise con lo típico de "Oye cuidadín que tienes el Bloq Mayus activado!!!".
Title: Re: Problema con Bloq Mayus
Post by: La momia que fuma on September 22, 2009, 01:26:44 AM
No se si se conservara en bennu, pero en div recuerdo que habia una variable global llamada shift_status o algo asi que era precisamente para eso (además daba también el estado de bloqueo de pad numerico y de la tecla esta de "Bloq despl" que nunca supe para que sirve XD...de las 3 lucecitas, vamos)
Title: Re: Problema con Bloq Mayus
Post by: SplinterGU on September 22, 2009, 01:35:15 AM
claro que existe, pero me parece si mal no recuerdo que solo reporta pulsaciones de las teclas shift... hay que probar...
Title: Re: Problema con Bloq Mayus
Post by: La momia que fuma on September 22, 2009, 01:43:43 AM
Acabo de probar, y como dice splinter parece que solo sirve para identificar si se pulsa shift, control, alt o alt gr  :-\, con lo de las lucecitas ni se inmuta, el jodío
Title: Re: Problema con Bloq Mayus
Post by: Windgate on September 22, 2009, 08:32:22 AM
Arg, lo he visto:

Module name: libkey.dll

Globals:

   shift_status ; <---
   ascii ;
   scan_code ;

Pero si me dices que sólo atiende a la pulsación de shift...

Veo que las CONST para la función key() no guardan una relación aparente con los ascii asociados a parte de ellas. Si lo hiciesen sería posible tener un PROCESS activo que a la primera pulsación de un caracter alfabético (Sensible a Mayúsculas) podría ser capaz de determinar el estado de Bloq Mayus y a partir de él continuar informando gracias a la variable esa que se pone a TRUE/FALSE en cada pulsación.

Es la solución más sensual que veo, pero a costa de redefinir las constantes de teclado, porque si no la función sería un infierno, haría falta una tabla de traducción o similar.
Title: Re: Problema con Bloq Mayus
Post by: DCelso on September 22, 2009, 03:07:32 PM
holas, me puse manos a la obra a buscar como podríamos hacerlo y he creado una pseudo aplicacioncilla que sirve para linux y windows para devolver el estado de los tres leds SCROOL, NUM, CAP.
Se podría intentar hacer un módulo para bennu, la verdad es que me puse y no dí con la tecla, con lo fácil que se ve, me pide dependencias por todos lados, si alguien sabe le doy permiso para que la haga.
Actualmente la aplicación devuelve tres números para los estados en el siguiente orden SCR NUM CAP donde 0 indica no activado y 1 lo contrario.
Title: Re: Problema con Bloq Mayus
Post by: SplinterGU on September 22, 2009, 03:34:06 PM
Windgate, te iba a proponer lo mismo, pero luego pense que no era algo muy elegante, igual es lo mejor que podes hacer... tenes que tener en cuenta la pulsacion del shift para descartar que las mayusculas estan por la pulsacion de esta.
Aunque eso no te va a servir para decir antes de pulsar una tecla si esta en caps activado o no.

gracias DCelso por el codigo, luego lo incluire en shift_status...
Title: Re: Problema con Bloq Mayus
Post by: DCelso on September 22, 2009, 03:48:11 PM
Splinter, kizas para eso sería más interesante usar SDL, tiene que haber algo para ello, ya que es la que accede al teclado ¿No?
http://www.libsdl.org/docs/html/guideinputkeyboard.html
Title: Re: Problema con Bloq Mayus
Post by: SplinterGU on September 22, 2009, 04:20:44 PM
ah, ya estan... gracias, entonces es agregar algunos flags mas... gracias...

otro karma... (hoy te di 2)
Title: Re: Problema con Bloq Mayus
Post by: DCelso on September 22, 2009, 04:29:27 PM
¿los vistes?

Yo los busqué y no los encontré, te puse el enlace a la web por si te era a tí mas revelador.

Yo por lo que leí, entendí que puedes saber cuales estan activos o no cuando pulsas una tecla, eso de los modificadores.

Pero no ví que pudieras preguntar así a priori por el estado sin que llegue una tecla pulsada.
Title: Re: Problema con Bloq Mayus
Post by: SplinterGU on September 22, 2009, 04:35:27 PM
si, claro, estos 2

        if( mod & KMOD_NUM ) printf( "NUMLOCK " );
        if( mod & KMOD_CAPS ) printf( "CAPSLOCK " );
Title: Re: Problema con Bloq Mayus
Post by: Windgate on September 22, 2009, 08:41:08 PM
¿Entonces ya está arreglado??? Miro el link a la descripción de la SDL y ya encuentro lo de:

        if( mod & KMOD_NUM ) printf( "NUMLOCK " );
        if( mod & KMOD_CAPS ) printf( "CAPSLOCK " );

¿Queréis decir que a partir de ahora en Bennu KMOD_CAPS ya será TRUE cuando esté activado Bloq Mayus y FALSE en caso contrario? ¿Vendrá en la próxima RC o es algo que tenemos que hacer "manualmente"?

No estoy metido en el tema de la SDL, simplemente en su día oí que era una librería de funciones de utilidad general para usar en videojueguitos y que Bennu se beneficiaba de ella.
Title: Re: Problema con Bloq Mayus
Post by: SplinterGU on September 22, 2009, 09:16:18 PM
no, todavia no toque el codigo, pero agregando los mask KMOD_NUM y KMOD_CAPS y asignandole en la lib de bennu el tratamiento adecuado funcionaria.

estara luego...
Title: Re: Problema con Bloq Mayus
Post by: Windgate on September 23, 2009, 05:25:39 AM
Sin ningún tipo de prisa, era sólo una curiosidad sugerente.

Cooking a Karma... 3... 2... 1... ::)