X-Git-Url: http://git.shiar.nl/sheet.git/blobdiff_plain/ec70841119a49ebeed4e14ce682f29d15e1ed27d..114fe2a6b2b8dcfbe3c518f50a2d6b22495ffdd0:/Shiar_Sheet/Keyboard.pm diff --git a/Shiar_Sheet/Keyboard.pm b/Shiar_Sheet/Keyboard.pm index 2b3cc86..c5fdb09 100644 --- a/Shiar_Sheet/Keyboard.pm +++ b/Shiar_Sheet/Keyboard.pm @@ -6,7 +6,7 @@ use warnings; no warnings 'uninitialized'; # save some useless checks for more legible code use Carp; -our $VERSION = 'v2.05'; +our $VERSION = 'v2.06'; my @casedesc = (undef, qw/shift ctrl meta/, 'shift meta'); my @rowdesc = qw(numeric top home bottom); @@ -125,11 +125,13 @@ sub print_key { sub print_rows { my $self = shift; + my ($rowsspec, $defrows) = @_; + $defrows ||= [2, 1, 0]; my %moderows = ( - -DEFAULT => !!@_ && $_[0] ne '' && split(/(?:\s*([^=\s]*)=\s*)/, shift), + -DEFAULT => defined $rowsspec && $rowsspec ne '' && + split(/\s* ([^=\s]*) = \s*/x, $rowsspec), # plus specific mode overrides prefixed by '=' ); - my $defrows = shift || [2, 1, 0]; my @modes = sort keys %{ $self->{def} }; print ''."\n\n"; @@ -140,8 +142,8 @@ sub print_rows { printf qq{\n}, $row+1; for my $basemode (@modes) { my @moderows = split /\s+/, - $row < 0 ? "0" : - defined $moderows{$basemode} ? $moderows{$basemode} : $moderows{-DEFAULT}; + $row < 0 ? '1' : # top row (esc key) always unshifted + $moderows{$basemode} // $moderows{-DEFAULT}; for my $submode (@moderows ? @moderows : '') { my $mode = $basemode . $submode;