es importante el let_me_alone(); otra opcion al codigo, que podria ser un poquito mas eficiente y no necesite el let_me_alone.
import "mod_key";
import "mod_video";
import "mod_text";
import "mod_proc";
global
_key_use = 0;
_key_state[127][1];
end
#define _key_pressed 0
#define _key_down 1
#define _key_up 2
process _key_init()
private
i;
pid;
begin
if ( ( pid = exists( type _key_init ) ) && pid.id != id ) return; end
priority = 1000;
loop
_key_use ^= 1;
for ( i = 0; i < 127; i++ )
_key_state[ i ][ _key_use ] = key( i );
end
frame;
end
end
function _key_exit()
begin
signal( type _key_init, s_kill );
end
function int _key(int k, int ev)
begin
switch( ev )
case _key_down:
return ( _key_state[ k ][ _key_use ] && !_key_state[ k ][ _key_use ^ 1 ] );
end
case _key_up:
return ( !_key_state[ k ][ _key_use ] && _key_state[ k ][ _key_use ^ 1 ] );
end
end
return ( _key_state[ k ][ _key_use ] );
end
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( _SPACE, _key_down );
b = _key( _SPACE, _key_up );
c = _key( _SPACE, _key_pressed );
frame;
end
_key_exit();
end
debo decir que a diferencia de todos los codigos que pusieron, esto no frena ningun proceso, mantiene estados independientes y constantes para todas las teclas, y es generico.