#!/usr/bin/perl use warnings; use strict; use Glib qw/TRUE FALSE/; use Gtk2::Gdk::Keysyms; use Gtk2 '-init'; $|++; my $window = Gtk2::Window->new('toplevel'); $window->set_title('Z0'); $window ->signal_connect( 'destroy' => \&delete_event ); $window->set_border_width(10); $window->set_size_request(300,200); my $window1 = Gtk2::Window->new('toplevel'); $window1->set_title('Z1'); $window1->set_border_width(10); $window1->set_size_request(300,200); my $textbuffer1 = Gtk2::TextBuffer->new(); my $textview1 = Gtk2::TextView->new_with_buffer($textbuffer1); $window1->add($textview1); my $vbox = Gtk2::VBox->new( FALSE, 6 ); $window->add($vbox); $vbox->set_border_width(2); my $textbuffer = Gtk2::TextBuffer->new(); my $textview = Gtk2::TextView->new_with_buffer($textbuffer); $vbox->pack_start($textview,1,1,0); my $hbox= Gtk2::HBox->new( FALSE, 6 ); $vbox->pack_end($hbox,FALSE,FALSE,0); $hbox->set_border_width(2); my $button = Gtk2::Button->new_from_stock('gtk-quit'); $hbox->pack_end( $button, FALSE, FALSE, 0 ); $button->signal_connect( clicked => \&delete_event ); my $button1 = Gtk2::Button->new('Global Grab'); $hbox->pack_end( $button1, FALSE, FALSE, 0 ); $button1->signal_connect( clicked => sub{ # my $rc; # $rc = Gtk2::Gdk->pointer_grab($window->window,1,['button-press-mask','button-release-mask','pointer-motion-mask'],undef,undef,Gtk2->get_current_event_time); # print "$rc\n"; # $rc = Gtk2::Gdk->keyboard_grab($window->window,0,Gtk2->get_current_event_time); # print "$rc\n"; $window->grab_focus; } ); $window->set_position('center'); $window->show_all(); $window1->show_all(); $window->signal_connect( 'key_release_event' => \&keyrelease ); $window->signal_connect (event => sub { my ($item, $event) = @_; warn "event ".$event->type."\n"; # print chr(07); #beep return 0; #return 1 prevents window from closing # return 0 lets the signal thru }); Gtk2->main; ##################################### sub delete_event { Gtk2->main_quit; return FALSE; } sub keyrelease { my ( $widget, $event ) = @_; print $event->keyval,"\n"; print chr(07); #beep if ( $event->keyval == $Gtk2::Gdk::Keysyms{q} ) { Gtk2->main_quit; } else { print "key was ", chr( $event->keyval ), "\n"; } }