Autor Tema: key_event (libreria de eventos down y up)  (Leído 9260 veces)

SplinterGU

  • Hero Member
  • *****
  • Mensajes: 12948
  • Karma: 378
key_event (libreria de eventos down y up)
« en: Julio 01, 2010, 10:58:16 pm »
key_event.lib
Código: [Seleccionar]
#ifndef __KEY_EVENT_LIB
#define __KEY_EVENT_LIB

import "mod_key";
import "mod_proc";

global
    _key_use = 0;
    _key_state[127][1];
end

#define _key_pressed    0
#define _key_down       1
#define _key_up         2

global
    int _key_event_exit = 0;
end

process _key_init()
private
    i;
    pid;
begin
    signal_action( s_kill, s_ign );
    signal( type _key_init, s_kill );
    signal_action( s_kill, s_dfl );

    priority = 999999;

    loop
        _key_use ^= 1;
        for ( i = 0; i < 127; i++ )
            _key_state[ i ][ _key_use ] = key( i );
        end
        frame;
    end

onexit:
    if ( !_key_event_exit ) _key_init(); end

end

function _key_exit()
begin
    _key_event_exit = 1;
    signal( type _key_init, s_kill );
end

#define _key(k,ev) ((ev==_key_down)?(  _key_state[ k ][ _key_use ] && !_key_state[ k ][ _key_use ^ 1 ] ): \
                    (ev==_key_up  )?( !_key_state[ k ][ _key_use ] &&  _key_state[ k ][ _key_use ^ 1 ] ): \
                    ( _key_state[ k ][ _key_use ]))
#endif

key_event_test.prg
Código: [Seleccionar]
import "mod_video";
import "mod_text";

#include "key_event.lib";

private
a,b,c;
begin

    _key_init();

    write_int(0,0,0,0,&a);
    write_int(0,0,10,0,&b);
    write_int(0,0,20,0,&c);

    while( !_key( _ESC, _key_pressed ) )

        a = _key( _5, _key_down );
        b = _key( _5, _key_up );
        c = _key( _5, _key_pressed );

        frame;
    end

    _key_exit();

end

Solo necesita usarlo, como se usa en el ejemplo "key_event_test.prg".

el ejemplo detecta los eventos de la tecla _5 y de _ESC para salir.

es importante hacer _key_init(); para iniciar el modulo, y _key_exit(); para finalizarlo.

nota adicional: el controlador funciona en prioridad 1000 999999, si alguien usara _key en alguna funcion con prioridad superior, debe modificar la prioridad del controlador en el fuente key_event.lib y ponerle un valor mas alto.

se cambia a prioridad a 999999, se toma la sugerencia de windgate de usar onexit para evitar tener que cargarla cada vez que se hace un let_me_alone, y para eso se modifican algunas cosas internamente.
« última modificación: Noviembre 22, 2010, 01:33:16 am por SplinterGU »
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

josebita

  • Administrator
  • *****
  • Mensajes: 4039
  • Karma: 257
    • BennuGD Mobile Worklog
Re: key_event (libreria de eventos down y up)
« Respuesta #1 en: Julio 01, 2010, 11:08:42 pm »
Muchas gracias, Splinter :)

panreyes

  • Administrator
  • *****
  • Mensajes: 2263
  • Karma: 82
    • panreyes.com
Re: key_event (libreria de eventos down y up)
« Respuesta #2 en: Julio 02, 2010, 06:34:22 am »
INCOMING KARMA OVERDOSE!!!!! :D

SplinterGU

  • Hero Member
  • *****
  • Mensajes: 12948
  • Karma: 378
Re: key_event (libreria de eventos down y up)
« Respuesta #3 en: Julio 07, 2010, 06:24:05 pm »
fixeado, error demasiado estupido...

gracias Free por insistir en que no te funcionaba (karma).

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

Prg

  • Hero Member
  • *****
  • Mensajes: 1569
  • Karma: 140
    • Mi pagina
Re: key_event (libreria de eventos down y up)
« Respuesta #4 en: Julio 07, 2010, 06:50:06 pm »
karma++ splinter :)
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)

