Set first meta mode to fix keyboard navigation.
no warnings 'uninitialized'; # save some useless checks for more legible code
use Carp;
no warnings 'uninitialized'; # save some useless checks for more legible code
use Carp;
my @casedesc = (undef, qw/shift ctrl meta/, 'shift meta');
my @rowdesc = qw(numeric top home bottom);
my @casedesc = (undef, qw/shift ctrl meta/, 'shift meta');
my @rowdesc = qw(numeric top home bottom);
printf qq{<tbody class="row row%d">\n}, $row+1;
for my $basemode (@modes) {
my @moderows = split /\s+/,
printf qq{<tbody class="row row%d">\n}, $row+1;
for my $basemode (@modes) {
my @moderows = split /\s+/,
+ $row < 0 ? '1' : # top row (esc key) always unshifted
$moderows{$basemode} // $moderows{-DEFAULT};
for my $submode (@moderows ? @moderows : '') {
$moderows{$basemode} // $moderows{-DEFAULT};
for my $submode (@moderows ? @moderows : '') {