package xKey;
use strict;
use warnings;

#our $VERSION='0.01';

sub new {
   my $self = {
      __char => undef,
      __press => undef,
      __release => undef
   };
   bless $self, 'xKey';
   return $self;
}

sub ch {
   my ($self,$ch) = @_;
   $self->{__char}="$ch" if defined($ch);
   return $self->{__char};
}


sub key_act {
   my ($self, $event, $timestamp) =@_;
   my $rc=undef;
   if(defined($event) and defined($timestamp)) {
      if($event=~/KeyPress/) {
         $self->{__press} = $timestamp if defined($timestamp);
         $rc=$self->{__press};
      } elsif($event=~/KeyRelease/) {
         $self->{__release} = $timestamp if defined($timestamp);
         $rc=$self->{__release};
      } 
   }
   return $rc;
}

sub key {
   my ($self) = @_;
   return $self->{__char};
}

sub times {
   my ($self)=@_;
   return ($self->{__press},$self->{__release});
}

sub p {
   my ($self)=@_;
   return $self->{__press};
}

sub r {
   my ($self)=@_;
   return $self->{__release};
}
sub print {
   my ($self) =@_;
   my ($p,$r)=$self->times;

   if(defined $self->key) {
      printf("%20s\t",$self->key);

      if(defined $p) { print "$p\t";
      } else { print "unknown\t"; }

      if(defined $r) { print "$r\t";
      } else { print "unknown\t"; }
      print "\n";
   }
#   printf("%s\t%d\t%d\n",$self->key, $p, $r);
}
1;

