#!/usr/bin/perl -w use strict; use diagnostics; use Gtk2 -init; my $mw = Gtk2::Window->new(); $mw->signal_connect( 'delete_event' => sub { Gtk2->main_quit; } ); my $button=Gtk2::Button->new_from_stock( 'gtk-add' ); $button->add_events( 'key-press-mask' ); $button->signal_connect( 'clicked' => sub { my ( $widget, $event ) = @_; action( $widget, $event ) } ); $mw->add( $button ); $mw->show_all; Gtk2->main; sub action { my ( $widget, $event ) = @_; if ( ($event->state() & GDK_SHIFT_MASK) == GDK_SHIFT_MASK ) { print "The shift key was pressed\n"; } else { print "The shift key was NOT pressed\n"; } }