digraphs/xorg: support keysymdef aliases in compose definitions
[sheet.git] / tools / mkxkeysymdef
index e7d7690af196d30e768040053b9e614c21722030..cecf9d438059e7e93ba7384f1b57a71a5e57c199 100755 (executable)
@@ -2,19 +2,21 @@
 use 5.014;
 use warnings;
 use utf8;
-use re '/msx';
+use re '/mnsx';
 use JSON;
 
-our $VERSION = '1.00';
+our $VERSION = '1.01';
 
-my %keysym;
+my (%keysym, %keyval);
 while (readline) {
        m{
                \A  [#]define[ ]XK_ (?<name>[a-zA-Z_0-9]+)
                \h+ 0x(?<value>[0-9a-fA-F]+)
-               \h* [/][*] [\h(] U[+] (?<unicode>[0-9A-F]{4,6})
+               ( \h* [/][*] [\h(] U[+] (?<unicode>[0-9A-F]{4,6}) )?
        } or next;
-       $keysym{ $+{name} } = chr hex $+{unicode};
+       my $cp = $+{unicode} // $keyval{ $+{value} } or next;
+       $keysym{ $+{name} } = chr hex $cp;
+       $keyval{ $+{value} } = $cp;
 }
 
 print JSON->new->ascii->canonical->indent->encode(\%keysym);