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