From: Mischa POSLAWSKY Date: Mon, 20 May 2024 22:45:41 +0000 (+0200) Subject: keyboard/altgr/index: move ctrl rows to distinct inventory mode X-Git-Url: http://git.shiar.net/sheet.git/commitdiff_plain/refs/heads/master?hp=4c28c0f1dd2556ecb920f2cea1785527e6c44a06 keyboard/altgr/index: move ctrl rows to distinct inventory mode Prevent inflation of emojiworks, similar to meta rows elsewhere. --- diff --git a/Makefile b/Makefile index df6cbe5..7db808b 100644 --- a/Makefile +++ b/Makefile @@ -30,7 +30,7 @@ word/put.js: $(download) word/%.min.js: word/%.js uglifyjs -m '' $< -o $@ -data: data/digraphs.json data/unicode-cover.inc.pl data/countries.inc.pl data/browser data/termcol-xcolor.inc.pl data/digraphs-xorg.json data/unicode-sampler word +data: data/digraphs.json data/unicode-cover.inc.pl data/countries.inc.pl data/browser data/termcol-xcolor.inc.pl data/digraphs-xorg.json data/unicode-sampler word keyboard/symbols/unigraph data/DerivedAge.txt: $(download) tools/wget-ifmodified http://www.unicode.org/Public/UNIDATA/$(@F) $@ @@ -56,6 +56,9 @@ data/keysymdef.json: tools/mkxkeysymdef data/keysymdef.h data/digraphs-xorg.json: tools/mkdigraphs-xorg data/xorg-compose data/keysymdef.json $(call cmdsave,$^) +keyboard/symbols/%: tools/mkxkbsymbols data/keyboard/altgr/%.eng.json + $(call cmdsave,$^) + data/digraphs-vim.inc.pl: tools/mkdigraphs-vim $(call cmdsave,$<) diff --git a/Shiar_Sheet/Keyboard.pm b/Shiar_Sheet/Keyboard.pm index c7e455b..4d1c54e 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 = '2.10'; +our $VERSION = '3.01'; my @casedesc = (undef, qw/shift ctrl meta/, 'shift meta'); my @rowdesc = qw(numeric top home bottom); @@ -80,12 +80,13 @@ sub keyunalias { my $self = shift; my ($key, $ancestry) = @_; - $key =~ s/(\S*?)(\+?\^?\S)($|\s.*)/$2/; + $key =~ s/(\S*?)(\+?\^?\S$)/$2/; my $mode = $1; my $keyinfo = $self->{def}->{$mode}->{$key}; return unless defined $keyinfo; - $keyinfo =~ s/^=// or return $keyinfo; + return $keyinfo unless ref $keyinfo eq 'SCALAR'; + $keyinfo = ${$keyinfo}; return '' if $ancestry->{$key}++; # endless loop failsafe return $self->keyunalias($keyinfo, $ancestry); } @@ -105,32 +106,44 @@ sub print_letter { sub print_key { my $self = shift; - my ($mode, $key, $flags) = @_; - my ($desc, $mnem); + my ($mode, $key, $def) = @_; - if (not defined $flags) { - $flags = $key eq '^0' ? 'ni' : 'no'; + if (not defined $def) { + $def = [$key eq '^0' ? 'ni' : 'no']; } - elsif ($flags =~ s/^=(\S+)\s?//) { # alias - my $ref = $1; - $desc = $self->{sign}->{alias} . ($ref eq "\e" ? 'esc' : $ref); - $flags = join ' ', $self->keyunalias($ref), 'alias', $flags; + elsif (ref $def eq 'SCALAR') { + $def = [undef, $def]; } - if (my $txt = $self->{key}->{$mode.$key}) { - ($desc, $mnem) = split /\n/, $self->escapedesc($txt); + if (ref $def ne 'ARRAY') { + carp "print_key: invalid definition for $mode$key: $def"; + return; } + my ($flags, $txt) = @{$def}; + if (ref $txt eq 'SCALAR') { + my $ref = ${$txt}; + $def = $self->keyunalias($ref); + $ref = 'esc' if $ref eq "\e"; + $flags //= $def->[0] if ref $def eq 'ARRAY'; + $txt = $self->{sign}->{alias} . $ref; + $flags .= ' alias'; + } + my ($desc, $mnem) = split /\n/, $self->escapedesc($txt); + my $onclick = $flags =~ s/ ?\bmode(\S*)// && defined $self->{def}{$1} && sprintf( + ' onclick="setmode(%s)"', + $1 eq '' ? '' : sprintf(q{'mode%s'}, escapeclass($1)) + ); + my $keyhint = defined($mnem) && qq{ title="$mnem"}; + if ($self->{tableclass} =~ /\bbig\b/) { + $onclick .= $keyhint; + $keyhint = ''; + } my $keytxt = $self->print_letter($key, $mode); $keytxt .= "$self->{sign}->{motion}" if $flags =~ s/ ?\bargm\b//; # motion argument $keytxt .= $self->{sign}->{$1} while $flags =~ s/(?:^| )(arg[a-ln-z]?)\b//; # arguments - my $keyhint = defined($mnem) && qq{ title="$mnem"}; $keytxt = "$keytxt"; $keytxt .= ' '.$desc if defined $desc; $keytxt = qq{$keytxt} if $flags =~ s/ ?\blink(\S*)//; - my $onclick = $flags =~ s/ ?\bmode(\S*)// && defined $self->{def}{$1} && sprintf( - ' onclick="setmode(%s)"', - $1 eq '' ? '' : sprintf(q{'mode%s'}, escapeclass($1)) - ); $flags =~ s/\bx\w+/ext/; $flags =~ s/\bv\d+/new/; $flags .= ' chr'.ord(substr $key, -1) if $key ne '^0'; @@ -226,13 +239,10 @@ Shiar_Sheet::Keyboard - Output HTML for key sheets my $keys = Shiar_Sheet::Keyboard({ def => { 'lead' => { - 'A' => '=a', # alias - 'a' => 'classes', + 'A' => \'a', # alias + 'a' => ['classes', 'description', 'hover comments'], }, }, - key => { - 'leada' => ['description', 'comments (on hover)'], - }, mode => { 'lead' => 'mode description', }, diff --git a/Shiar_Sheet/KeyboardChars.pm b/Shiar_Sheet/KeyboardChars.pm index d0e84c8..7077d3c 100644 --- a/Shiar_Sheet/KeyboardChars.pm +++ b/Shiar_Sheet/KeyboardChars.pm @@ -9,7 +9,7 @@ use Unicode::Normalize qw( NFKD ); use Text::Unidecode (); use Shiar_Sheet::FormatChar; -our $VERSION = '1.04'; +our $VERSION = '1.05'; our @EXPORT = qw( kbchars kbmodes ); my $uc = Shiar_Sheet::FormatChar->new; @@ -42,17 +42,22 @@ sub kbmodes ($modes) { ); for my $lead (keys %{$modes}) { if ($lead ne '') { - $info{def}->{''}->{$lead} = "g1 mode$lead"; + $info{def}->{''}->{$lead}[0] = "g1 mode$lead"; $g{g1} = 1; $info{mode}->{$lead} //= "mode $lead"; - $info{def}->{$lead}{$lead} = 'g1 mode'; # back + $info{def}->{$lead}{$lead} = ['g1 mode']; # back } while (my ($k, $v) = each %{ $modes->{$lead} }) { + my @class; + if (ref $v eq 'SCALAR') { + my ($reflead, $ref) = split /(.)$/, ${$v}; + $v = $modes->{$reflead}->{$ref}; + @class = 'ext'; + } my ($glyph, $title) = $uc->glyph_html($v); - $info{key}{$lead.$k} = join "\n", $glyph, $title; my $c = $k =~ s/\A[+^](?=.)//r; # trim modifier indicator - my $class = ( + unshift @class, ( !defined $v || $c eq $v ? 'no' # identical : $v =~ /\A\p{Mn}+\z/ ? 'g9' # combining accent : NFKD($v) =~ /\A\Q$c\E\p{Mn}*\z/ ? 'g2' # decomposed equivalent @@ -62,8 +67,9 @@ sub kbmodes ($modes) { : $v =~ /^\p{Latin}/ ? 'g5' # latin script : 'g6' ); - $g{$class} = 1 unless $class eq 'no'; - $info{def}{$lead}{$k} //= $class; + $g{$_} = 1 for grep { $_ ne 'no' } @class; + $info{def}{$lead}{$k} //= [join ' ', @class]; + $info{def}{$lead}{$k}[1] = join "\n", $glyph, $title; } } $info{flag} = {%{{ @@ -75,6 +81,7 @@ sub kbmodes ($modes) { g7 => ['punctuation', "(punctuation) mark"], g8 => ['mark', "modifier letter or mark (spacing diacritic)"], g9 => ['combining', "diacritical mark to be combined with a following character"], + ext => ['alias', 'alternative with identical results as something else'], }}{keys %g}}; return \%info; } diff --git a/base.css b/base.css index e4ed58d..405b282 100644 --- a/base.css +++ b/base.css @@ -646,12 +646,9 @@ table.dimap { } dl.legend dt.more, -.keys td.more b { - text-shadow: #F20 0 0 0.1em; -} -dl.legend dt.more:hover, -.keys td.more:hover b { - text-shadow: #F20 0 0 0.5em, #FC0 0 0 0.2em; +.keys td.more { + outline: 3px solid #0006; + outline-offset: -3px; /* inside */ } dl.legend dt.new, .keys td.new { diff --git a/common.inc.plp b/common.inc.plp index ee21f02..a634733 100644 --- a/common.inc.plp +++ b/common.inc.plp @@ -76,7 +76,7 @@ sub stylesheet { return map { sprintf( '', - $_ eq $style ? 'stylesheet' : 'alternate stylesheet', "/$_.css?1.17", $_ + $_ eq $style ? 'stylesheet' : 'alternate stylesheet', "/$_.css?1.18", $_ ) } @avail; } diff --git a/digraphs.plp b/digraphs.plp index 5b5f414..7eac205 100644 --- a/digraphs.plp +++ b/digraphs.plp @@ -9,7 +9,7 @@ warn "error in $include: ", @{$@} if ref $@; Html({ title => "$mode digraph cheat sheet", - version => '1.3', + version => '1.5', description => $di->{description} // [ "Complete table of digraph characters from", ($di->{title} // $mode) . ".", diff --git a/font.plp b/font.plp index 7019573..d789262 100644 --- a/font.plp +++ b/font.plp @@ -109,13 +109,13 @@ EOT say "$_" for join(' ', grep {$_} $offset > $pagerows && sprintf('◄', $offsetlink, 0), $offset > 0 && sprintf( - '', + '◅', $offsetlink, $offset - $pagerows, ), sprintf('U+%04X', $map ? $map->[$offset] : $offset), Unicode::UCD::charblock($map ? $map->[$offset] : $offset), $offset + $pagerows < ($map ? @{$map} : 0x11_0000) && sprintf( - '', + '▻', $offsetlink, $offset + $pagerows, ), ); diff --git a/index.plp b/index.plp index 6909025..f05c02a 100644 --- a/index.plp +++ b/index.plp @@ -3,7 +3,7 @@ Html({ title => 'cheat sheets', canonical => '/', - version => '1.17', + version => '1.18', description => [ "Cheat sheets summarising various software programs and standards.", ], @@ -54,8 +54,7 @@ if (open my $log, '<', 'UPDATE') {{
  • mutt
  • nethack
  • mplayer/mpv -
  • altgr - etc. +
  • altgr/option diff --git a/keyboard.plp b/keyboard.plp index fa2aaf2..3a40a4d 100644 --- a/keyboard.plp +++ b/keyboard.plp @@ -48,7 +48,7 @@ say "

    $_

    " for $info->{intro} // (); say "

    ", $info->{mode}->{''}, " (default)

    " if $info->{mode} and %{ $info->{mode} } > 1; -use Shiar_Sheet::Keyboard 2.08; +use Shiar_Sheet::Keyboard 3.00; my $keys = Shiar_Sheet::Keyboard->new($info); $keys->map($get{map}) or undef $get{map}; $keys->print_rows($get{rows} || $info->{moderows}, $info->{rows}); diff --git a/keyboard/altgr/apl.eng.inc.pl b/keyboard/altgr/apl.eng.inc.pl index c796cb3..d7fbbc7 100644 --- a/keyboard/altgr/apl.eng.inc.pl +++ b/keyboard/altgr/apl.eng.inc.pl @@ -93,7 +93,7 @@ my %rows = ( ); my $groups = kbchars(\%rows); -$groups->{def}{''}{$_} .= ' ext' for keys %dyalogx; +$groups->{def}{''}{$_}[0] .= ' ext' for keys %dyalogx; $groups->{flag}{ext} = ['extended', 'optional operators not available in all variants']; +{ diff --git a/keyboard/altgr/atari.eng.inc.pl b/keyboard/altgr/atari.eng.inc.pl new file mode 100644 index 0000000..6f581f8 --- /dev/null +++ b/keyboard/altgr/atari.eng.inc.pl @@ -0,0 +1,55 @@ +use utf8; +use strict; +use warnings; +no warnings 'qw'; +use Shiar_Sheet::KeyboardChars 'kbchars'; +our %get; + +# card suits at 50,00,60,7B mapped differently depending on keyboard +my %rows = qw( + p ♣ , ♥ ; ♠ . ♦ + q ┌ w ┬ e ┐ r ─ t ● y ▌ u ▄ i ▗ o ▖ + a ├ s ┼ d ┤ f ╱ g ╲ h ◢ j ◣ k ▝ l ▘ + z └ x ┴ c ┘ v ▏ b ▕ n ▁ m ▔ +); + +if (exists $get{compat}) { + %rows = (%rows, qw( + q ┏ w ┳ e ┓ r ━ + a ┣ s ╋ d ┫ + z ┗ x ┻ c ┛ v ▎ b 🮇 n ▂ m 🮂 + )); +} + +my $groups = kbchars(\%rows); + +while (my ($k, $c) = each %rows) { + $groups->{def}{''}{$k}[0] = ( + $c =~ /\p{In=1.1}/ ? 'g2' : + $c =~ /\p{In=4.0}/ ? 'g3' : + $c =~ /[\x{1FB00}-\x{1FBFF}]/ ? 'g5' : # Age=V13.0 + 'g0' + ); +} + ++{ + %{ $groups }, + version => '1.0', + title => 'Atari graphics', + category => 'legacy/graph', + moderows => '1-', + intro => join("\n", + 'ATASCII', + 'characters from 8-bit Atari machines starting with the 1979 models 400 and 800,', + 'with modern Unicode equivalents.', + 'Similar to PETSCII', + 'and MSX graph.', + ), + image => 'data/keyboard/thumb/atari-130xe.jpg', + flag => { + g2 => ['standard' => 'original Unicode 1993'], + g3 => ['extended' => 'Unicode 4.0'], + g5 => ['legacy' => 'exceptional symbols for legacy computing in Unicode since 2020'], + g9 => ['color' => 'presentational controls represented by anachronistic hearts'], + }, +} diff --git a/keyboard/altgr/c64.eng.inc.pl b/keyboard/altgr/c64.eng.inc.pl new file mode 100644 index 0000000..387b240 --- /dev/null +++ b/keyboard/altgr/c64.eng.inc.pl @@ -0,0 +1,134 @@ +use utf8; +use strict; +use warnings; +use Shiar_Sheet::KeyboardChars 'kbchars'; + +my %c64 = ( + # control keys not on pet2001 + '1' => "🖤\nBLacK", + '2' => "🤍\nWHiTe", + '3' => "❤️\nRED", + '4' => "🩵\nCYaN", + '5' => "💜\nPURple", + '6' => "💚\nGReeN", + '7' => "💙\nBLUe", + '8' => "💛\nYELlow", + '9' => "💟\nREverSe video ON", + '0' => "💔\nREverSe video OFF", +); + +my %rows = (%c64, + # literal petscii control characters, unaltered from pet2001 + 'a' => '♠', + 'b' => '🭲', + 'c' => '🭸', + 'd' => '🭷', + 'e' => '🭶', + 'f' => '🭺', + 'g' => '🭱', + 'h' => '🭴', + 'i' => '╮', + 'j' => '╰', + 'k' => '╯', + 'l' => '🭼', + 'm' => '╲', + 'n' => '╱', + 'o' => '🭽', + 'p' => '🭾', + 'q' => '●', + 'r' => '🭻', + 's' => '♥', + 't' => '🭰', + 'u' => '╭', + 'v' => '╳', + 'w' => '○', + 'x' => '♣', + 'y' => '🭵', + 'z' => '♦', + ']' => '─', # @ + + # literal pet2001 keys reassigned on c64 + ',' => '┼', # [ c64 + + '.' => '│', # ] c64 - + '\\'=> 'π', # ↑ c64 \ + '}' => '◥', # ← c64 * + '>' => '🮌', # \ c64 ^- + 'B' => '▚', # ? + + # ! " # $ % ' & \ ( ) ← » 1 2 3 4 5 6 7 8 9 0 + - £ + # Q W E R T Y U I O P ↑ 7 8 9 / » Q W E R T Y U I O P @ * ↑ + # A S D F G H J K L : 4 5 6 * » A S D F G H J K L : ; = + # Z X C V B N M , ; ? 1 2 3 + » Z X C V B N M , . / + # @ [ ] < > 0 . - = + + # pet2001 top row + 'K' => '▌', # A pet ! + 'I' => '▄', # B pet " + 'T' => '▔', # C pet # + '{' => '▁', # D pet $ + 'G' => '▏', # E pet % + 'M' => '▕', # G pet ' + '<' => '▒', # F pet & c64 ^+ + '/' => '🮏', # H pet ( c64 ^£ + '?' => '◤', # I pet ) c64 £ + + # pet2001 bottom rows + '[' => '🭿', # Z pet : + 'D' => '▗', # L pet , + 'F' => '▖', # { pet ; + 'C' => '▝', # | pet < + 'V' => '▘', # ~ pet > + + # pet2001 numpad + 'Y' => '🮂', # W pet 7 + 'U' => '🮃', # X pet 8 + 'O' => '▃', # Y pet 9 + 'P' => '▂', # O pet / + 'H' => '▎', # T pet 4 + 'J' => '▍', # U pet 5 + 'L' => '🮈', # V pet 6 + 'N' => '🮇', # J pet * + 'E' => '┴', # Q pet 1 + 'R' => '┬', # R pet 2 + 'W' => '┤', # S pet 3 + 'Q' => '├', # K pet + + 'A' => '┌', # P pet 0 + 'S' => '┐', # N pet . + 'Z' => '└', # M pet - + 'X' => '┘', # } pet = +); + +my $groups = kbchars(\%rows); + +while (my ($k, $c) = each %rows) { + $groups->{def}{''}{$k}[0] = ( + $c64{$k} ? 'g9' : + $c =~ /\p{In=1.1}/ ? 'g2' : + $c =~ /\p{In=4.0}/ ? 'g3' : + $c =~ /[\x{1FB00}-\x{1FBFF}]/ ? 'g5' : # Age=V13.0 + 'g0' + ); +} + ++{ + %{ $groups }, + version => '1.0', + title => 'Commodore graphics', + category => 'legacy/graph', + moderows => '21-1', + intro => join("\n", + 'PETSCII', + 'characters designed for the 1977 PET 2001 machine', + 'as found on the VIC-20 and C-64.', + 'See also MSX graph,', + 'ATASCII, and', + 'modern Unicode.', + ), + image => 'data/keyboard/thumb/c64.jpg', + flag => { + g2 => ['standard' => 'original Unicode 1993'], + g3 => ['extended' => 'Unicode 4.0'], + g5 => ['legacy' => 'exceptional symbols for legacy computing in Unicode since 2020'], + g9 => ['color' => 'presentational controls represented by anachronistic hearts'], + }, +} diff --git a/keyboard/altgr/drix.eng.inc.pl b/keyboard/altgr/drix.eng.inc.pl index c36f53b..a63a5a0 100644 --- a/keyboard/altgr/drix.eng.inc.pl +++ b/keyboard/altgr/drix.eng.inc.pl @@ -31,7 +31,7 @@ my %rows = ( ']' => "}", '^' => "\N{COMBINING MACRON}", '_' => "\xB1", - '`' => "\xA3", + '`' => \'l', 'A' => "\x{2190}", 'a' => "\xE6", 'B' => "\x{20bf}", @@ -41,7 +41,7 @@ my %rows = ( 'd' => "\x{394}", 'D' => "\x{2192}", 'e' => "\x{20AC}", - 'E' => "\x{20AC}", + 'E' => \'e', 'f' => "\x{192}", 'F' => "\x{191}", #'g' => "g", @@ -81,7 +81,7 @@ my %rows = ( 'x' => "\xD7", 'X' => "\xF7", 'y' => "\xA5", - 'Y' => "\xA5", + 'Y' => \'y', 'z' => "\xA7", 'Z' => "\xB6", '{' => "\xAB", @@ -103,11 +103,8 @@ my %rows = ( ';' => "\xA1", # unshifted ! at m ); -my $groups = kbchars(\%rows); -$groups->{def}{''}{$_} .= ' ext' for qw( ` E Y ); - +{ - %{$groups}, + %{ kbchars(\%rows) }, version => '1.0', title => 'Drix', category => 'latin/xorg', diff --git a/keyboard/altgr/emojiworks.eng.inc.pl b/keyboard/altgr/emojiworks.eng.inc.pl index dca101c..33c35d1 100644 --- a/keyboard/altgr/emojiworks.eng.inc.pl +++ b/keyboard/altgr/emojiworks.eng.inc.pl @@ -59,7 +59,7 @@ my $groups = kbchars(\%rows); while (my ($k, $c) = each %rows) { # override letter-based classes by unicode versions - $groups->{def}{''}{$k} = ( + $groups->{def}{''}{$k}[0] = ( $c =~ /\p{General_Category=Modifier_Symbol}/ ? 'g9' : $c =~ /\p{In=1.1}/ ? 'g2' : $c =~ /\p{In=5.2}/ ? 'g3' : diff --git a/keyboard/altgr/eurkey.eng.inc.pl b/keyboard/altgr/eurkey.eng.inc.pl index 5b9702c..456ac15 100644 --- a/keyboard/altgr/eurkey.eng.inc.pl +++ b/keyboard/altgr/eurkey.eng.inc.pl @@ -109,7 +109,7 @@ my %rows = ( # greek 'm' => { 'a' => 'α', - 'b' => 'β', # v + 'b' => 'β', 'g' => 'γ', 'd' => 'δ', 'e' => 'ε', @@ -131,7 +131,13 @@ my %rows = ( 'f' => 'φ', 'c' => 'χ', 'w' => 'ψ', - 'q' => 'ω', # u + 'q' => 'ω', + + # aliases + 'v' => \'mb', + 'V' => \'mB', + 'u' => \'mq', + 'U' => \'mQ', # suþscript '1' => '¹', @@ -269,6 +275,9 @@ my %rows = ( }, ); +# uppercase greek +$rows{m}{uc $_} //= uc $rows{m}{$_} for keys %{ $rows{m} }; + +{ %{ kbmodes(\%rows) }, mode => { @@ -277,9 +286,9 @@ my %rows = ( 'M' => '√ maths prefix ⌥M', $presymbol => "$rows{''}{$presymbol} symbol prefix ⌥$presymbol", }, - version => '1.1', + version => '1.2', title => 'EurKEY', - category => 'latin/thirdparty', + category => 'latin/thirdparty/xorg', intro => join("\n", 'Third-party proposal EurKEY', 'v1.3 by Steffen Brüntjen', diff --git a/keyboard/altgr/index.inc.pl b/keyboard/altgr/index.inc.pl new file mode 100644 index 0000000..b864e13 --- /dev/null +++ b/keyboard/altgr/index.inc.pl @@ -0,0 +1,35 @@ +use strict; +use warnings; + +my %cat = ( + default => [qw( euro latin science graph )], + euro => [qw( windows ukext macos macos-abc weur eurkey msx )], + ipa => [qw( ipa-ucl xipa )], + latin => [qw( ipa-ucl olpc boyeg drix )], + science => [qw( symbolics apl spacecadet )], + graph => [qw( unigraph emojiworks )], + extra => [qw( msx-graph c64 atari p8scii zoo )], +); + +for my $name (map {@{$_}} values %cat) { + my $keys = do "keyboard/altgr/$name.eng.inc.pl" or next; + my %row = %{$keys}{qw( title category flag mode image imagealt )}; + $cat{$name} = \%row; + + $row{mode} //= {'' => undef}; + + if (($keys->{moderows} // '') =~ /^\d* [3-9] \d{2,}/x) { + # move root ^ctrl or +meta keys to distinct mode + $row{mode}{"\e"} = '+'; + /^[+^]./ and $keys->{def}{"\e"}{$_} = delete $keys->{def}{''}{$_} + for keys %{ $keys->{def}{''} }; + } + + for my $mode (keys %{ $row{mode} }) { + $row{inventory}{$mode}{$_}++ + for grep { /^g[2-9]/ } map { s/ (?!ext).*//r } map {$_->[0]} + values %{ $keys->{def}{$mode} }; + } +} + +\%cat diff --git a/keyboard/altgr/index.inc.plp b/keyboard/altgr/index.inc.plp index d4d8bde..c6accc7 100644 --- a/keyboard/altgr/index.inc.plp +++ b/keyboard/altgr/index.inc.plp @@ -3,11 +3,12 @@ use 5.014; use warnings; use utf8; -my @incs = glob 'keyboard/altgr/*.eng.inc.pl'; +my $dirbase = 'keyboard/altgr'; +my $indexfile = "$dirbase/index"; Html({ title => "altgr keyboard cheat sheets", - version => '1.2', + version => '1.3', description => [ "Overview of alternate keyboard modes,", "offering extended Unicode characters if a modifier key", @@ -16,9 +17,9 @@ Html({ keywords => [qw' sheet cheat reference overview keyboard altgr option '], - image => 'data/keyboard/thumb/ibm-m.jpg', + image => "$dirbase/thumb/ibm-m.jpg", stylesheet => [qw( light dark circus mono red )], - data => ['keyboard/altgr/index.inc.plp', @incs], + data => ["$dirbase/index.inc.plp", "$indexfile.inc.pl"], raw => <<'.',