X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pages%2FSDL-Joystick.html-inc;h=14dd677a981262c149a0532bf9bba91f4cb4230c;hb=d5943b684b1240307fbf0a103abbf18dd93998f4;hp=a6a7a6641eca4e03a2e8c160210407ef9b3340e9;hpb=b82df1356a6be5ab828d198947fe0e5b76efd735;p=sdlgit%2FSDL-Site.git diff --git a/pages/SDL-Joystick.html-inc b/pages/SDL-Joystick.html-inc index a6a7a66..14dd677 100644 --- a/pages/SDL-Joystick.html-inc +++ b/pages/SDL-Joystick.html-inc @@ -3,7 +3,27 @@

Index


@@ -15,7 +35,246 @@

CATEGORY

Top

-

TODO, Core, Joystick

+

Core, Joystick

+ +
+

SYNOPSIS

Top

+
+
 use SDL;
+ use SDL::Joystick;
+
+ SDL::init_sub_system(SDL_INIT_JOYSTICK);
+
+ die('no joystick found') unless(SDL::Joystick::num_joysticks());
+
+ my $joystick = SDL::Joystick->new(0);
+
+
+ +
+

METHODS

Top

+
+ +
+

num_joysticks

+
+
 int SDL::Joystick::num_joysticks( void );
+
+
+

Counts and returns available joysticks.

+ +
+

name

+
+
 string SDL::Joystick::name( index );
+
+
+

Get the implementation dependent name of joystick. The index parameter refers to the N'th joystick on the system.

+
 my $num_joysticks = SDL::Joystick::num_joysticks();
+
+ printf("%d joysticks found\n", $num_joysticks);
+
+ for($i = 0; $i < $num_joysticks; $i++)
+ {
+     printf("%s\n", SDL::Joystick::name($i));
+ }
+
+
+ +
+

new

+
+
 object SDL::Joystick->new( index );
+
+
+

Opens a joystick for use within SDL. The index refers to the N'th joystick in the system. +A joystick must be opened before it can be used.

+
 # Initialize the joystick subsystem
+ SDL::init_sub_system(SDL_INIT_JOYSTICK);
+
+ # Check for joystick
+ if(SDL::Joystick::num_joysticks() > 0)
+ {
+     # Open joystick
+     my $joystick = SDL::Joystick->new(0);
+
+     if($joystick)
+     {
+         printf("Opened Joystick 0\n");
+         printf("Name: %s\n",              SDL::Joystick::name(0));
+         printf("Number of Axes: %d\n",    SDL::Joystick::num_axes($joystick));
+         printf("Number of Buttons: %d\n", SDL::Joystick::num_buttons($joystick));
+         printf("Number of Balls: %d\n",   SDL::Joystick::num_balls($joystick));
+     }
+     else
+     {
+         printf("Couldn't open Joystick 0\n");
+     }
+
+     # Close if opened
+     SDL::Joystick::close($joystick) if SDL::Joystick::opened(0);
+ }
+
+
+ +
+

opened

+
+
 int SDL::Joystick::opened( index );
+
+
+

Determines whether a joystick has already been opened within the application. index refers to the N'th joystick on the system.

+

Returns 1 if the joystick has been opened, or 0 if it has not.

+ +
+

index

+
+
 int SDL::Joystick::index( object );
+
+
+

Returns the index of a given SDL_Joystick structure. See SDL::Joystick::new

+ +
+

num_axes

+
+
 int SDL::Joystick::num_axes( object );
+
+
+

Return the number of axes available from a previously opened joystick. See SDL::Joystick::new

+ +
+

num_balls

+
+
 int SDL::Joystick::num_balls( object );
+
+
+

Return the number of trackballs available from a previously opened joystick. See SDL::Joystick::new

+ +
+

num_hats

+
+
 int SDL::Joystick::num_hats( object );
+
+
+

Gets the number of joystick hats from a previously opened joystick. See SDL::Joystick::new

+ +
+

num_buttons

+
+
 int SDL::Joystick::num_buttons( object );
+
+
+

Gets the number of joystick buttons from a previously opened joystick. See SDL::Joystick::new

+ +
+

update

+
+
 void SDL::Joystick::update();
+
+
+

Updates the state(position, buttons, etc.) of all open joysticks. If joystick events have been enabled +with SDL::Joystick::event_state then this is called automatically in the event loop.

+ +
+

get_axis

+
+

get_axis returns the current state of the given axis on the given joystick.

+

On most modern joysticks the X axis is usually represented by axis 0 and the Y axis by axis 1. +The value returned by get_axis is a signed integer (-32768 to 32767) representing the current position of the axis, +it may be necessary to impose certain tolerances on these values to account for jitter.

+

Note: Some joysticks use axes 2 and 3 for extra buttons.

+

Returns a 16-bit signed integer representing the current position of the axis.

+
 my $joystick = SDL::Joystick->new(0);
+
+ my $x_move   = SDL::Joystick::get_axis($joystick, 0);
+ my $y_move   = SDL::Joystick::get_axis($joystick, 1);
+
+
+ +
+

get_hat

+
+
 int SDL::Joystick::get_hat( object, int );
+
+
+

get_hat returns the current state of the given hat on the given joystick.

+

The current state is returned which is an OR'd combination of one or more of the following:

+ + +
 my $joystick = SDL::Joystick->new(0);
+
+ my $position = SDL::Joystick::get_hat($joystick, 0);
+
+ print("hat is in position UP\n") if $position & SDL_HAT_UP;
+
+
+ +
+

get_button

+
+
 int SDL::Joystick::get_button( object, int );
+
+
+

get_button returns the current state of the given button on the given joystick.

+

Returns 1 if the button is pressed. Otherwise, 0.

+
 my $joystick    = SDL::Joystick->new(0);
+
+ my $num_buttons = SDL::Joystick::num_buttons($joystick);
+
+ for(my $i = 0; $i < $num_buttons; $i++)
+ {
+     printf("button %d is %s\n", $i, SDL::Joystick::get_button($joystick, $i) ? 'pressed' : 'not pressed');
+ }
+
+ SDL::Joystick::close($joystick) if SDL::Joystick::opened(0);
+
+
+ +
+

get_ball

+
+
 int SDL::Joystick::get_ball(SDL_Joystick $joystick, int $ball, int $dx, int $dy);
+
+
+

Get the ball axis change.

+

Trackballs can only return relative motion since the last call to SDL::Joystick::get_ball, these motion deltas are placed into dx and dy.

+

Returns 0 on success or -1 on failure

+
 my $delta_x  = 0;
+ my $delta_y  = 0;
+ my $joystick = SDL::Joystick->new(0);
+
+ SDL::Joystick::update();
+
+ printf("TrackBall Read Error!\n") if(SDL::JoystickGetBall($joystick, 0, $delta_x, $delta_y) == -1);
+ printf("Trackball Delta- X:%d, Y:%d\n", delta_x, delta_y);
+
+
+ +
+

close

+
+
 void SDL::Joystick::close( object );
+
+
+

Closes a previously opened joystick. See SDL::Joystick::new

+
 SDL::Joystick::close($joystick) if SDL::Joystick::opened(0);
+
+
+ +
+

AUTHORS

Top

+
+

See AUTHORS in SDL.

\ No newline at end of file