From c107916780c5d7bf0267ae031a72eb331145d935 Mon Sep 17 00:00:00 2001 From: Mischa POSLAWSKY Date: Wed, 24 Apr 2024 21:34:01 +0200 Subject: [PATCH 01/16] perl: hide dropped features again unless ?v Always shown since incorrect fix in commit v1.14-7-ge90c9ada43 (2023-10-29) [silence warning about skipping dropped features]. Instead of complex workarounds, just revert and enforce the "unconventional" feature. --- perl.plp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/perl.plp b/perl.plp index 596e4d8..0ee9639 100644 --- a/perl.plp +++ b/perl.plp @@ -2,7 +2,7 @@ Html({ title => 'perl version cheat sheet', - version => '1.6', + version => '1.7', keywords => [qw' perl version feature features comparison sheet cheat overview summary @@ -113,7 +113,8 @@ sub featattrs ($attr) { $title = 'experimental'; } if (defined $attr->{dropped}) { - return '' unless exists $get{v}; + no warnings 'exiting'; + next unless exists $get{v}; # skip containing feature $title = sprintf 'removed in %vd', $_ for $attr->{dropped} || (); } elsif ($attr->{stable}) { -- 2.30.0 From fc013852833c931c4d76f867e4d4f9d937ca137e Mon Sep 17 00:00:00 2001 From: Mischa POSLAWSKY Date: Thu, 25 Apr 2024 12:14:00 +0200 Subject: [PATCH 02/16] keyboard/altgr/macos-abc: close emphasis in intro text --- keyboard/altgr/macos-abc.eng.inc.pl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboard/altgr/macos-abc.eng.inc.pl b/keyboard/altgr/macos-abc.eng.inc.pl index d12fa01..9b61a9c 100644 --- a/keyboard/altgr/macos-abc.eng.inc.pl +++ b/keyboard/altgr/macos-abc.eng.inc.pl @@ -200,7 +200,7 @@ my %rows = ( intro => join("\n", 'Resulting selection of Unicode characters', "while pressing ⌥ Option (Alt) with Apple's", - 'ABC Extended', + 'ABC Extended', "(formerly US Extended and Extended Roman) layout", 'on macOS.', 'Significant changes from standard', -- 2.30.0 From e100feba194da44a462e378084fbf437056f6e53 Mon Sep 17 00:00:00 2001 From: Mischa POSLAWSKY Date: Fri, 19 Apr 2024 19:01:28 +0200 Subject: [PATCH 03/16] keyboard/altgr/ukext: distinguish microsoft compatibility --- base.css | 9 +-- keyboard/altgr/ukext.eng.inc.pl | 101 ++++++++++++++++++-------------- 2 files changed, 60 insertions(+), 50 deletions(-) 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/keyboard/altgr/ukext.eng.inc.pl b/keyboard/altgr/ukext.eng.inc.pl index 6a8e914..972c01e 100644 --- a/keyboard/altgr/ukext.eng.inc.pl +++ b/keyboard/altgr/ukext.eng.inc.pl @@ -3,56 +3,72 @@ use strict; use warnings; use Shiar_Sheet::KeyboardChars 'kbchars'; -my %rows = ( - '~' => '¦', +my %win = ( + '`' => '¦', + '~' => "\N{COMBINING GRAVE ACCENT}", # uk ¬ originally unshifted + '2' => "\N{COMBINING DIAERESIS}", + '4' => '€', + '6' => "\N{COMBINING CIRCUMFLEX ACCENT}", + 'W' => 'Ẃ', + 'w' => 'ẃ', + 'E' => 'É', + 'e' => 'é', + 'Y' => 'Ý', + 'y' => 'ý', + 'U' => 'Ú', + 'u' => 'ú', + 'I' => 'Í', + 'i' => 'í', + 'O' => 'Ó', + 'o' => 'ó', + 'A' => 'Á', + 'a' => 'á', + #'"' => '`', + "'" => "\N{COMBINING ACUTE ACCENT}", + '\\'=> "\N{COMBINING TILDE}", # uk # + 'C' => 'Ç', + 'c' => 'ç', +); + +my %dup = ( + # aliases to unmodified keys + '7' => '{', + '8' => '[', + '9' => ']', + '0' => '}', + '-' => '\\', + 'q' => '@', + 'K' => '&', +); + +my %rows = (%win, %dup, '!' => '¡', '1' => '¹', '@' => '½', # uk " - '2' => "\N{COMBINING DIAERESIS}", '#' => '⅓', # uk £ '3' => '³', '$' => '¼', - '4' => '€', '%' => '⅜', - '5' => '½', + '5' => \'@', '^' => '⅝', - '6' => "\N{COMBINING CIRCUMFLEX ACCENT}", '&' => '⅞', - '7' => '{', '*' => '™', - '8' => '[', '(' => '±', - '9' => ']', ')' => '°', - '0' => '}', '_' => '¿', - '-' => '\\', '+' => "\N{COMBINING OGONEK}", '=' => "\N{COMBINING CEDILLA}", 'Q' => 'Ω', - 'q' => '@', - 'W' => 'Ẃ', - 'w' => 'ẃ', - 'E' => 'É', - 'e' => 'é', 'R' => '®', 'r' => '¶', 'T' => 'Ŧ', 't' => 'ŧ', - 'Y' => 'Ý', - 'y' => 'ý', - 'U' => 'Ú', - 'u' => 'ú', - 'I' => 'Í', - 'i' => 'í', - 'O' => 'Ó', - 'o' => 'ó', 'P' => 'Þ', 'p' => 'þ', '{' => "\N{COMBINING RING ABOVE}", - '}' => "\N{COMBINING MACRON}", - 'A' => 'Á', - 'a' => 'á', + '}' => "\N{COMBINING MACRON}", # originally | + '[' => \'2', + ']' => \'\\', 'S' => '§', 's' => 'ß', 'D' => 'Ð', @@ -65,24 +81,17 @@ my %rows = ( 'h' => 'ħ', 'J' => "\N{COMBINING HORN}", 'j' => "\N{COMBINING HOOK ABOVE}", - 'K' => '&', 'k' => 'ĸ', 'L' => 'Ł', 'l' => 'ł', ':' => "\N{COMBINING DOUBLE ACUTE ACCENT}", - ';' => "\N{COMBINING ACUTE ACCENT}", + ';' => \"'", '"' => "\N{COMBINING CARON}", # uk @ - "'" => "\N{COMBINING ACUTE ACCENT}", # same as ;? - '|' => "\N{COMBINING TILDE}", - '\\'=> "\N{COMBINING BREVE}", - '~' => "\N{COMBINING GRAVE ACCENT}", - '`' => '¦', - 'Z' => '<', + '|' => "\N{COMBINING BREVE}", # uk ~ originally \ + 'Z' => '‹', 'z' => '«', - 'X' => '>', + 'X' => '›', 'x' => '»', - 'C' => 'Ç', - 'c' => 'ç', 'V' => '‘', 'v' => '“', 'B' => '’', @@ -98,18 +107,22 @@ my %rows = ( '?' => "\N{COMBINING DOT ABOVE}", '/' => "\N{COMBINING DOT BELOW}", ); -$rows{'['} = $rows{'2'}; -$rows{']'} = $rows{'#'}; + +my $groups = kbchars(\%rows); + +$_->[0] .= ' ext' for @{ $groups->{def}{''} }{keys %dup}; +$_->[0] .= ' more' for @{ $groups->{def}{''} }{keys %win}; +$groups->{flag}{more} = ['windows', "only a small subset is present on Microsoft's layout"]; +{ - %{ kbchars(\%rows) }, + %{$groups}, title => 'UK-extended', category => 'latin/thirdparty', - version => '1.0', + version => '1.1', intro => join("\n", - "A Chrome OS extension", + "A Chrome OS extension and Xorg option", "expanding on Windows' UK Extended QWERTY keyboard.", - 'Similar to the US international variant.', + 'Distinct from the US international variant.', ), description => [ "Google UK-Extended keyboard layout table for Chrome OS", -- 2.30.0 From 0d7e89b63197de511c1a240599b3e7ff0ac156a0 Mon Sep 17 00:00:00 2001 From: Mischa POSLAWSKY Date: Tue, 16 Apr 2024 18:34:05 +0200 Subject: [PATCH 04/16] keyboard/altgr/ipa-rc: original layout by Richard Collins As described in resurrected from: https://web.archive.org/web/20160807095834/ http://www.rejc2.co.uk/ipakeyboard/ --- keyboard/altgr/ipa-rc.eng.inc.pl | 48 ++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 keyboard/altgr/ipa-rc.eng.inc.pl diff --git a/keyboard/altgr/ipa-rc.eng.inc.pl b/keyboard/altgr/ipa-rc.eng.inc.pl new file mode 100644 index 0000000..9341302 --- /dev/null +++ b/keyboard/altgr/ipa-rc.eng.inc.pl @@ -0,0 +1,48 @@ +use utf8; +use strict; +use warnings; +no warnings 'qw'; +use Shiar_Sheet::KeyboardChars 'kbmodes'; + +my %rows = ( + # shifted as normal, altgr as shifted + '' => {qw( + 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 ʒ + A æ E ɜ O ɒ V ʌ + 1 Ë© 2 ˨ 3 ˧ 4 ˦ 5 Ë¥ 6 ↗ 7 ↘ 8 ↑ 9 ↓ + ! ǃ @ ǁ # ǂ $ ǀ % ʘ + / ʔ " ˑ ' ː : ˈ = ‿ + )}, + ';' => {qw( + lead @ + a ɐ A ɒ e ɘ E ɜ h É¥ J ʕ m ɯ r ɹ R ʁ v ʌ w ʍ X ʔ y ʎ ? ʕ + )}, + '&' => {qw( + lead æ + a æ b ɓ c ɕ E ɞ g É  G ʛ h ɦ H ɧ j ʝ l ɬ L É® + m É° o œ O ɶ Q ɚ r ɾ R ɺ z ʑ + )}, +); + ++{ + %{ kbmodes(\%rows) }, + version => '1.0', + title => 'IPA', + category => 'specialized/ipa', + intro => join("\n", + "Another layout for typing in the International Phonetic Alphabet", + "designed by Richard Collins, last modified in 2009", + "and no longer available.", + ), + flags => { + '^' => 'superscript', + '_' => 'subscript', + '@' => 'reversed', + '<' => 'left tailed', # ɲ + '>' => 'right tailed', # ɳ + '&' => 'extended', + '-' => 'barred', + }, + #moderows => '5421-1', +} -- 2.30.0 From 98a8228ac6651509dfe58a871594b5cc22cee553 Mon Sep 17 00:00:00 2001 From: Mischa POSLAWSKY Date: Fri, 26 Apr 2024 21:57:35 +0200 Subject: [PATCH 05/16] keyboard/altgr/index: label modes by description character. Replace definition lookup by (assumed) same text in available data. --- keyboard/altgr/index.inc.pl | 7 +++---- keyboard/altgr/index.inc.plp | 4 ++-- keyboard/altgr/weur.eng.inc.pl | 2 +- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/keyboard/altgr/index.inc.pl b/keyboard/altgr/index.inc.pl index 2308e14..5994d9f 100644 --- a/keyboard/altgr/index.inc.pl +++ b/keyboard/altgr/index.inc.pl @@ -15,17 +15,16 @@ for my $name (map {@{$_}} values %cat) { my %row = %{$keys}{qw( title category flag mode image imagealt )}; $cat{$name} = \%row; - $keys->{mode} //= {'' => undef}; + $row{mode} //= {'' => undef}; if ($keys->{def}{''}{'+a'}) { # move root +meta keys to distinct mode - $keys->{mode}{"\e"} = '+'; + $row{mode}{"\e"} = '+'; /^\+./ and $keys->{def}{"\e"}{$_} = delete $keys->{def}{''}{$_} for keys %{ $keys->{def}{''} }; } - for my $mode (keys %{ $keys->{mode} }) { - $row{def}{''}{$_} = $keys->{def}{''}{$_} for $mode || (); + for my $mode (keys %{ $row{mode} }) { $row{inventory}{$mode}{$_}++ for grep { /^g[2-9]/ } map { s/ (?!ext).*//r } map {$_->[0]} values %{ $keys->{def}{$mode} }; } diff --git a/keyboard/altgr/index.inc.plp b/keyboard/altgr/index.inc.plp index e9179c6..fd36e60 100644 --- a/keyboard/altgr/index.inc.plp +++ b/keyboard/altgr/index.inc.plp @@ -8,7 +8,7 @@ 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", @@ -157,7 +157,7 @@ for my $inc (@incs) { print '', "\n\t"; for my $mode ($table->{mode} ? sort keys %{ $table->{mode} } : '') { print ''; - printf '', s/\s.*//r for $table->{def}{''}{$mode}[1] || (); + printf "", m/^(\S*)/ for $mode && $table->{mode}{$mode} || (); for my $g (sort keys %{ $table->{inventory}{$mode} }) { printf ' %s', $g, $_/$most*100, $_, diff --git a/keyboard/altgr/weur.eng.inc.pl b/keyboard/altgr/weur.eng.inc.pl index c3b3516..8d5a390 100644 --- a/keyboard/altgr/weur.eng.inc.pl +++ b/keyboard/altgr/weur.eng.inc.pl @@ -176,7 +176,7 @@ if ($dweur) { %{ kbmodes(\%rows) }, mode => { '' => 'altgr-shifted ⌥', - '*' => 'greek mode ⌥*', + '*' => 'μ greek prefix ⌥*', }, version => '1.0', # upstream v2.0 2021/04/12 title => $dweur ? 'dWEURak' : 'Western European', -- 2.30.0 From ce02e5e4baaf7c449ece5d46aa112258fd298cc9 Mon Sep 17 00:00:00 2001 From: Mischa POSLAWSKY Date: Tue, 7 May 2024 18:53:14 +0200 Subject: [PATCH 06/16] keyboard/altgr/index: wrap some long code lines --- keyboard/altgr/index.inc.pl | 3 ++- keyboard/altgr/index.inc.plp | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/keyboard/altgr/index.inc.pl b/keyboard/altgr/index.inc.pl index 5994d9f..6d4edb4 100644 --- a/keyboard/altgr/index.inc.pl +++ b/keyboard/altgr/index.inc.pl @@ -25,7 +25,8 @@ for my $name (map {@{$_}} values %cat) { } for my $mode (keys %{ $row{mode} }) { - $row{inventory}{$mode}{$_}++ for grep { /^g[2-9]/ } map { s/ (?!ext).*//r } map {$_->[0]} + $row{inventory}{$mode}{$_}++ + for grep { /^g[2-9]/ } map { s/ (?!ext).*//r } map {$_->[0]} values %{ $keys->{def}{$mode} }; } } diff --git a/keyboard/altgr/index.inc.plp b/keyboard/altgr/index.inc.plp index fd36e60..a74e012 100644 --- a/keyboard/altgr/index.inc.plp +++ b/keyboard/altgr/index.inc.plp @@ -157,7 +157,8 @@ for my $inc (@incs) { print '', "\n\t"; for my $mode ($table->{mode} ? sort keys %{ $table->{mode} } : '') { print ''; - printf "", m/^(\S*)/ for $mode && $table->{mode}{$mode} || (); + printf "", m/^(\S*)/ + for $mode && $table->{mode}{$mode} || (); for my $g (sort keys %{ $table->{inventory}{$mode} }) { printf ' %s', $g, $_/$most*100, $_, @@ -169,7 +170,8 @@ for my $inc (@incs) { say ''; } print "\t"; - print join ' ', map { $caticon{$_} // () } split m{/}, $table->{category} // ''; + print join ' ', map { $caticon{$_} // () } + split m{/}, $table->{category} // ''; say ''; if (my $keys = eval { my $keydata = Data("$dirbase/$inc.eng"); -- 2.30.0 From 0e222da060151bc6aa6d5c82962e5e15cfa12070 Mon Sep 17 00:00:00 2001 From: Mischa POSLAWSKY Date: Tue, 7 May 2024 19:06:27 +0200 Subject: [PATCH 07/16] keyboard/altgr/index: strip mode links from sample keys again Broken since commit v1.18-21-gc4ca0bd3e9 (2024-04-23) [keyboard: recombine translations in include syntax]. --- keyboard/altgr/index.inc.plp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/keyboard/altgr/index.inc.plp b/keyboard/altgr/index.inc.plp index a74e012..67249ec 100644 --- a/keyboard/altgr/index.inc.plp +++ b/keyboard/altgr/index.inc.plp @@ -177,8 +177,12 @@ for my $inc (@incs) { my $keydata = Data("$dirbase/$inc.eng"); Shiar_Sheet::Keyboard->new($keydata) }) { - $keys->print_key('', $_, ($keys->{def}{''}{$_} // ['ni']) =~ s/ mode\S*//r) - for @sample; + for my $c (@sample) { + my $def = $keys->{def}{''}{$c} // []; + $def->[0] //= 'ni'; + $def->[0] =~ s/ mode\S*//; + $keys->print_key('', $c, $def); + } } say ''; } -- 2.30.0 From 85a83b4022ac7b03549703185d32fb5b85047434 Mon Sep 17 00:00:00 2001 From: Mischa POSLAWSKY Date: Mon, 20 May 2024 18:42:41 +0200 Subject: [PATCH 08/16] keyboard/altgr/index: keep meta as shift in root inventory Reinclude second mode of spacecadet (without even uppercase) while filtering out excessive unigraph &a as intended in v1.18-23-g159550a310 (2024-04-23) [count root meta keys as distinct mode]. --- keyboard/altgr/index.inc.pl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboard/altgr/index.inc.pl b/keyboard/altgr/index.inc.pl index 6d4edb4..6546b66 100644 --- a/keyboard/altgr/index.inc.pl +++ b/keyboard/altgr/index.inc.pl @@ -17,7 +17,7 @@ for my $name (map {@{$_}} values %cat) { $row{mode} //= {'' => undef}; - if ($keys->{def}{''}{'+a'}) { + if (($keys->{moderows} // '') =~ /^\d* [45] \d{2,}/x) { # move root +meta keys to distinct mode $row{mode}{"\e"} = '+'; /^\+./ and $keys->{def}{"\e"}{$_} = delete $keys->{def}{''}{$_} -- 2.30.0 From 4b698185e79d32f285b9ea98ddec108448625121 Mon Sep 17 00:00:00 2001 From: Mischa POSLAWSKY Date: Fri, 26 Apr 2024 19:55:03 +0200 Subject: [PATCH 09/16] keyboard/altgr/ipa: suffix ipa-ucl variant to free group name --- keyboard/altgr/index.inc.pl | 3 ++- keyboard/altgr/{ipa.eng.inc.pl => ipa-ucl.eng.inc.pl} | 0 keyboard/altgr/xipa.eng.inc.pl | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) rename keyboard/altgr/{ipa.eng.inc.pl => ipa-ucl.eng.inc.pl} (100%) diff --git a/keyboard/altgr/index.inc.pl b/keyboard/altgr/index.inc.pl index 6546b66..d6ddd1d 100644 --- a/keyboard/altgr/index.inc.pl +++ b/keyboard/altgr/index.inc.pl @@ -4,7 +4,8 @@ use warnings; my %cat = ( default => [qw( euro latin science graph )], euro => [qw( windows ukext macos macos-abc weur eurkey msx )], - latin => [qw( ipa olpc boyeg drix )], + 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 p8scii zoo )], diff --git a/keyboard/altgr/ipa.eng.inc.pl b/keyboard/altgr/ipa-ucl.eng.inc.pl similarity index 100% rename from keyboard/altgr/ipa.eng.inc.pl rename to keyboard/altgr/ipa-ucl.eng.inc.pl diff --git a/keyboard/altgr/xipa.eng.inc.pl b/keyboard/altgr/xipa.eng.inc.pl index de106f6..7a86363 100644 --- a/keyboard/altgr/xipa.eng.inc.pl +++ b/keyboard/altgr/xipa.eng.inc.pl @@ -320,7 +320,7 @@ my %rows = ( 'An input to type phonetic (IPA) unicode', 'characters, available Xorg map trans.', 'Designed separately from the more well-known SIL', - 'or UCL implementations.', + 'or UCL implementations.', ), description => [ "Table of an Xorg keyboard for transcribing", -- 2.30.0 From 7c3505283729953254055925ce997eda7789570b Mon Sep 17 00:00:00 2001 From: Mischa POSLAWSKY Date: Sat, 27 Apr 2024 17:50:08 +0200 Subject: [PATCH 10/16] keyboard/altgr: c64 layout of petscii graphics Based on tables and c64 (ish) positions for modern keyboard compatibility. --- keyboard/altgr/c64.eng.inc.pl | 133 ++++++++++++++++++++++++++++ keyboard/altgr/index.inc.pl | 2 +- keyboard/altgr/msx-graph.eng.inc.pl | 4 +- keyboard/altgr/unigraph.eng.inc.pl | 2 +- unicode-table.inc.pl | 3 +- 5 files changed, 140 insertions(+), 4 deletions(-) create mode 100644 keyboard/altgr/c64.eng.inc.pl diff --git a/keyboard/altgr/c64.eng.inc.pl b/keyboard/altgr/c64.eng.inc.pl new file mode 100644 index 0000000..47112e1 --- /dev/null +++ b/keyboard/altgr/c64.eng.inc.pl @@ -0,0 +1,133 @@ +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 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/index.inc.pl b/keyboard/altgr/index.inc.pl index d6ddd1d..30b6381 100644 --- a/keyboard/altgr/index.inc.pl +++ b/keyboard/altgr/index.inc.pl @@ -8,7 +8,7 @@ my %cat = ( latin => [qw( ipa-ucl olpc boyeg drix )], science => [qw( symbolics apl spacecadet )], graph => [qw( unigraph emojiworks )], - extra => [qw( msx-graph p8scii zoo )], + extra => [qw( msx-graph c64 p8scii zoo )], ); for my $name (map {@{$_}} values %cat) { diff --git a/keyboard/altgr/msx-graph.eng.inc.pl b/keyboard/altgr/msx-graph.eng.inc.pl index 1b79678..72a999b 100644 --- a/keyboard/altgr/msx-graph.eng.inc.pl +++ b/keyboard/altgr/msx-graph.eng.inc.pl @@ -140,12 +140,14 @@ $groups->{flag}{g8} = ['legacy', %{ $groups }, version => '1.0', title => 'MSX graph', - category => 'legacy/msx', + category => 'legacy/graph/msx', intro => join("\n", 'Resulting selection', 'of equivalent Unicode characters', "when the graph key is pressed on an MSX home computer", "(International model such as Toshiba HX10 or Phillips NMS 8245).", + 'Similar to PETSCII and', + 'modern Unicode.', 'See also letters and symbols', "from pressing code.", ), diff --git a/keyboard/altgr/unigraph.eng.inc.pl b/keyboard/altgr/unigraph.eng.inc.pl index c1d29cd..7c4d570 100644 --- a/keyboard/altgr/unigraph.eng.inc.pl +++ b/keyboard/altgr/unigraph.eng.inc.pl @@ -72,7 +72,7 @@ $groups->{def}{''}{')'}[0] .= ' linkkeyboard/altgr/zoo'; %{ $groups }, version => '1.2', title => 'Unicode semigraphics', - category => 'specialized', + category => 'specialized/graph', intro => join("\n", sprintf('Keyboard mode to %s draw character graphics.', 'manually', diff --git a/unicode-table.inc.pl b/unicode-table.inc.pl index d1875ef..2342d75 100644 --- a/unicode-table.inc.pl +++ b/unicode-table.inc.pl @@ -130,7 +130,8 @@ block => { shades => [qw{. ░ . ▒ . ▓ }], fill4 => [qw{. ▘ ▀ ▝ . ▌ █ ▐ . ▖ ▄ ▗ }], fill4i => [qw{. ▛ ▚ ▟ . ▙ ▞ ▜ }], - fill8 => [qw{. ▁ ▂ ▃ ▄ ▅ ▆ ▇ ▔ . ▏ ▎ ▍ ▌ ▋ ▊ ▉ ▕ }], + fill8 => [qw{. ▁ ▂ ▃ ▄ ▅ ▆ ▇ . ▏ ▎ ▍ ▌ ▋ ▊ ▉ }], + fill8r => [qw{. ▔ 🮂 🮃 ▀ 🮄 🮅 🮆 . ▕ 🮇 🮈 ▐ 🮉 🮊 🮋 }], colour => [qw{. 🟫 🟥 🟧 🟨 🟩 🟦 🟪}], }, -- 2.30.0 From ada87baf9947ff8d17f0099f29011313c7fbff34 Mon Sep 17 00:00:00 2001 From: Mischa POSLAWSKY Date: Tue, 30 Apr 2024 22:23:35 +0200 Subject: [PATCH 11/16] keyboard/altgr: atari graphics (atascii) Last of the big home computer systems with significant graphics glyphs, positioned at corresponding control codes, rarely indicated such as on this . --- keyboard/altgr/atari.eng.inc.pl | 46 +++++++++++++++++++++++++++++ keyboard/altgr/c64.eng.inc.pl | 3 +- keyboard/altgr/index.inc.pl | 2 +- keyboard/altgr/msx-graph.eng.inc.pl | 3 +- 4 files changed, 51 insertions(+), 3 deletions(-) create mode 100644 keyboard/altgr/atari.eng.inc.pl diff --git a/keyboard/altgr/atari.eng.inc.pl b/keyboard/altgr/atari.eng.inc.pl new file mode 100644 index 0000000..e6bc674 --- /dev/null +++ b/keyboard/altgr/atari.eng.inc.pl @@ -0,0 +1,46 @@ +use utf8; +use strict; +use warnings; +no warnings 'qw'; +use Shiar_Sheet::KeyboardChars 'kbchars'; + +# 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 🮂 +); + +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 index 47112e1..387b240 100644 --- a/keyboard/altgr/c64.eng.inc.pl +++ b/keyboard/altgr/c64.eng.inc.pl @@ -120,7 +120,8 @@ while (my ($k, $c) = each %rows) { 'PETSCII', 'characters designed for the 1977 PET 2001 machine', 'as found on the VIC-20 and C-64.', - 'See also MSX graph and', + 'See also MSX graph,', + 'ATASCII, and', 'modern Unicode.', ), image => 'data/keyboard/thumb/c64.jpg', diff --git a/keyboard/altgr/index.inc.pl b/keyboard/altgr/index.inc.pl index 30b6381..1f77fa7 100644 --- a/keyboard/altgr/index.inc.pl +++ b/keyboard/altgr/index.inc.pl @@ -8,7 +8,7 @@ my %cat = ( latin => [qw( ipa-ucl olpc boyeg drix )], science => [qw( symbolics apl spacecadet )], graph => [qw( unigraph emojiworks )], - extra => [qw( msx-graph c64 p8scii zoo )], + extra => [qw( msx-graph c64 atari p8scii zoo )], ); for my $name (map {@{$_}} values %cat) { diff --git a/keyboard/altgr/msx-graph.eng.inc.pl b/keyboard/altgr/msx-graph.eng.inc.pl index 72a999b..dd4a5b5 100644 --- a/keyboard/altgr/msx-graph.eng.inc.pl +++ b/keyboard/altgr/msx-graph.eng.inc.pl @@ -146,7 +146,8 @@ $groups->{flag}{g8} = ['legacy', 'of equivalent Unicode characters', "when the graph key is pressed on an MSX home computer", "(International model such as Toshiba HX10 or Phillips NMS 8245).", - 'Similar to PETSCII and', + 'Similar to PETSCII,', + 'ATASCII, and', 'modern Unicode.', 'See also letters and symbols', "from pressing code.", -- 2.30.0 From 56fda72a2e2017647b16253b8084fc9b03618f00 Mon Sep 17 00:00:00 2001 From: Mischa POSLAWSKY Date: Wed, 1 May 2024 23:54:21 +0200 Subject: [PATCH 12/16] keyboard/altgr/atari: consistent line width transcription Prefer uniform thin lines also for outer borders, despite being 2/8 pixels in the original font corresponding to quarter blocks. More historically accurate fat variants stashed under ?compat but not advertised due to missing diagonal equivalents. --- keyboard/altgr/atari.eng.inc.pl | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/keyboard/altgr/atari.eng.inc.pl b/keyboard/altgr/atari.eng.inc.pl index e6bc674..6f581f8 100644 --- a/keyboard/altgr/atari.eng.inc.pl +++ b/keyboard/altgr/atari.eng.inc.pl @@ -3,15 +3,24 @@ 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 🮂 + 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) { -- 2.30.0 From aa4e270baad2dcb970c0a89e41f3d7ac907a311b Mon Sep 17 00:00:00 2001 From: Mischa POSLAWSKY Date: Thu, 16 May 2024 22:13:45 +0200 Subject: [PATCH 13/16] keyboard/altgr: label keys in each row with big class --- Shiar_Sheet/Keyboard.pm | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/Shiar_Sheet/Keyboard.pm b/Shiar_Sheet/Keyboard.pm index 47c1cf0..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 = '3.00'; +our $VERSION = '3.01'; my @casedesc = (undef, qw/shift ctrl meta/, 'shift meta'); my @rowdesc = qw(numeric top home bottom); @@ -129,17 +129,21 @@ sub print_key { } 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'; -- 2.30.0 From c8f09cc7b705242e8ece81e1c4555bceaf95e97d Mon Sep 17 00:00:00 2001 From: Mischa POSLAWSKY Date: Mon, 20 May 2024 18:27:41 +0200 Subject: [PATCH 14/16] digraphs: link to and from altgr keyboards --- digraphs.plp | 2 +- keyboard/altgr/index.inc.plp | 4 +++- tools/mkdigraphlist | 3 ++- tools/mkdigraphs-xorg | 3 ++- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/digraphs.plp b/digraphs.plp index 9f96c50..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.4', + version => '1.5', description => $di->{description} // [ "Complete table of digraph characters from", ($di->{title} // $mode) . ".", diff --git a/keyboard/altgr/index.inc.plp b/keyboard/altgr/index.inc.plp index 67249ec..5491df8 100644 --- a/keyboard/altgr/index.inc.plp +++ b/keyboard/altgr/index.inc.plp @@ -111,7 +111,9 @@ img { :>

Extended keyboards

-

Overview of available key layouts with AltGr or similar modifier keys.

+

Overview of available key layouts with AltGr or similar modifier keys. +Also see digraphs for compose key combinations. +

<: my $idx = Data($indexfile); diff --git a/tools/mkdigraphlist b/tools/mkdigraphlist index 5117b76..4cddd41 100755 --- a/tools/mkdigraphlist +++ b/tools/mkdigraphlist @@ -53,7 +53,8 @@ print JSON->new->ascii->canonical->encode({ '^u^\ in Emacs,', '^a^v in Screen.', 'Similar but different from X.Org.', - 'Also see common Unicode.

', + 'Also see monograph maps', + 'for more specific combinations with AltGr.

', '

Unofficial proposals', 'are available as ex commands.', ), diff --git a/tools/mkdigraphs-xorg b/tools/mkdigraphs-xorg index be53fff..64c99d9 100755 --- a/tools/mkdigraphs-xorg +++ b/tools/mkdigraphs-xorg @@ -80,7 +80,8 @@ print JSON->new->canonical->indent->encode({ 'Character mnemonics following compose key ⎄:', 'in the X Window System (Shift+AltGr by default).', 'Differences from RFC-1345 are indicated.', - 'Also see common Unicode.', + 'Also see monograph maps', + 'of alternative Xorg input modes with an AltGr modifier.

', ), keywords => [qw( xorg x11 x )], flag => { -- 2.30.0 From da56f674f1b9ed64adbcae060113733b023fa5c9 Mon Sep 17 00:00:00 2001 From: Mischa POSLAWSKY Date: Tue, 21 May 2024 21:31:51 +0200 Subject: [PATCH 15/16] keyboard/altgr/index: calculate maximum inventory without names Code cleanup. --- keyboard/altgr/index.inc.plp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/keyboard/altgr/index.inc.plp b/keyboard/altgr/index.inc.plp index 5491df8..c6accc7 100644 --- a/keyboard/altgr/index.inc.plp +++ b/keyboard/altgr/index.inc.plp @@ -139,7 +139,9 @@ if (@sample) { print "$_" for @sample; say ''; } -my $most = max(map { sum values %{ $_->{inventory}{''} } } %{$idx}{@incs}); +my $most = max( + map { sum values %{$_} } map { $_->{inventory}{''} } @{$idx}{@incs} +); for my $inc (@incs) { my $table = $idx->{$inc}; print @sample ? '' : '
'; -- 2.30.0 From ffe0197700e02f9aaf7c36a377e82a2cc325db93 Mon Sep 17 00:00:00 2001 From: Mischa POSLAWSKY Date: Tue, 21 May 2024 00:45:41 +0200 Subject: [PATCH 16/16] keyboard/altgr/index: move ctrl rows to distinct inventory mode Prevent inflation of emojiworks, similar to meta rows elsewhere. --- keyboard/altgr/index.inc.pl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/keyboard/altgr/index.inc.pl b/keyboard/altgr/index.inc.pl index 1f77fa7..b864e13 100644 --- a/keyboard/altgr/index.inc.pl +++ b/keyboard/altgr/index.inc.pl @@ -18,10 +18,10 @@ for my $name (map {@{$_}} values %cat) { $row{mode} //= {'' => undef}; - if (($keys->{moderows} // '') =~ /^\d* [45] \d{2,}/x) { - # move root +meta keys to distinct mode + 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}{''}{$_} + /^[+^]./ and $keys->{def}{"\e"}{$_} = delete $keys->{def}{''}{$_} for keys %{ $keys->{def}{''} }; } -- 2.30.0