From 23f7b10a8432caad3dc2e5ea875dd76757d2bea4 Mon Sep 17 00:00:00 2001 From: Mischa POSLAWSKY Date: Sun, 31 Dec 2023 03:47:15 +0100 Subject: [PATCH] keyboard/altgr: proper function to convert char maps Code cleanup. --- keyboard/altgr/apl.eng.inc.pl | 5 +++-- keyboard/altgr/eurkey.eng.inc.pl | 5 +++-- keyboard/altgr/groups.inc.pl | 22 +++++++++++++--------- keyboard/altgr/macos-abc.eng.inc.pl | 6 ++++-- keyboard/altgr/macos.eng.inc.pl | 6 ++++-- keyboard/altgr/msx.eng.inc.pl | 6 ++++-- keyboard/altgr/spacecadet.eng.inc.pl | 6 ++++-- keyboard/altgr/ukext.eng.inc.pl | 6 ++++-- keyboard/altgr/windows.eng.inc.pl | 5 +++-- 9 files changed, 42 insertions(+), 25 deletions(-) diff --git a/keyboard/altgr/apl.eng.inc.pl b/keyboard/altgr/apl.eng.inc.pl index a245996..45acbd5 100644 --- a/keyboard/altgr/apl.eng.inc.pl +++ b/keyboard/altgr/apl.eng.inc.pl @@ -1,6 +1,7 @@ use utf8; use strict; use warnings; +do './keyboard/altgr/groups.inc.pl'; my %dyalogx = ( 'Q' => '⍰', @@ -10,7 +11,7 @@ my %dyalogx = ( 'N' => '⍡', 'M' => '∥', ); -our %rows = ( +my %rows = ( '~' => '⌺', '!' => '⌶', '@' => '⍫', @@ -91,7 +92,7 @@ our %rows = ( %dyalogx, ); -my $groups = do 'keyboard/altgr/groups.inc.pl'; +my $groups = kbchars(\%rows); $groups->{def}{''}{$_} = 'g4' for split //,'weEriIoOa/*'; # lookalikes $groups->{def}{''}{$_} .= ' ext' for keys %dyalogx; $groups->{flag}{ext} = ['extended', 'optional operators not available in all variants']; diff --git a/keyboard/altgr/eurkey.eng.inc.pl b/keyboard/altgr/eurkey.eng.inc.pl index cc820e7..b2a98cb 100644 --- a/keyboard/altgr/eurkey.eng.inc.pl +++ b/keyboard/altgr/eurkey.eng.inc.pl @@ -1,6 +1,7 @@ use utf8; use strict; use warnings; +do './keyboard/altgr/groups.inc.pl'; my $V = v1.3; @@ -26,7 +27,7 @@ my %arrows = ( '+' => '⇔', ); -our %rows = ( +my %rows = ( '1' => '¡', '!' => '¹', '2' => 'ª', @@ -265,7 +266,7 @@ our %rows = ( (map { ($presymbol.$_ => $arrows{$_}) } keys %arrows), ); -my $groups = do 'keyboard/altgr/groups.inc.pl'; +my $groups = kbchars(\%rows); $groups->{mode} = { '' => 'option-shifted ⌥', 'm' => 'Ω greek prefix ⌥m', diff --git a/keyboard/altgr/groups.inc.pl b/keyboard/altgr/groups.inc.pl index 363ea03..2968e4b 100644 --- a/keyboard/altgr/groups.inc.pl +++ b/keyboard/altgr/groups.inc.pl @@ -1,19 +1,20 @@ -use strict; +use 5.020; use warnings; +use experimental 'signatures'; use Unicode::Normalize qw( NFKD ); use Text::Unidecode qw( unidecode ); use Shiar_Sheet::FormatChar; -our %rows; - my $uc = Shiar_Sheet::FormatChar->new; -my %g; # present group classes -{ + +sub kbchars ($rows) { + my %g; # present group classes + return { rows => [1, 0], def => { '' => { map { - my $v = $rows{$_}; + my $v = $rows->{$_}; my $class = 'g'.( !defined $v || $_ eq $v ? 1 # identical : $v =~ /\A\p{Mn}+\z/ ? 9 # combining accent @@ -26,14 +27,14 @@ my %g; # present group classes ); $g{$class} = 1; $_ => $class - } keys %rows + } keys %{$rows} }, }, key => { map { - my ($glyph, $title) = $uc->glyph_html($rows{$_}); + my ($glyph, $title) = $uc->glyph_html($rows->{$_}); $_ => join "\n", $glyph, $title - } keys %rows + } keys %{$rows} }, flag => {%{{ g2 => ['accented', "decomposes to the original letter with a combining accent"], @@ -44,4 +45,7 @@ my %g; # present group classes g8 => ['mark', "modifier letter or mark (spacing diacritic)"], g9 => ['combining', "diacritical mark to be combined with a following character"], }}{keys %g}}, + }; } + +1; diff --git a/keyboard/altgr/macos-abc.eng.inc.pl b/keyboard/altgr/macos-abc.eng.inc.pl index 18c7bed..f4a4a00 100644 --- a/keyboard/altgr/macos-abc.eng.inc.pl +++ b/keyboard/altgr/macos-abc.eng.inc.pl @@ -1,7 +1,9 @@ use utf8; use strict; use warnings; -our %rows = ( +do './keyboard/altgr/groups.inc.pl'; + +my %rows = ( 'A' => "\N{MACRON}", 'a' => "\N{COMBINING MACRON}", 'B' => "\N{BREVE}", @@ -181,7 +183,7 @@ our %rows = ( '>b' => 'ɓ', ); -my $groups = do './keyboard/altgr/groups.inc.pl'; +my $groups = kbchars(\%rows); $groups->{mode} = { '' => 'option-shifted ⌥', ':' => '№ number prefix ⌥:', diff --git a/keyboard/altgr/macos.eng.inc.pl b/keyboard/altgr/macos.eng.inc.pl index d7bed09..aa153ad 100644 --- a/keyboard/altgr/macos.eng.inc.pl +++ b/keyboard/altgr/macos.eng.inc.pl @@ -1,7 +1,9 @@ use utf8; use strict; use warnings; -our %rows = ( +do './keyboard/altgr/groups.inc.pl'; + +my %rows = ( 'A' => 'Å', 'a' => 'å', 'B' => 'ı', @@ -99,7 +101,7 @@ our %rows = ( ); +{ - %{ do 'keyboard/altgr/groups.inc.pl' }, + %{ kbchars(\%rows) }, version => '1.3', title => 'US option', intro => join("\n", diff --git a/keyboard/altgr/msx.eng.inc.pl b/keyboard/altgr/msx.eng.inc.pl index 6ea44e2..08d961b 100644 --- a/keyboard/altgr/msx.eng.inc.pl +++ b/keyboard/altgr/msx.eng.inc.pl @@ -1,7 +1,9 @@ use utf8; use strict; use warnings; -our %rows = ( +do './keyboard/altgr/groups.inc.pl'; + +my %rows = ( '!' => '¡', '1' => 'ƒ', '@' => '₧', @@ -80,7 +82,7 @@ our %rows = ( ); +{ - %{ do 'keyboard/altgr/groups.inc.pl' }, + %{ kbchars(\%rows) }, version => '1.0', title => 'msx code', intro => join("\n", diff --git a/keyboard/altgr/spacecadet.eng.inc.pl b/keyboard/altgr/spacecadet.eng.inc.pl index cc6915d..d2e1eae 100644 --- a/keyboard/altgr/spacecadet.eng.inc.pl +++ b/keyboard/altgr/spacecadet.eng.inc.pl @@ -1,7 +1,9 @@ use utf8; use strict; use warnings; -our %rows = ( +do './keyboard/altgr/groups.inc.pl'; + +my %rows = ( 'q' => '∧', 'w' => '∨', 'e' => '∩', @@ -88,7 +90,7 @@ our %rows = ( ); +{ - %{ do 'keyboard/altgr/groups.inc.pl' }, + %{ kbchars(\%rows) }, version => '1.0', title => 'Space Cadet', intro => join("\n", diff --git a/keyboard/altgr/ukext.eng.inc.pl b/keyboard/altgr/ukext.eng.inc.pl index affecaf..bfc995e 100644 --- a/keyboard/altgr/ukext.eng.inc.pl +++ b/keyboard/altgr/ukext.eng.inc.pl @@ -1,7 +1,9 @@ use utf8; use strict; use warnings; -our %rows = ( +do './keyboard/altgr/groups.inc.pl'; + +my %rows = ( '~' => '¦', '!' => '¡', '1' => '¹', @@ -100,7 +102,7 @@ $rows{'['} = $rows{'2'}; $rows{']'} = $rows{'#'}; +{ - %{ do 'keyboard/altgr/groups.inc.pl' }, + %{ kbchars(\%rows) }, title => 'UK-extended', version => '1.0', intro => join("\n", diff --git a/keyboard/altgr/windows.eng.inc.pl b/keyboard/altgr/windows.eng.inc.pl index f110c86..d575e81 100644 --- a/keyboard/altgr/windows.eng.inc.pl +++ b/keyboard/altgr/windows.eng.inc.pl @@ -1,6 +1,7 @@ use utf8; use strict; use warnings; +do './keyboard/altgr/groups.inc.pl'; my @az = ('A'..'Z', 'a'..'z'); my @letters = qw( @@ -21,7 +22,7 @@ my %xkb = ( '?' => "\N{COMBINING HOOK ABOVE}", ); -our %rows = ( +my %rows = ( '~' => "\N{COMBINING TILDE}", '`' => "\N{COMBINING GRAVE ACCENT}", '!' => '¹', @@ -60,7 +61,7 @@ our %rows = ( } 0 .. $#az ); -my $groups = do './keyboard/altgr/groups.inc.pl'; +my $groups = kbchars(\%rows); $groups->{def}{''}{$_} .= ' ext' for keys %xkb; $groups->{flag}{ext} = ['xkb', 'unofficial extensions added in Linux (Gnome, KDE)']; -- 2.30.0