Author image David J. Goehrig

NAME

SDL::Event - a SDL perl extension

SYNOPSIS

 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;
 }
 

EXPORTS

SDL::Event exports the following symbols by default:

       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.

DESCRIPTION

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.

EXAMPLE

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();
                       }
               }
       }

METHODS

new()

Create a new event object.

type()

Returns the type of the event, see list of exported symbols for which are available.

pump()

poll()

wait()

Waits for an event end returns then. Always returns true.

set()

       $event->set($type,$state);

Set type and state of the event.

set_unicode()

       $event->set_unicode($toggle);

Toggle unicode on the event.

set_key_repeat()

       $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).

active_gain()

active_state()

key_state()

key_sym()

key_name()

key_mod()

key_unicode()

key_scancode()

motion_state()

motion_x()

       my $dist = $event->motion_x();

Returns the motion of the mouse in X direction as an absolute value.

motion_y()

       my $dist = $event->motion_y();

Returns the motion of the mouse in Y direction as an absolute value.

motion_xrel()

       my $rel_dist = $event->motion_xrel();

Returns the motion of the mouse in X direction as a relative value.

motion_yrel()

       my $rel_dist = $event->motion_xrel();

Returns the motion of the mouse in Y direction as a relative value.

button_state()

Returns the state of the mouse buttons.

button_x()

button_y()

button()

AUTHOR

 David J. Goehrig
 Documentation by Tels <http://bloodgate.com/>

SEE ALSO

  perl(1) and L<SDL::App>.