countries: reserve cq and describe user-assigned codes
[sheet.git] / tools / mkdigraphs-xorg
index be53fff65de0229be48c5796df5882c876a6c51a..ec88309500c97ddb2c714f6df6cd149baef5c9b5 100755 (executable)
@@ -4,11 +4,12 @@ use warnings;
 use utf8;
 use open IO => ':encoding(utf-8)', ':std';
 use re '/msx';
+use lib '.';
 use JSON 'decode_json';
 use Data::Dump 'pp';
 use Shiar_Sheet::FormatChar;
 
-our $VERSION = '1.01';
+our $VERSION = '1.02';
 
 my $matchvim;  # enable to prefer best compatibility
 
@@ -41,10 +42,15 @@ while ($_ = readline) {
        my ($class, $name, undef, undef, $string) = @{
                Shiar_Sheet::FormatChar->glyph_info($cp)
        };
+       my $reverse = substr($mnem, 1, 1) . substr($mnem, 0, 1);
+       my $cmp = $vidi->{key}->{$mnem};
+       my $cmpalt = defined $cmp && !$cmp && $vidi->{key}->{$reverse};
        my $comparison = (
-               !$vidi->{key}->{$mnem} ? 'l3' :  # free
-               $vidi->{key}->{$mnem}->[0] != $cp ? 'l1' :  # conflict
-               $vidi->{key}->{$mnem}->[2] eq 'l5' ? 'l5' :  # rfc
+               !$cmp ?
+                       $cmpalt && $cmpalt->[0] == $cp ? 'l4' :  # matches alias
+                       'l3' :  # free
+               $cmp->[0] != $cp ? 'l1' :  # conflict
+               $cmp->[2] eq 'l5' ? 'l5' :  # rfc
                'l4'  # any
        );
 
@@ -77,15 +83,16 @@ print JSON->new->canonical->indent->encode({
        title => 'X.Org',
        key   => \%table,
        intro => join("\n",
-               'Character mnemonics following compose key ⎄:',
+               'Character mnemonics following compose key ⎄',
                'in the X Window System (Shift+AltGr by default).',
                'Differences from <a href="/digraphs">RFC-1345</a> are indicated.',
-               'Also see <a href="/unicode">common Unicode</a>.',
+               'Also see <a href="/keyboard/altgr">monograph maps</a>',
+               'of alternative Xorg input modes with an AltGr modifier.</p>',
        ),
        keywords => [qw( xorg x11 x )],
        flag  => {
                'l5' => "matching RFC-1345",
-               'l4' => "matching Vim extension",
+               'l4' => "matching Vim extension or alternate",
                'l3' => "unique to Xorg",
                'l1' => "conflict",
                ('l0' => "Xorg preference") x !!$matchvim,