X-Git-Url: http://git.shiar.nl/sheet.git/blobdiff_plain/6ae28d9dc8663b94530e172949c2071deaff1e78..df24acb03bf006c0d7ef2593a95bae41759d08a4:/tools/mkkeyboard-xkb-symbols diff --git a/tools/mkkeyboard-xkb-symbols b/tools/mkkeyboard-xkb-symbols index 8e1f9e1..5cac74d 100755 --- a/tools/mkkeyboard-xkb-symbols +++ b/tools/mkkeyboard-xkb-symbols @@ -4,10 +4,11 @@ use warnings; use utf8; use re '/msx'; use open IO => ':encoding(utf-8)', ':std'; +use charnames (); use JSON (); use Data::Dump 'pp'; -our $VERSION = '1.01'; +our $VERSION = '1.02'; my $symname = eval { open my $keysymh, '<', 'data/keysymdef.json' or die $!; @@ -31,6 +32,9 @@ while (readline) { elsif (defined $symname->{$chr}) { $chr = $symname->{$chr}; } + elsif ($chr eq 'NoSymbol') { + next; + } else { warn "unknown symbol $chr at $pos\n"; } @@ -38,7 +42,15 @@ while (readline) { #$res{$pos}[$shift] = $symname->{$chr} // $chr; # geochar } } -say pp(\%res) =~ s/(?<=") \\x \{? ([0-9A-F]{2,6}) \}?/chr hex $1/reg; +say ppp(\%res); + +sub ppp { + local $_ = pp(@_); + s/(?<=") \\x \{? ([0-9A-F]{2,6}) \}?/chr hex $1/eg; # unescape glyphs + s/(\p{Mn})/sprintf '\N{%s}', charnames::viacode(ord $1)/eg; # named accents + return $_; +} + __END__