#!/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 { use Data::Dump; my $state = Gtk2->get_current_event->get_state ; dd[ @_, $state ]; dd[ $state->as_arrayref ]; } ); $mw->add( $button ); $mw->show_all; Gtk2->main; __END__ [bless(do{\(my $o = 257)}, "Gtk2::Gdk::ModifierType")] $ perl -MData::Dump -MGtk2 -e " dd [ \%Gtk2::Gdk::ModifierType:: ] do { my $a = [{ ISA => *Gtk2::Gdk::ModifierType::ISA }]; $a->[0]{ISA} = ["Glib::Flags"]; $a; } $ perl -MData::Dump -MGtk2 -e " dd [ \%Glib::Flags:: ] do { my $a = [ { "(!=" => *Glib::Flags::(!=, "(\"\"" => *Glib::Flags::("", "(&" => *Glib::Flags::(&, "()" => *Glib::Flags::(), "(*" => *Glib::Flags::(*, "(+" => *Glib::Flags::(+, "(-" => *Glib::Flags::(-, "(/" => *Glib::Flags::(/, "(==" => *Glib::Flags::(==, "(>=" => *Glib::Flags::(>=, "(\@{}" => *Glib::Flags::(@{}, "(^" => *Glib::Flags::(^, "(bool" => *Glib::Flags::(bool, "(eq" => *Glib::Flags::(eq, "(ne" => *Glib::Flags::(ne, "(|" => *Glib::Flags::(|, "__ANON__" => *Glib::Flags::__ANON__, "all" => *Glib::Flags::all, "as_arrayref" => *Glib::Flags::as_arrayref, "BEGIN" => *Glib::Flags::BEGIN, "bool" => *Glib::Flags::bool, "eq" => *Glib::Flags::eq, "ge" => *Glib::Flags::ge, "intersect" => *Glib::Flags::intersect, "ne" => *Glib::Flags::ne, "new" => *Glib::Flags::new, "OVERLOAD" => *Glib::Flags::OVERLOAD, "sub" => *Glib::Flags::sub, "union" => *Glib::Flags::union, "xor" => *Glib::Flags::xor, }, ]; $a->[0]{"()"} = \1; $a->[0]{"OVERLOAD"} = { dummy => 1 }; $a; } [ bless({}, "Gtk2::Button"), bless(do{\(my $o = 257)}, "Gtk2::Gdk::ModifierType"), ] [["shift-mask", "button1-mask"]]