Group
Extension

JSON-Karabiner/lib/JSON/Karabiner/Manipulator/Actions.pm

package JSON::Karabiner::Manipulator::Actions ;
$JSON::Karabiner::Manipulator::Actions::VERSION = '0.018';
use strict;
use warnings;
use JSON;
use Carp;

sub new {
  my $class = shift;
  my $type = shift;

  my $self = {
    def_name => $type,
    consumer_key_code => 0,
    pointing_button => 0,
    key_code => 0,
    any => 0,
    last_key_code => '',

  };
  bless $self, $class;
  {
    no warnings 'once';
    $main::current_action = $self;
  }
  return $self;
}

sub add_consumer_key_code {
  my $s = shift;
  croak 'You must pass a value' if !$_[0];
  $s->add_key_code(@_, 'consumer_key_code');
}

sub add_pointing_button {
  my $s = shift;
  croak 'You must pass a value' if !$_[0];
  $s->add_key_code(@_, 'pointing_button');
}

sub _is_exclusive {
  my $s = shift;
  my $property = shift;
  croak 'No property passed' unless $property;
#  my $is_exclusive = !grep { !$s->{$_} unless $_ eq $property } qw(shell_command select_input_source set_variable mouse_key consumer_key_code pointing_button key_code);
#  croak 'Property already set that conflicts with the propert you are trying to set' unless $is_exclusive;
  $s->{$property} = 1;
}


# ABSTRACT: parent class for action classes

1;

__END__

=pod

=head1 NAME

JSON::Karabiner::Manipulator::Actions - parent class for action classes

=head1 DESCRIPTION

Please see the documentation for the
L<JSON::Karabiner::Manipulator::Actions::To> and
L<JSON::Karabiner::Manipulator::Actions::From> parent class actions for more
descriptive documentation of all action object methods. Methods are listed below
for reference purposes only.

=head3 new($type)

=head3 add_consumer_key_code(@values)

=head3 add_pointing_button(@values)

=head3 TO_JSON()

=head1 VERSION

version 0.018

=head1 AUTHOR

Steve Dondley <s@dondley.com>

=head1 COPYRIGHT AND LICENSE

This software is copyright (c) 2020 by Steve Dondley.

This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.

=cut


Powered by Groonga
Maintained by Kenichi Ishigaki <ishigaki@cpan.org>. If you find anything, submit it on GitHub.