1use strict; 2use warnings; 3 4use Test::More; 5use Prima::sys::Test; 6 7plan tests => 3; 8 9reset_flag; 10my @keydata = (); 11my $window = create_window; 12my $c = $window-> insert( Widget => 13 onCreate => \&set_flag, 14 onDestroy => \&set_flag, 15 onKeyDown => sub { set_flag; push( @keydata, [@_]); }, 16 onKeyUp => sub { set_flag; push( @keydata, [ $_[0]-> get_shift_state, @_]) }, 17); 18 19$c-> key_event( cm::KeyDown, ord(' '), kb::Space, 0, 1, 0); 20@keydata = grep { scalar @$_ == 5 && $$_[1] == ord(' ') && $$_[2] == kb::Space && $$_[3] == 0} @keydata; 21ok( get_flag && scalar @keydata, "send" ); 22@keydata = (); 23 24$c-> key_event( cm::KeyDown, ord(' '), kb::Space, 0, 1, 1); 25reset_flag; 26my $ww = wait_flag; 27@keydata = grep { scalar @$_ == 5 && $$_[1] == ord(' ') && $$_[2] == kb::Space && $$_[3] == 0} @keydata; 28ok( $ww && scalar @keydata, "post" ); 29@keydata = (); 30 31$c-> key_event( cm::KeyUp, 0, kb::Down, km::Ctrl|km::Shift, 1, 0); 32@keydata = grep { scalar @$_ == 5 && $$_[3] == kb::Down && $$_[4] == (km::Ctrl|km::Shift) } @keydata; 33ok(get_flag && scalar @keydata, "simulation" ); 34@keydata = (); 35 36$c-> destroy; 37