'as found in APLX and Dyalog implementations.',
],
image => 'data/keyboard/thumb/unicomp-apl.jpg',
+ imagealt => 'Alt on a custom keyboard with APL labels',
}
"An interactive map of EurKEY, the European Keyboard Layout.",
],
image => 'data/keyboard/thumb/eurkeyboard.jpg',
+ imagealt => 'Right alt on the EurKEYboard created by Psy-Q',
}
print '<figure>';
printf '<a href="/%s">', $inc =~ s/\.eng$//r;
if (my $table = eval { Data($inc) }) {
- printf '<img src="/%s" />', $_ for $table->{image} || ();
+ if (my $img = $table->{image}) {
+ EscapeHTML $name = $table->{imagealt} // $img =~ m{.*/([^/.]*)};
+ print qq{<img src="/$img" alt="$name" />};
+ }
$inc = $table->{title};
}
printf '<figcaption>%s</figcaption>', $inc;
"with the Option modifier key.",
],
image => 'data/keyboard/thumb/macbook-gray.jpg',
+ imagealt => 'Option key on a black MacBook',
}
"with the Option modifier key.",
],
image => 'data/keyboard/thumb/matias-fk302.jpg',
+ imagealt => 'Option key on a Matias Tactile Pro keyboard with USA keycaps',
}
"with the code modifier key.",
],
image => 'data/keyboard/thumb/msxcode.jpg',
+ imagealt => 'Code key on a Toshiba HX10 with graph labels',
}
rows => [3, 0], # greek/front and top
moderows => '41-4',
image => 'data/keyboard/thumb/spacecadet.jpg',
+ imagealt => 'Many modifier keys on a traditional Symbolics Space Cadet keyboard',
}
"with the AltGr modifier key.",
],
image => 'data/keyboard/thumb/chromebook-hp11.jpg',
+ imagealt => 'AltGr key on a HP Chromebook 11 G2',
}
"with the AltGr modifier key.",
],
image => 'data/keyboard/thumb/ku2971b-usint.jpg',
+ imagealt => 'AltGr on a KeyboardCompany KU2971B with USA International keycaps',
}