SDL::Event - a SDL perl extension
use SDL::Event; my $event = new SDL::Event; # create a new event while ($event->wait()) { my $type = $event->type(); # get event type # ... handle event exit if $type == SDL_QUIT; }
SDL::Event exports the following symbols by default:
SDL::Event
SDL_IGNORE SDL_ENABLE SDL_QUERY SDL_ACTIVEEVENT SDL_KEYDOWN SDL_KEYUP SDL_MOUSEMOTION SDL_MOUSEBUTTONDOWN SDL_MOUSEBUTTONUP SDL_QUIT SDL_SYSWMEVENT SDL_APPMOUSEFOCUS SDL_APPINPUTFOCUS SDL_APPACTIVE SDL_PRESSED SDL_RELEASED SDLK_BACKSPACE SDLK_TAB SDLK_CLEAR SDLK_RETURN SDLK_PAUSE SDLK_ESCAPE SDLK_SPACE SDLK_EXCLAIM SDLK_QUOTEDBL SDLK_HASH SDLK_DOLLAR SDLK_AMPERSAND SDLK_QUOTE SDLK_LEFTPAREN SDLK_RIGHTPAREN SDLK_ASTERISK SDLK_PLUS SDLK_COMMA SDLK_MINUS SDLK_PERIOD SDLK_SLASH SDLK_0 SDLK_1 SDLK_2 SDLK_3 SDLK_4 SDLK_5 SDLK_6 SDLK_7 SDLK_8 SDLK_9 SDLK_COLON SDLK_SEMICOLON SDLK_LESS SDLK_EQUALS SDLK_GREATER SDLK_QUESTION SDLK_AT SDLK_LEFTBRACKET SDLK_BACKSLASH SDLK_RIGHTBRACKET SDLK_CARET SDLK_UNDERSCORE SDLK_BACKQUOTE SDLK_a SDLK_b SDLK_c SDLK_d SDLK_e SDLK_f SDLK_g SDLK_h SDLK_i SDLK_j SDLK_k SDLK_l SDLK_m SDLK_n SDLK_o SDLK_p SDLK_q SDLK_r SDLK_s SDLK_t SDLK_u SDLK_v SDLK_w SDLK_x SDLK_y SDLK_z SDLK_DELETE SDLK_KP0 SDLK_KP1 SDLK_KP2 SDLK_KP3 SDLK_KP4 SDLK_KP5 SDLK_KP6 SDLK_KP7 SDLK_KP8 SDLK_KP9 SDLK_KP_PERIOD SDLK_KP_DIVIDE SDLK_KP_MULTIPLY SDLK_KP_MINUS SDLK_KP_PLUS SDLK_KP_ENTER SDLK_KP_EQUALS SDLK_UP SDLK_DOWN SDLK_RIGHT SDLK_LEFT SDLK_INSERT SDLK_HOME SDLK_END SDLK_PAGEUP SDLK_PAGEDOWN SDLK_F1 SDLK_F2 SDLK_F3 SDLK_F4 SDLK_F5 SDLK_F6 SDLK_F7 SDLK_F8 SDLK_F9 SDLK_F10 SDLK_F11 SDLK_F12 SDLK_F13 SDLK_F14 SDLK_F15 SDLK_NUMLOCK SDLK_CAPSLOCK SDLK_SCROLLOCK SDLK_RSHIFT SDLK_LSHIFT SDLK_RCTRL SDLK_LCTRL SDLK_RALT SDLK_LALT SDLK_RMETA SDLK_LMETA
For instance, SDLK_F12 means the key F12, SDLK_KP9 means the key labeled '9' on the keypad (KP). Check for SDL_KEYDOWN for whether a key was pressed or not.
SDLK_F12
SDLK_KP9
SDL::Event offers an object-oriented approach to SDL events. By creating an instance of SDL::Event via new() you can wait for events, and then determine the type of the event and take an appropriate action.
Here is an example of a simple event handler loop routine. See also SDL::App::loop.
sub loop { my ($self,$href) = @_; my $event = new SDL::Event; while ( $event->wait() ) { # ... insert here your event handling like: if ( ref($$href{$event->type()}) eq "CODE" ) { &{$$href{$event->type()}}($event); $self->sync(); } } }
Create a new event object.
Returns the type of the event, see list of exported symbols for which are available.
Waits for an event end returns then. Always returns true.
$event->set($type,$state);
Set type and state of the event.
$event->set_unicode($toggle);
Toggle unicode on the event.
$event->set_key_repeat($delay,$interval);
Sets the delay and intervall of the key repeat rate (e.g. when a user holds down a key on the keyboard).
my $dist = $event->motion_x();
Returns the motion of the mouse in X direction as an absolute value.
my $dist = $event->motion_y();
Returns the motion of the mouse in Y direction as an absolute value.
my $rel_dist = $event->motion_xrel();
Returns the motion of the mouse in X direction as a relative value.
Returns the motion of the mouse in Y direction as a relative value.
Returns the state of the mouse buttons.
David J. Goehrig Documentation by Tels <http://bloodgate.com/>
perl(1) and L<SDL::App>.
To install SDL_perl, copy and paste the appropriate command in to your terminal.
cpanm
cpanm SDL_perl
CPAN shell
perl -MCPAN -e shell install SDL_perl
For more information on module installation, please visit the detailed CPAN module installation guide.