keyboard/altgr/index: count root meta keys as distinct mode
authorMischa POSLAWSKY <perl@shiar.org>
Mon, 25 Mar 2024 03:31:22 +0000 (04:31 +0100)
committerMischa POSLAWSKY <perl@shiar.org>
Mon, 22 Apr 2024 22:53:55 +0000 (00:53 +0200)
Prevent abnormally large unigraph character numbers in comparison graph
due to overcomplete 3rd-4th rows.

keyboard/altgr/index.inc.pl

index 30783f7e3695c80b0fc2310ae52dfbf5ccfb47ce..2308e146248a2c61b3b284d6606dc5549b7549f4 100644 (file)
@@ -16,6 +16,14 @@ for my $name (map {@{$_}} values %cat) {
        $cat{$name} = \%row;
 
        $keys->{mode} //= {'' => undef};
+
+       if ($keys->{def}{''}{'+a'}) {
+               # move root +meta keys to distinct mode
+               $keys->{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 || ();
                $row{inventory}{$mode}{$_}++ for grep { /^g[2-9]/ } map { s/ (?!ext).*//r } map {$_->[0]}