Problema con Bloq Mayus

Started by Windgate, September 21, 2009, 05:46:21 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Windgate

Una consulta simple, ¿Hay alguna forma de saber si Bloq Mayus se encuentra activado o desactivado?
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

SplinterGU

si... mira el teclado... si hay una luz prendida que dice CAPS LOCK... entonces lo esta...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

DCelso

jajaaj, muy  bueno SplinterGU, pero creo que se refería por código Bennu, ¿No crees?
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

SplinterGU

Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Windgate

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!!!".
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

La momia que fuma

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)

SplinterGU

claro que existe, pero me parece si mal no recuerdo que solo reporta pulsaciones de las teclas shift... hay que probar...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

La momia que fuma

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

Windgate

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.
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

DCelso

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.
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

SplinterGU

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...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

DCelso

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
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

SplinterGU

ah, ya estan... gracias, entonces es agregar algunos flags mas... gracias...

otro karma... (hoy te di 2)
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

DCelso

¿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.
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

SplinterGU

si, claro, estos 2

        if( mod & KMOD_NUM ) printf( "NUMLOCK " );
        if( mod & KMOD_CAPS ) printf( "CAPSLOCK " );
Download Lastest BennuGD Release: http://www.bennugd.org/node/2