FreeYourMind

  • Hero Member
  • *****
  • Mensajes: 5719
  • Karma: 129
    • GECA soft
Re: key_event (libreria de eventos down y up)
« Respuesta #5 en: Julio 07, 2010, 07:31:12 pm »
Grácias a ti.

FreeYourMind

  • Hero Member
  • *****
  • Mensajes: 5719
  • Karma: 129
    • GECA soft
Re: key_event (libreria de eventos down y up)
« Respuesta #6 en: Julio 07, 2010, 08:51:52 pm »
Tienes un error en el código, no es getid( type _key_init ) pero si get_id( type _key_init ).

SplinterGU

  • Hero Member
  • *****
  • Mensajes: 12948
  • Karma: 378
Re: key_event (libreria de eventos down y up)
« Respuesta #7 en: Julio 08, 2010, 12:40:21 am »
si, es cierto, lo que pasa que probe en mi pc y luego edite el post...

ya lo corrijo, gracias de nuevo
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

FreeYourMind

  • Hero Member
  • *****
  • Mensajes: 5719
  • Karma: 129
    • GECA soft
Re: key_event (libreria de eventos down y up)
« Respuesta #8 en: Julio 14, 2010, 06:37:47 pm »
Estoy usando esta lib, aparte de esta he usado tambien la de mapeo para la Wiz.
Púes inexplicablemente, y ya lo he mirado y revisado varias veces, no se porque, pero la Wiz no responde a ningun boton  :(

Alguien ha puesto las 2 en un juego para la Wiz ?

Help please  :-\

Drumpi

  • Hero Member
  • *****
  • Mensajes: 6460
  • Karma: 168
  • Odio el periodo "entre proyectos"
    • La web de Drumpi
Re: key_event (libreria de eventos down y up)
« Respuesta #9 en: Julio 14, 2010, 07:58:59 pm »
Yo sólo he usado la mod_joy para gp2x/wiz y no he tenido problemas. De hecho, cojo el código que tengo del Echo y le hago un par de cambios y me va de miedo (tengo todo controlado desde un include, su respectivo .h y algunas variables/constantes que están el el prg principal, que no deberían). Los cambios se deben a que como en Echo no uso todos los botones, pues no todos están mapeados.
Lo malo es que ahora no puedo ponerme a explicar su funcionamiento (no sólo por el tiempo, esta vez).
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

DCelso

  • Hero Member
  • *****
  • Mensajes: 3708
  • Karma: 181
Re: key_event (libreria de eventos down y up)
« Respuesta #10 en: Julio 15, 2010, 02:46:16 pm »
Simplemente decir: karmón. Esto abre muchísimas posibilidades.
Monstruos Diabólicos

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

SplinterGU

  • Hero Member
  • *****
  • Mensajes: 12948
  • Karma: 378
Re: key_event (libreria de eventos down y up)
« Respuesta #11 en: Julio 15, 2010, 06:47:11 pm »
wiz no tiene teclas, son joys.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

FreeYourMind

  • Hero Member
  • *****
  • Mensajes: 5719
  • Karma: 129
    • GECA soft
Re: key_event (libreria de eventos down y up)
« Respuesta #12 en: Julio 15, 2010, 07:08:31 pm »
Quien ha mencionado 'teclas' ?  :D

SplinterGU

  • Hero Member
  • *****
  • Mensajes: 12948
  • Karma: 378
Re: key_event (libreria de eventos down y up)
« Respuesta #13 en: Julio 15, 2010, 08:13:22 pm »
Estoy usando esta lib, aparte de esta he usado tambien la de mapeo para la Wiz.
Púes inexplicablemente, y ya lo he mirado y revisado varias veces, no se porque, pero la Wiz no responde a ningun boton  :(

Alguien ha puesto las 2 en un juego para la Wiz ?

Help please  :-\

este modulo es para teclas, wiz no tiene teclas tiene joys y botones de joys.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

  • Hero Member
  • *****
  • Mensajes: 12948
  • Karma: 378
Re: key_event (libreria de eventos down y up)
« Respuesta #14 en: Julio 15, 2010, 08:32:30 pm »
updateado el modulo, para mejorar la forma de detectar si esta ya corriendo el controlador.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2