my $mode = lc $Request;
my $include = "keyboard/$mode.eng";
+if (-e (my $page = "keyboard/$Request/index.inc.plp")) {
+ Include $page;
+ exit;
+}
+
my $info = eval { Data($include) } || {};
warn "error in $include: ", @{$@} if ref $@;
$mode = $info->{title} // $mode;
--- /dev/null
+<: # included from keyboard.plp
+use 5.014;
+use warnings;
+
+my @incs = glob 'keyboard/altgr/*.eng.inc.pl';
+
+Html({
+ title => "altgr keyboard cheat sheets",
+ version => '1.0',
+ description => [
+ "Overview of alternate keyboard modes,",
+ "offering extended Unicode characters if a modifier key",
+ "(such as AltGr or option) is pressed.",
+ ],
+ keywords => [qw'
+ sheet cheat reference overview keyboard altgr option
+ '],
+ stylesheet => [qw( light dark circus mono red )],
+ data => ['keyboard/altgr/index.inc.plp', @incs],
+ raw => <<'.',
+<style>
+img {
+ object-fit: cover;
+ height: 100%;
+}
+</style>
+.
+});
+
+:>
+<h1>Extended keyboards</h1>
+
+<p>Representative images of available layouts
+with AltGr or similar modifier keys.</p>
+
+<section class="gallery"><:
+for my $inc (@incs) {
+ $inc =~ s/\Q.inc.pl\E$//;
+ print '<figure>';
+ printf '<a href="/%s">', $inc =~ s/\.eng$//r;
+ if (my $table = eval { Data($inc) }) {
+ printf '<img src="/%s" />', $_ for $table->{image} || ();
+ $inc = $table->{title};
+ }
+ printf '<figcaption>%s</figcaption>', $inc;
+ say '</a></figure>';
+}
+:></section>
+
my @pages = (
[qw( index )],
[qw( vi digraphs charset browser writing sc/lotv termcol dieren )],
- [qw( readline latin unicode countries emoji perl )],
+ [qw( readline latin unicode countries emoji perl keyboard/altgr )],
[qw(
vimperator mutt nethack mplayer/mpv font codec
keyboard/altgr/windows keyboard/altgr/macos
)],
[qw(
apl less screen digits sc/bw sc/hots termcol/legacy mplayer
+ keyboard/altgr/macos-abc keyboard/altgr/msx keyboard/altgr/ukext
)],
[qw( chars/table/html sample source plan )],
);