On Jan 2, 2011, at 7:45 PM, Pawel Krol wrote:

> Hello!
> 
> This is my first message to this mailing list, so I would like to say "hi!" 
> to everyone.
> 

Welcome!

> I am writing this e-mail, seeking for help from more experienced wxPerl 
> users. A problem I am dealing with is that I cannot get any key pressed 
> information while my program is running. It works fine for mouse events for 
> example, I have no luck with keyboard events however.
> 
> Here is a simple example that best describes the issue I am dealing with:
> 
> --------------------------------------------------
> 
> #!/usr/bin/perl
> 
> my $myApp = MyApp->new();
> $myApp->MainLoop;
> 
> package MyApp;
> 
> use base qw(Wx::App);
> use Wx;
> use Wx::Event qw(EVT_LEFT_DOWN EVT_KEY_DOWN);
> 
> sub OnInit {
>    my $frame = Wx::Frame->new(undef, -1, 'TEST');
>    $frame->Show();
>    EVT_LEFT_DOWN($frame, \&mouse);
>    EVT_KEY_DOWN($frame, \&keyboard);
>    return 1;
> }
> 
> sub mouse {
>    print "Success! Left mouse button pressed!\n"
> }
> 
> sub keyboard {
>    print "Failure! Why cannot ever get here?\n"
> }
> 
> 1;
> 
> --------------------------------------------------
> 
> No matter what key I press on the keyboard, text from "keyboard" subroutine 
> never appears in the console output. If you could somehow direct me how to 
> get this to work, I would be very grateful.
> 
> Thanks for help!
> 
> Best regards,
> Pawel Krol.
> 


What platform and versions are you using?
Your snippet works fine on my Mac OsX (10.6.5):

perl      : v5.8.9 built for darwin-2level
wxPerl    : 0.93
wxWidgets : wxWidgets 2.8.10

Not the latest & greatest but unless there's a bug in the version you're using 
I don't see why it won't work.
Did you try EVT_CHAR or EVT_KEY_UP too?

Also note that on most events you might want to call Skip() if you want it to 
propagate through to the native control(s):

sub keyboard {
        my( $self, $event ) = @_;
        printf "code: %d\n", $event->GetKeyCode;
        $event->Skip();
}

Cheers,
Huub

Reply via email to