The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
#!/usr/bin/perl
use ExtUtils::testlib;
use Linux::Input::Wiimote;

print qq!
    test.pl - libcwiimote perl module test application

    USAGE: perl $0 \$addr

    A    - hold to Enable accelerometer
    1    - hold to Enable rumble
    Home - Exit

    Press buttons 1 and 2 on the wiimote now to connect.

!;

my $wii = new Linux::Input::Wiimote;
my $addr = shift;

die 'No address provided!' unless $addr;

print "Connect " . $wii->wiimote_connect( $addr );
print "\n-------------------------------\n";

while ( $wii->wiimote_is_open() ) {
    $wii->wiimote_update();

    if ( $wii->get_wiimote_keys_1 ) {
        $wii->set_wiimote_rumble( 1 );
    }
    else {
        $wii->set_wiimote_rumble( 0 );
    }

    if ( $wii->get_wiimote_keys_2 ) {
        $wii->set_wiimote_ir( 1 );
    }
    else {
        $wii->set_wiimote_ir( 0 );
    }

    if ( $wii->get_wiimote_keys_a ) {
        $wii->activate_wiimote_accelerometer();
    }
    else {
        $wii->deactivate_wiimote_accelerometer();
    }

    print "Wiimote 	Key bits: " . $wii->get_wiimote_keys_bits() . "\n";

    printf(
        "		Axis X:%.3f   Y:%.3f  Z:%.3f \n",
        $wii->get_wiimote_axis_x(),
        $wii->get_wiimote_axis_y(),
        $wii->get_wiimote_axis_z()
    );

    printf(
        "		Tilt X:%.3f   Y:%.3f  Z:%.3f \n",
        $wii->get_wiimote_tilt_x(),
        $wii->get_wiimote_tilt_y(),
        $wii->get_wiimote_tilt_z()
    );

    printf(
        "		Force X:%.3f   Y:%.3f  Z:%.3f \n",
        $wii->get_wiimote_force_x(),
        $wii->get_wiimote_force_y(),
        $wii->get_wiimote_force_z()
    );

    print "\n-------------------------------------\n";

    printf(
        "Nunchuck	Axis X:%.3f   Y:%.3f  Z:%.3f \n",
        $wii->get_wiimote_ext_nunchuk_axis_x(),
        $wii->get_wiimote_ext_nunchuk_axis_y(),
        $wii->get_wiimote_ext_nunchuk_axis_z()
    );

    print " 		Keys C : " . $wii->get_wiimote_ext_nunchuk_keys_c();
    print " Z: " . $wii->get_wiimote_ext_nunchuk_keys_z() . "\n";

    print "		Joystick X: " . $wii->get_wiimote_ext_nunchuk_joyx();
    print " Y: " . $wii->get_wiimote_ext_nunchuk_joyy();
    print "\n-------------------------------------\n";

    if ( $wii->get_wiimote_keys_home ) {
        $wii->wiimote_disconnect();
    }
    if ( $wii->get_wiimote_keys_up ) {
        print "\n UP \n";
    }
    if ( $wii->get_wiimote_keys_down ) {
        print "\n DOWN \n";
    }
    if ( $wii->get_wiimote_keys_left ) {
        print "\n LEFT \n";
    }
    if ( $wii->get_wiimote_keys_right ) {
        print "\n RIGHT \n";
    }
    if ( $wii->get_wiimote_keys_a ) {
        print "\n A KEY \n";
    }
    if ( $wii->get_wiimote_keys_b ) {
        print "\n B KEY \n";
    }
    if ( $wii->get_wiimote_keys_1 ) {
        print "\n 1 KEY \n";
    }
    if ( $wii->get_wiimote_keys_2 ) {
        print "\n 2 KEY \n";
    }
    if ( $wii->get_wiimote_keys_minus ) {
        print "\n MINUS KEY \n";
    }
    if ( $wii->get_wiimote_keys_plus ) {
        print "\n PLUS KEY \n";
    }
}